You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by gi...@apache.org on 2026/01/30 07:07:05 UTC

(pinot-site) branch new-static-prod updated: Update Pinot Site from dev branch 157e9b63022b40761ff1259c86027c1a3ed86914

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch new-static-prod
in repository https://gitbox.apache.org/repos/asf/pinot-site.git


The following commit(s) were added to refs/heads/new-static-prod by this push:
     new 13010573 Update Pinot Site from dev branch 157e9b63022b40761ff1259c86027c1a3ed86914
13010573 is described below

commit 130105731c6f4c2bb5c0c5f2dd13d4409240bbd2
Author: Pinot Site Updater <de...@pinot.apache.org>
AuthorDate: Fri Jan 30 07:06:59 2026 +0000

    Update Pinot Site from dev branch 157e9b63022b40761ff1259c86027c1a3ed86914
    
    commit 157e9b63022b40761ff1259c86027c1a3ed86914
    Author: James Dilworth <gi...@jamesdilworth.com>
    Date:   Thu Jan 29 23:05:13 2026 -0800
    
        fixed broken images across various older blog posts (#155)
    
        Co-authored-by: James Dilworth <in...@dilworth.org>
    
    commit 48e871ed1de67422a9da221c3978f661f2338f23
    Author: Xiang Fu <xi...@startree.ai>
    Date:   Fri Jan 9 02:46:31 2026 -0800
    
        Gate YouTube embeds and fix build
---
 404.html                                                 |  2 +-
 404/index.html                                           |  2 +-
 _next/static/chunks/app/page-dbcdd45a2d5cc1ca.js         |  1 +
 _next/static/yITiFmChU-QAwLA40SGGV/_buildManifest.js     |  1 +
 _next/static/yITiFmChU-QAwLA40SGGV/_ssgManifest.js       |  1 +
 about/index.html                                         |  2 +-
 about/index.txt                                          |  2 +-
 blog/2015/05/16/LinkedIn-Scaling/index.html              |  2 +-
 blog/2015/05/16/LinkedIn-Scaling/index.txt               |  2 +-
 blog/2015/06/10/Open-Sourcing-Pinot/index.html           |  2 +-
 blog/2015/06/10/Open-Sourcing-Pinot/index.txt            |  2 +-
 blog/2017/09/17/Restaurant-Manager/index.html            |  2 +-
 blog/2017/09/17/Restaurant-Manager/index.txt             |  2 +-
 blog/2019/01/09/LinkedIn-IntroThirdEye/index.html        |  2 +-
 blog/2019/01/09/LinkedIn-IntroThirdEye/index.txt         |  2 +-
 blog/2019/06/14/LinkedIn-StarTree/index.html             |  2 +-
 blog/2019/06/14/LinkedIn-StarTree/index.txt              |  2 +-
 blog/2019/07/11/LinkedIn-AutoTune/index.html             |  2 +-
 blog/2019/07/11/LinkedIn-AutoTune/index.txt              |  2 +-
 blog/2020/01/15/Pinot-Presto-SQL/index.html              |  2 +-
 blog/2020/01/15/Pinot-Presto-SQL/index.txt               |  2 +-
 blog/2020/02/20/LinkedIn-Thirdeye/index.html             |  2 +-
 blog/2020/02/20/LinkedIn-Thirdeye/index.txt              |  2 +-
 blog/2020/04/10/DevBlog-AnalyzeGitEvents/index.html      |  2 +-
 blog/2020/04/10/DevBlog-AnalyzeGitEvents/index.txt       |  2 +-
 blog/2020/06/25/LinkedIn-SmartAlerts/index.html          |  2 +-
 blog/2020/06/25/LinkedIn-SmartAlerts/index.txt           |  2 +-
 blog/2020/06/29/LinkedIn-TalentInsight/index.html        |  2 +-
 blog/2020/06/29/LinkedIn-TalentInsight/index.txt         |  2 +-
 blog/2020/07/14/LinkedIn-BatchRealtime/index.html        |  2 +-
 blog/2020/07/14/LinkedIn-BatchRealtime/index.txt         |  2 +-
 blog/2020/07/28/DevBlog-AnomalyDetection/index.html      |  2 +-
 blog/2020/07/28/DevBlog-AnomalyDetection/index.txt       |  2 +-
 blog/2020/07/28/DevBlog-DevUpStack/index.html            |  2 +-
 blog/2020/07/28/DevBlog-DevUpStack/index.txt             |  2 +-
 blog/2020/08/08/DevBlog-IngestPlugins/index.html         |  2 +-
 blog/2020/08/08/DevBlog-IngestPlugins/index.txt          |  2 +-
 blog/2020/08/08/DevBlog-PinotMonitoring/index.html       |  2 +-
 blog/2020/08/08/DevBlog-PinotMonitoring/index.txt        |  2 +-
 blog/2020/08/08/DevBlog-SLAApps/index.html               |  2 +-
 blog/2020/08/08/DevBlog-SLAApps/index.txt                |  2 +-
 blog/2020/08/08/DevBlog-ScalarUDFs/index.html            |  2 +-
 blog/2020/08/08/DevBlog-ScalarUDFs/index.txt             |  2 +-
 blog/2020/10/16/DevBlog-TwitterTrollAnalysis/index.html  |  2 +-
 blog/2020/10/16/DevBlog-TwitterTrollAnalysis/index.txt   |  2 +-
 blog/2020/10/20/Uber-Operating/index.html                |  2 +-
 blog/2020/10/20/Uber-Operating/index.txt                 |  2 +-
 blog/2020/12/01/LinkedIn-Lamda/index.html                |  2 +-
 blog/2020/12/01/LinkedIn-Lamda/index.txt                 |  2 +-
 blog/2021/01/08/DevBlog-DebeziumCDC/index.html           |  2 +-
 blog/2021/01/08/DevBlog-DebeziumCDC/index.txt            |  2 +-
 blog/2021/02/02/DevBlog-PrestoPinot/index.html           |  2 +-
 blog/2021/02/02/DevBlog-PrestoPinot/index.txt            |  2 +-
 blog/2021/04/08/DevBlog-UpsertsIntro/index.html          |  2 +-
 blog/2021/04/08/DevBlog-UpsertsIntro/index.txt           |  2 +-
 blog/2021/04/16/LinkedIn-Theta/index.html                |  2 +-
 blog/2021/04/16/LinkedIn-Theta/index.txt                 |  2 +-
 blog/2021/04/27/DevBlog-PinotInRetailChain/index.html    |  2 +-
 blog/2021/04/27/DevBlog-PinotInRetailChain/index.txt     |  2 +-
 blog/2021/04/29/Uber-Charon/index.html                   |  2 +-
 blog/2021/04/29/Uber-Charon/index.txt                    |  2 +-
 blog/2021/06/13/DevBlog-Geospatial/index.html            |  2 +-
 blog/2021/06/13/DevBlog-Geospatial/index.txt             |  2 +-
 blog/2021/06/16/LinkedIn-TextAnalytics/index.html        |  2 +-
 blog/2021/06/16/LinkedIn-TextAnalytics/index.txt         |  2 +-
 blog/2022/04/04/Announcing-Apache-Pinot-0-10/index.html  |  2 +-
 blog/2022/04/04/Announcing-Apache-Pinot-0-10/index.txt   |  2 +-
 .../index.html                                           |  8 ++++----
 .../index.txt                                            |  4 ++--
 .../08/Apache Pinot-How-do-I-see-my-indexes/index.html   |  6 +++---
 .../11/08/Apache Pinot-How-do-I-see-my-indexes/index.txt |  4 ++--
 blog/2022/11/17/Apache Pinot-Inserts-from-SQL/index.html |  8 ++++----
 blog/2022/11/17/Apache Pinot-Inserts-from-SQL/index.txt  |  4 ++--
 .../2022/11/22/Apache-Pinot-Timestamp-Indexes/index.html | 12 ++++++------
 blog/2022/11/22/Apache-Pinot-Timestamp-Indexes/index.txt |  4 ++--
 .../Apache-Pinot-Pausing-Real-Time-Ingestion/index.html  |  6 +++---
 .../Apache-Pinot-Pausing-Real-Time-Ingestion/index.txt   |  4 ++--
 .../index.html                                           |  6 +++---
 .../index.txt                                            |  4 ++--
 .../index.html                                           |  6 +++---
 .../index.txt                                            |  4 ++--
 .../30/Apache-Pinot-0-12-Consumer-Record-Lag/index.html  |  6 +++---
 .../30/Apache-Pinot-0-12-Consumer-Record-Lag/index.txt   |  4 ++--
 .../05/11/Geospatial-Indexing-in-Apache-Pinot/index.html | 10 +++++-----
 .../05/11/Geospatial-Indexing-in-Apache-Pinot/index.txt  |  4 ++--
 .../index.html                                           | 10 +++++-----
 .../index.txt                                            |  4 ++--
 .../index.html                                           | 16 ++++++++--------
 .../index.txt                                            |  4 ++--
 .../index.html                                           |  8 ++++----
 .../index.txt                                            |  4 ++--
 .../index.html                                           | 14 +++++++-------
 .../index.txt                                            |  4 ++--
 .../index.html                                           | 12 ++++++------
 .../index.txt                                            |  4 ++--
 .../index.html                                           |  4 ++--
 .../index.txt                                            |  4 ++--
 .../index.html                                           |  2 +-
 .../index.txt                                            |  2 +-
 blog/2023/09/19/Annoucing-Apache-Pinot-1-0/index.html    |  2 +-
 blog/2023/09/19/Annoucing-Apache-Pinot-1-0/index.txt     |  2 +-
 blog/2024/08/07/AWSxPinot/index.html                     |  2 +-
 blog/2024/08/07/AWSxPinot/index.txt                      |  2 +-
 .../index.html                                           |  2 +-
 .../index.txt                                            |  2 +-
 .../index.html                                           |  2 +-
 .../index.txt                                            |  2 +-
 .../12/20/apache-pinot-year-in-review-2024/index.html    |  2 +-
 .../12/20/apache-pinot-year-in-review-2024/index.txt     |  2 +-
 .../index.html                                           |  2 +-
 .../index.txt                                            |  2 +-
 blog/index.html                                          |  2 +-
 blog/index.txt                                           |  2 +-
 download/index.html                                      |  2 +-
 download/index.txt                                       |  2 +-
 index.html                                               |  4 ++--
 index.txt                                                |  4 ++--
 powered-by/index.html                                    |  2 +-
 powered-by/index.txt                                     |  2 +-
 share/index.html                                         |  2 +-
 share/index.txt                                          |  2 +-
 sitemap.xml                                              |  4 ++--
 who_uses/index.html                                      |  2 +-
 who_uses/index.txt                                       |  2 +-
 who_uses/index/index.html                                |  2 +-
 who_uses/index/index.txt                                 |  2 +-
 126 files changed, 195 insertions(+), 192 deletions(-)

diff --git a/404.html b/404.html
index c05383b4..ac05f6ff 100644
--- a/404.html
+++ b/404.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/404/index.html b/404/index.html
index c05383b4..ac05f6ff 100644
--- a/404/index.html
+++ b/404/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/_next/static/chunks/app/page-dbcdd45a2d5cc1ca.js b/_next/static/chunks/app/page-dbcdd45a2d5cc1ca.js
new file mode 100644
index 00000000..622e3f61
--- /dev/null
+++ b/_next/static/chunks/app/page-dbcdd45a2d5cc1ca.js
@@ -0,0 +1 @@
+(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{3372:function(e,n,a){Promise.resolve().then(a.bind(a,2610))},2610:function(e,n,a){"use strict";a.r(n),a.d(n,{default:function(){return V}});var t=a(7437),s=a(2914),i=a.n(s),o=a(3611),r=a(1396),c=a.n(r),l=a(6691),p=a.n(l),d=()=>(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"block sm:hidden",children:(0,t.jsx)(p(),{src:"/static/images/hero_diagram_mobile.svg",alt:"Apache Pinot",width:500,height:300,priority:!0,classNam [...]
\ No newline at end of file
diff --git a/_next/static/yITiFmChU-QAwLA40SGGV/_buildManifest.js b/_next/static/yITiFmChU-QAwLA40SGGV/_buildManifest.js
new file mode 100644
index 00000000..b7065b63
--- /dev/null
+++ b/_next/static/yITiFmChU-QAwLA40SGGV/_buildManifest.js
@@ -0,0 +1 @@
+self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-deeb844d2074b9d8.js"],sortedPages:["/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
\ No newline at end of file
diff --git a/_next/static/yITiFmChU-QAwLA40SGGV/_ssgManifest.js b/_next/static/yITiFmChU-QAwLA40SGGV/_ssgManifest.js
new file mode 100644
index 00000000..fd6e71b9
--- /dev/null
+++ b/_next/static/yITiFmChU-QAwLA40SGGV/_ssgManifest.js
@@ -0,0 +1 @@
+self.__SSG_MANIFEST=new Set(["\u002Fblog\u002F[...slug]","\u002Fwho_uses\u002F[...slug]"]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
\ No newline at end of file
diff --git a/about/index.html b/about/index.html
index 3a5caacd..55b0190c 100644
--- a/about/index.html
+++ b/about/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/about/index.txt b/about/index.txt
index c265a7ce..19db978f 100644
--- a/about/index.txt
+++ b/about/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["about",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["about",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 7:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
 8:I[5922,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],""]
diff --git a/blog/2015/05/16/LinkedIn-Scaling/index.html b/blog/2015/05/16/LinkedIn-Scaling/index.html
index 29870266..e59f523e 100644
--- a/blog/2015/05/16/LinkedIn-Scaling/index.html
+++ b/blog/2015/05/16/LinkedIn-Scaling/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2015/05/16/LinkedIn-Scaling/index.txt b/blog/2015/05/16/LinkedIn-Scaling/index.txt
index 1eec469a..6832eb2a 100644
--- a/blog/2015/05/16/LinkedIn-Scaling/index.txt
+++ b/blog/2015/05/16/LinkedIn-Scaling/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2015/05/16/LinkedIn-Scaling","c"],{"children":["__PAGE__?{\"slug\":[\"2015\",\"05\",\"16\",\"LinkedIn-Scaling\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2015/05/16/LinkedIn-Scaling","c"],{"children":["__PAGE__?{\"slug\":[\"2015\",\"05\",\"16\",\"LinkedIn-Scaling\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2015/06/10/Open-Sourcing-Pinot/index.html b/blog/2015/06/10/Open-Sourcing-Pinot/index.html
index 8ae992b9..d874bced 100644
--- a/blog/2015/06/10/Open-Sourcing-Pinot/index.html
+++ b/blog/2015/06/10/Open-Sourcing-Pinot/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2015/06/10/Open-Sourcing-Pinot/index.txt b/blog/2015/06/10/Open-Sourcing-Pinot/index.txt
index 7c7bb164..46dbbcc5 100644
--- a/blog/2015/06/10/Open-Sourcing-Pinot/index.txt
+++ b/blog/2015/06/10/Open-Sourcing-Pinot/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2015/06/10/Open-Sourcing-Pinot","c"],{"children":["__PAGE__?{\"slug\":[\"2015\",\"06\",\"10\",\"Open-Sourcing-Pinot\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]], [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2015/06/10/Open-Sourcing-Pinot","c"],{"children":["__PAGE__?{\"slug\":[\"2015\",\"06\",\"10\",\"Open-Sourcing-Pinot\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]], [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2017/09/17/Restaurant-Manager/index.html b/blog/2017/09/17/Restaurant-Manager/index.html
index 9fccc487..44f15ee5 100644
--- a/blog/2017/09/17/Restaurant-Manager/index.html
+++ b/blog/2017/09/17/Restaurant-Manager/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2017/09/17/Restaurant-Manager/index.txt b/blog/2017/09/17/Restaurant-Manager/index.txt
index b6cb849c..567889c0 100644
--- a/blog/2017/09/17/Restaurant-Manager/index.txt
+++ b/blog/2017/09/17/Restaurant-Manager/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2017/09/17/Restaurant-Manager","c"],{"children":["__PAGE__?{\"slug\":[\"2017\",\"09\",\"17\",\"Restaurant-Manager\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2017/09/17/Restaurant-Manager","c"],{"children":["__PAGE__?{\"slug\":[\"2017\",\"09\",\"17\",\"Restaurant-Manager\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2019/01/09/LinkedIn-IntroThirdEye/index.html b/blog/2019/01/09/LinkedIn-IntroThirdEye/index.html
index cf28cd25..22e05b62 100644
--- a/blog/2019/01/09/LinkedIn-IntroThirdEye/index.html
+++ b/blog/2019/01/09/LinkedIn-IntroThirdEye/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2019/01/09/LinkedIn-IntroThirdEye/index.txt b/blog/2019/01/09/LinkedIn-IntroThirdEye/index.txt
index 62047c54..43db5014 100644
--- a/blog/2019/01/09/LinkedIn-IntroThirdEye/index.txt
+++ b/blog/2019/01/09/LinkedIn-IntroThirdEye/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2019/01/09/LinkedIn-IntroThirdEye","c"],{"children":["__PAGE__?{\"slug\":[\"2019\",\"01\",\"09\",\"LinkedIn-IntroThirdEye\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin": [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2019/01/09/LinkedIn-IntroThirdEye","c"],{"children":["__PAGE__?{\"slug\":[\"2019\",\"01\",\"09\",\"LinkedIn-IntroThirdEye\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin": [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2019/06/14/LinkedIn-StarTree/index.html b/blog/2019/06/14/LinkedIn-StarTree/index.html
index d1af4fa7..dc274b28 100644
--- a/blog/2019/06/14/LinkedIn-StarTree/index.html
+++ b/blog/2019/06/14/LinkedIn-StarTree/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2019/06/14/LinkedIn-StarTree/index.txt b/blog/2019/06/14/LinkedIn-StarTree/index.txt
index f15deb14..7dd7e2e4 100644
--- a/blog/2019/06/14/LinkedIn-StarTree/index.txt
+++ b/blog/2019/06/14/LinkedIn-StarTree/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2019/06/14/LinkedIn-StarTree","c"],{"children":["__PAGE__?{\"slug\":[\"2019\",\"06\",\"14\",\"LinkedIn-StarTree\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2019/06/14/LinkedIn-StarTree","c"],{"children":["__PAGE__?{\"slug\":[\"2019\",\"06\",\"14\",\"LinkedIn-StarTree\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2019/07/11/LinkedIn-AutoTune/index.html b/blog/2019/07/11/LinkedIn-AutoTune/index.html
index bea3cc1f..c812b317 100644
--- a/blog/2019/07/11/LinkedIn-AutoTune/index.html
+++ b/blog/2019/07/11/LinkedIn-AutoTune/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2019/07/11/LinkedIn-AutoTune/index.txt b/blog/2019/07/11/LinkedIn-AutoTune/index.txt
index 2b71b44b..0ee867a0 100644
--- a/blog/2019/07/11/LinkedIn-AutoTune/index.txt
+++ b/blog/2019/07/11/LinkedIn-AutoTune/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2019/07/11/LinkedIn-AutoTune","c"],{"children":["__PAGE__?{\"slug\":[\"2019\",\"07\",\"11\",\"LinkedIn-AutoTune\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2019/07/11/LinkedIn-AutoTune","c"],{"children":["__PAGE__?{\"slug\":[\"2019\",\"07\",\"11\",\"LinkedIn-AutoTune\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/01/15/Pinot-Presto-SQL/index.html b/blog/2020/01/15/Pinot-Presto-SQL/index.html
index e2267c9e..88fcbd2b 100644
--- a/blog/2020/01/15/Pinot-Presto-SQL/index.html
+++ b/blog/2020/01/15/Pinot-Presto-SQL/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/01/15/Pinot-Presto-SQL/index.txt b/blog/2020/01/15/Pinot-Presto-SQL/index.txt
index 1e3f0b2e..5a28ecdf 100644
--- a/blog/2020/01/15/Pinot-Presto-SQL/index.txt
+++ b/blog/2020/01/15/Pinot-Presto-SQL/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/01/15/Pinot-Presto-SQL","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"01\",\"15\",\"Pinot-Presto-SQL\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/01/15/Pinot-Presto-SQL","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"01\",\"15\",\"Pinot-Presto-SQL\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/02/20/LinkedIn-Thirdeye/index.html b/blog/2020/02/20/LinkedIn-Thirdeye/index.html
index 8c94bdd3..12b56663 100644
--- a/blog/2020/02/20/LinkedIn-Thirdeye/index.html
+++ b/blog/2020/02/20/LinkedIn-Thirdeye/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/02/20/LinkedIn-Thirdeye/index.txt b/blog/2020/02/20/LinkedIn-Thirdeye/index.txt
index a04e1b15..7eec4a32 100644
--- a/blog/2020/02/20/LinkedIn-Thirdeye/index.txt
+++ b/blog/2020/02/20/LinkedIn-Thirdeye/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/02/20/LinkedIn-Thirdeye","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"02\",\"20\",\"LinkedIn-Thirdeye\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/02/20/LinkedIn-Thirdeye","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"02\",\"20\",\"LinkedIn-Thirdeye\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/04/10/DevBlog-AnalyzeGitEvents/index.html b/blog/2020/04/10/DevBlog-AnalyzeGitEvents/index.html
index 45397543..b9cd2d07 100644
--- a/blog/2020/04/10/DevBlog-AnalyzeGitEvents/index.html
+++ b/blog/2020/04/10/DevBlog-AnalyzeGitEvents/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/04/10/DevBlog-AnalyzeGitEvents/index.txt b/blog/2020/04/10/DevBlog-AnalyzeGitEvents/index.txt
index 891b6bcb..139eeb27 100644
--- a/blog/2020/04/10/DevBlog-AnalyzeGitEvents/index.txt
+++ b/blog/2020/04/10/DevBlog-AnalyzeGitEvents/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/04/10/DevBlog-AnalyzeGitEvents","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"04\",\"10\",\"DevBlog-AnalyzeGitEvents\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrig [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/04/10/DevBlog-AnalyzeGitEvents","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"04\",\"10\",\"DevBlog-AnalyzeGitEvents\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrig [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/06/25/LinkedIn-SmartAlerts/index.html b/blog/2020/06/25/LinkedIn-SmartAlerts/index.html
index 22313fa7..33de429c 100644
--- a/blog/2020/06/25/LinkedIn-SmartAlerts/index.html
+++ b/blog/2020/06/25/LinkedIn-SmartAlerts/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/06/25/LinkedIn-SmartAlerts/index.txt b/blog/2020/06/25/LinkedIn-SmartAlerts/index.txt
index 1f0c6ba2..86d47ce1 100644
--- a/blog/2020/06/25/LinkedIn-SmartAlerts/index.txt
+++ b/blog/2020/06/25/LinkedIn-SmartAlerts/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/06/25/LinkedIn-SmartAlerts","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"06\",\"25\",\"LinkedIn-SmartAlerts\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}] [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/06/25/LinkedIn-SmartAlerts","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"06\",\"25\",\"LinkedIn-SmartAlerts\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}] [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/06/29/LinkedIn-TalentInsight/index.html b/blog/2020/06/29/LinkedIn-TalentInsight/index.html
index 1c823546..dbed5f27 100644
--- a/blog/2020/06/29/LinkedIn-TalentInsight/index.html
+++ b/blog/2020/06/29/LinkedIn-TalentInsight/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/06/29/LinkedIn-TalentInsight/index.txt b/blog/2020/06/29/LinkedIn-TalentInsight/index.txt
index 09ba59b5..1320569d 100644
--- a/blog/2020/06/29/LinkedIn-TalentInsight/index.txt
+++ b/blog/2020/06/29/LinkedIn-TalentInsight/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/06/29/LinkedIn-TalentInsight","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"06\",\"29\",\"LinkedIn-TalentInsight\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin": [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/06/29/LinkedIn-TalentInsight","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"06\",\"29\",\"LinkedIn-TalentInsight\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin": [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/07/14/LinkedIn-BatchRealtime/index.html b/blog/2020/07/14/LinkedIn-BatchRealtime/index.html
index 0bacdacb..88961f03 100644
--- a/blog/2020/07/14/LinkedIn-BatchRealtime/index.html
+++ b/blog/2020/07/14/LinkedIn-BatchRealtime/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/07/14/LinkedIn-BatchRealtime/index.txt b/blog/2020/07/14/LinkedIn-BatchRealtime/index.txt
index ef243882..44870fb2 100644
--- a/blog/2020/07/14/LinkedIn-BatchRealtime/index.txt
+++ b/blog/2020/07/14/LinkedIn-BatchRealtime/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/07/14/LinkedIn-BatchRealtime","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"07\",\"14\",\"LinkedIn-BatchRealtime\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin": [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/07/14/LinkedIn-BatchRealtime","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"07\",\"14\",\"LinkedIn-BatchRealtime\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin": [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/07/28/DevBlog-AnomalyDetection/index.html b/blog/2020/07/28/DevBlog-AnomalyDetection/index.html
index 601466e8..d3d30af7 100644
--- a/blog/2020/07/28/DevBlog-AnomalyDetection/index.html
+++ b/blog/2020/07/28/DevBlog-AnomalyDetection/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/07/28/DevBlog-AnomalyDetection/index.txt b/blog/2020/07/28/DevBlog-AnomalyDetection/index.txt
index cf52ef4e..890feddd 100644
--- a/blog/2020/07/28/DevBlog-AnomalyDetection/index.txt
+++ b/blog/2020/07/28/DevBlog-AnomalyDetection/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/07/28/DevBlog-AnomalyDetection","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"07\",\"28\",\"DevBlog-AnomalyDetection\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrig [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/07/28/DevBlog-AnomalyDetection","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"07\",\"28\",\"DevBlog-AnomalyDetection\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrig [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/07/28/DevBlog-DevUpStack/index.html b/blog/2020/07/28/DevBlog-DevUpStack/index.html
index 0ff2b35e..ddf10f77 100644
--- a/blog/2020/07/28/DevBlog-DevUpStack/index.html
+++ b/blog/2020/07/28/DevBlog-DevUpStack/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/07/28/DevBlog-DevUpStack/index.txt b/blog/2020/07/28/DevBlog-DevUpStack/index.txt
index cea99f77..ee6532d9 100644
--- a/blog/2020/07/28/DevBlog-DevUpStack/index.txt
+++ b/blog/2020/07/28/DevBlog-DevUpStack/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/07/28/DevBlog-DevUpStack","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"07\",\"28\",\"DevBlog-DevUpStack\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/07/28/DevBlog-DevUpStack","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"07\",\"28\",\"DevBlog-DevUpStack\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/08/08/DevBlog-IngestPlugins/index.html b/blog/2020/08/08/DevBlog-IngestPlugins/index.html
index 613ff4e7..7d751a4a 100644
--- a/blog/2020/08/08/DevBlog-IngestPlugins/index.html
+++ b/blog/2020/08/08/DevBlog-IngestPlugins/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/08/08/DevBlog-IngestPlugins/index.txt b/blog/2020/08/08/DevBlog-IngestPlugins/index.txt
index 3e312993..ae080028 100644
--- a/blog/2020/08/08/DevBlog-IngestPlugins/index.txt
+++ b/blog/2020/08/08/DevBlog-IngestPlugins/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/08/08/DevBlog-IngestPlugins","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"08\",\"08\",\"DevBlog-IngestPlugins\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":"" [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/08/08/DevBlog-IngestPlugins","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"08\",\"08\",\"DevBlog-IngestPlugins\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":"" [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/08/08/DevBlog-PinotMonitoring/index.html b/blog/2020/08/08/DevBlog-PinotMonitoring/index.html
index 61cf06d1..543128a6 100644
--- a/blog/2020/08/08/DevBlog-PinotMonitoring/index.html
+++ b/blog/2020/08/08/DevBlog-PinotMonitoring/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/08/08/DevBlog-PinotMonitoring/index.txt b/blog/2020/08/08/DevBlog-PinotMonitoring/index.txt
index c469bc91..c54bbd80 100644
--- a/blog/2020/08/08/DevBlog-PinotMonitoring/index.txt
+++ b/blog/2020/08/08/DevBlog-PinotMonitoring/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/08/08/DevBlog-PinotMonitoring","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"08\",\"08\",\"DevBlog-PinotMonitoring\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/08/08/DevBlog-PinotMonitoring","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"08\",\"08\",\"DevBlog-PinotMonitoring\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/08/08/DevBlog-SLAApps/index.html b/blog/2020/08/08/DevBlog-SLAApps/index.html
index 85bfa842..d31bf3ba 100644
--- a/blog/2020/08/08/DevBlog-SLAApps/index.html
+++ b/blog/2020/08/08/DevBlog-SLAApps/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/08/08/DevBlog-SLAApps/index.txt b/blog/2020/08/08/DevBlog-SLAApps/index.txt
index b3bb7a09..370752cb 100644
--- a/blog/2020/08/08/DevBlog-SLAApps/index.txt
+++ b/blog/2020/08/08/DevBlog-SLAApps/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/08/08/DevBlog-SLAApps","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"08\",\"08\",\"DevBlog-SLAApps\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/08/08/DevBlog-SLAApps","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"08\",\"08\",\"DevBlog-SLAApps\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/08/08/DevBlog-ScalarUDFs/index.html b/blog/2020/08/08/DevBlog-ScalarUDFs/index.html
index ba3d08f5..51bdd097 100644
--- a/blog/2020/08/08/DevBlog-ScalarUDFs/index.html
+++ b/blog/2020/08/08/DevBlog-ScalarUDFs/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/08/08/DevBlog-ScalarUDFs/index.txt b/blog/2020/08/08/DevBlog-ScalarUDFs/index.txt
index dd02caf3..28380bf8 100644
--- a/blog/2020/08/08/DevBlog-ScalarUDFs/index.txt
+++ b/blog/2020/08/08/DevBlog-ScalarUDFs/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/08/08/DevBlog-ScalarUDFs","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"08\",\"08\",\"DevBlog-ScalarUDFs\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/08/08/DevBlog-ScalarUDFs","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"08\",\"08\",\"DevBlog-ScalarUDFs\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/10/16/DevBlog-TwitterTrollAnalysis/index.html b/blog/2020/10/16/DevBlog-TwitterTrollAnalysis/index.html
index 84f876f1..e96e3e75 100644
--- a/blog/2020/10/16/DevBlog-TwitterTrollAnalysis/index.html
+++ b/blog/2020/10/16/DevBlog-TwitterTrollAnalysis/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/10/16/DevBlog-TwitterTrollAnalysis/index.txt b/blog/2020/10/16/DevBlog-TwitterTrollAnalysis/index.txt
index 6831d6ba..2209c78b 100644
--- a/blog/2020/10/16/DevBlog-TwitterTrollAnalysis/index.txt
+++ b/blog/2020/10/16/DevBlog-TwitterTrollAnalysis/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/10/16/DevBlog-TwitterTrollAnalysis","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"10\",\"16\",\"DevBlog-TwitterTrollAnalysis\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","c [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/10/16/DevBlog-TwitterTrollAnalysis","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"10\",\"16\",\"DevBlog-TwitterTrollAnalysis\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","c [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/10/20/Uber-Operating/index.html b/blog/2020/10/20/Uber-Operating/index.html
index 59a9f10d..802d649c 100644
--- a/blog/2020/10/20/Uber-Operating/index.html
+++ b/blog/2020/10/20/Uber-Operating/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/10/20/Uber-Operating/index.txt b/blog/2020/10/20/Uber-Operating/index.txt
index 46ca80d9..90d58c3f 100644
--- a/blog/2020/10/20/Uber-Operating/index.txt
+++ b/blog/2020/10/20/Uber-Operating/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/10/20/Uber-Operating","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"10\",\"20\",\"Uber-Operating\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/10/20/Uber-Operating","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"10\",\"20\",\"Uber-Operating\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2020/12/01/LinkedIn-Lamda/index.html b/blog/2020/12/01/LinkedIn-Lamda/index.html
index 789af44d..c64cf5d5 100644
--- a/blog/2020/12/01/LinkedIn-Lamda/index.html
+++ b/blog/2020/12/01/LinkedIn-Lamda/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2020/12/01/LinkedIn-Lamda/index.txt b/blog/2020/12/01/LinkedIn-Lamda/index.txt
index ac46b43f..39c53e27 100644
--- a/blog/2020/12/01/LinkedIn-Lamda/index.txt
+++ b/blog/2020/12/01/LinkedIn-Lamda/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2020/12/01/LinkedIn-Lamda","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"12\",\"01\",\"LinkedIn-Lamda\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2020/12/01/LinkedIn-Lamda","c"],{"children":["__PAGE__?{\"slug\":[\"2020\",\"12\",\"01\",\"LinkedIn-Lamda\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2021/01/08/DevBlog-DebeziumCDC/index.html b/blog/2021/01/08/DevBlog-DebeziumCDC/index.html
index b6c4d14d..9ae00574 100644
--- a/blog/2021/01/08/DevBlog-DebeziumCDC/index.html
+++ b/blog/2021/01/08/DevBlog-DebeziumCDC/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2021/01/08/DevBlog-DebeziumCDC/index.txt b/blog/2021/01/08/DevBlog-DebeziumCDC/index.txt
index 3f670857..2302cf64 100644
--- a/blog/2021/01/08/DevBlog-DebeziumCDC/index.txt
+++ b/blog/2021/01/08/DevBlog-DebeziumCDC/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2021/01/08/DevBlog-DebeziumCDC","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"01\",\"08\",\"DevBlog-DebeziumCDC\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]], [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2021/01/08/DevBlog-DebeziumCDC","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"01\",\"08\",\"DevBlog-DebeziumCDC\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]], [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2021/02/02/DevBlog-PrestoPinot/index.html b/blog/2021/02/02/DevBlog-PrestoPinot/index.html
index ba50d877..599402fb 100644
--- a/blog/2021/02/02/DevBlog-PrestoPinot/index.html
+++ b/blog/2021/02/02/DevBlog-PrestoPinot/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2021/02/02/DevBlog-PrestoPinot/index.txt b/blog/2021/02/02/DevBlog-PrestoPinot/index.txt
index ea708c5b..727ff73c 100644
--- a/blog/2021/02/02/DevBlog-PrestoPinot/index.txt
+++ b/blog/2021/02/02/DevBlog-PrestoPinot/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2021/02/02/DevBlog-PrestoPinot","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"02\",\"02\",\"DevBlog-PrestoPinot\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]], [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2021/02/02/DevBlog-PrestoPinot","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"02\",\"02\",\"DevBlog-PrestoPinot\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]], [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2021/04/08/DevBlog-UpsertsIntro/index.html b/blog/2021/04/08/DevBlog-UpsertsIntro/index.html
index 286f9978..f0651d4d 100644
--- a/blog/2021/04/08/DevBlog-UpsertsIntro/index.html
+++ b/blog/2021/04/08/DevBlog-UpsertsIntro/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2021/04/08/DevBlog-UpsertsIntro/index.txt b/blog/2021/04/08/DevBlog-UpsertsIntro/index.txt
index 220af8d5..354b1617 100644
--- a/blog/2021/04/08/DevBlog-UpsertsIntro/index.txt
+++ b/blog/2021/04/08/DevBlog-UpsertsIntro/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2021/04/08/DevBlog-UpsertsIntro","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"04\",\"08\",\"DevBlog-UpsertsIntro\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}] [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2021/04/08/DevBlog-UpsertsIntro","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"04\",\"08\",\"DevBlog-UpsertsIntro\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}] [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2021/04/16/LinkedIn-Theta/index.html b/blog/2021/04/16/LinkedIn-Theta/index.html
index caf01927..75d38bee 100644
--- a/blog/2021/04/16/LinkedIn-Theta/index.html
+++ b/blog/2021/04/16/LinkedIn-Theta/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2021/04/16/LinkedIn-Theta/index.txt b/blog/2021/04/16/LinkedIn-Theta/index.txt
index 4dca177c..1027fcd9 100644
--- a/blog/2021/04/16/LinkedIn-Theta/index.txt
+++ b/blog/2021/04/16/LinkedIn-Theta/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2021/04/16/LinkedIn-Theta","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"04\",\"16\",\"LinkedIn-Theta\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2021/04/16/LinkedIn-Theta","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"04\",\"16\",\"LinkedIn-Theta\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2021/04/27/DevBlog-PinotInRetailChain/index.html b/blog/2021/04/27/DevBlog-PinotInRetailChain/index.html
index dda7647e..a678f133 100644
--- a/blog/2021/04/27/DevBlog-PinotInRetailChain/index.html
+++ b/blog/2021/04/27/DevBlog-PinotInRetailChain/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2021/04/27/DevBlog-PinotInRetailChain/index.txt b/blog/2021/04/27/DevBlog-PinotInRetailChain/index.txt
index 6b382793..7b4e742b 100644
--- a/blog/2021/04/27/DevBlog-PinotInRetailChain/index.txt
+++ b/blog/2021/04/27/DevBlog-PinotInRetailChain/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2021/04/27/DevBlog-PinotInRetailChain","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"04\",\"27\",\"DevBlog-PinotInRetailChain\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","cross [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2021/04/27/DevBlog-PinotInRetailChain","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"04\",\"27\",\"DevBlog-PinotInRetailChain\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","cross [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2021/04/29/Uber-Charon/index.html b/blog/2021/04/29/Uber-Charon/index.html
index f0ce8f49..dc02cbd4 100644
--- a/blog/2021/04/29/Uber-Charon/index.html
+++ b/blog/2021/04/29/Uber-Charon/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2021/04/29/Uber-Charon/index.txt b/blog/2021/04/29/Uber-Charon/index.txt
index 139210e0..28ab3e8e 100644
--- a/blog/2021/04/29/Uber-Charon/index.txt
+++ b/blog/2021/04/29/Uber-Charon/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2021/04/29/Uber-Charon","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"04\",\"29\",\"Uber-Charon\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2021/04/29/Uber-Charon","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"04\",\"29\",\"Uber-Charon\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2021/06/13/DevBlog-Geospatial/index.html b/blog/2021/06/13/DevBlog-Geospatial/index.html
index 3d32d703..9ab0b8b4 100644
--- a/blog/2021/06/13/DevBlog-Geospatial/index.html
+++ b/blog/2021/06/13/DevBlog-Geospatial/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2021/06/13/DevBlog-Geospatial/index.txt b/blog/2021/06/13/DevBlog-Geospatial/index.txt
index 8ce59ad9..f3fcda0f 100644
--- a/blog/2021/06/13/DevBlog-Geospatial/index.txt
+++ b/blog/2021/06/13/DevBlog-Geospatial/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2021/06/13/DevBlog-Geospatial","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"06\",\"13\",\"DevBlog-Geospatial\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2021/06/13/DevBlog-Geospatial","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"06\",\"13\",\"DevBlog-Geospatial\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2021/06/16/LinkedIn-TextAnalytics/index.html b/blog/2021/06/16/LinkedIn-TextAnalytics/index.html
index 25ba31c7..3d1a3fd4 100644
--- a/blog/2021/06/16/LinkedIn-TextAnalytics/index.html
+++ b/blog/2021/06/16/LinkedIn-TextAnalytics/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2021/06/16/LinkedIn-TextAnalytics/index.txt b/blog/2021/06/16/LinkedIn-TextAnalytics/index.txt
index c62d8819..2974fa01 100644
--- a/blog/2021/06/16/LinkedIn-TextAnalytics/index.txt
+++ b/blog/2021/06/16/LinkedIn-TextAnalytics/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2021/06/16/LinkedIn-TextAnalytics","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"06\",\"16\",\"LinkedIn-TextAnalytics\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin": [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2021/06/16/LinkedIn-TextAnalytics","c"],{"children":["__PAGE__?{\"slug\":[\"2021\",\"06\",\"16\",\"LinkedIn-TextAnalytics\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin": [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2022/04/04/Announcing-Apache-Pinot-0-10/index.html b/blog/2022/04/04/Announcing-Apache-Pinot-0-10/index.html
index c4cdebbf..bad3a5d4 100644
--- a/blog/2022/04/04/Announcing-Apache-Pinot-0-10/index.html
+++ b/blog/2022/04/04/Announcing-Apache-Pinot-0-10/index.html
@@ -31,4 +31,4 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">  <span class="token parameter variable">-p</span> <span class="token number">9000</span>:9000 <span class="token punctuation">\</span>
 </span><span class="code-line">  apachepinot.docker.scarf.sh/apachepinot/pinot:0.10.0 QuickStart <span class="token punctuation">\</span>
 </span><span class="code-line">  <span class="token parameter variable">-type</span> empty
-</span></code></pre></div><p>You can then ingest your own dataset without needing to worry about spinning up each of the Pinot components individually.</p><h2 id="data-ingestion"><a href="#data-ingestion" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Data Ingestion</h2><ul><li><p>Richard Startin fixed some issues with real-time ingestion where consumption of messages would stop if a bad batch of messages was consumed from Kafka.</p></li><li><p>Mohemmad Zaid Kha [...]
\ No newline at end of file
+</span></code></pre></div><p>You can then ingest your own dataset without needing to worry about spinning up each of the Pinot components individually.</p><h2 id="data-ingestion"><a href="#data-ingestion" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Data Ingestion</h2><ul><li><p>Richard Startin fixed some issues with real-time ingestion where consumption of messages would stop if a bad batch of messages was consumed from Kafka.</p></li><li><p>Mohemmad Zaid Kha [...]
\ No newline at end of file
diff --git a/blog/2022/04/04/Announcing-Apache-Pinot-0-10/index.txt b/blog/2022/04/04/Announcing-Apache-Pinot-0-10/index.txt
index 75e27a2d..da996ad0 100644
--- a/blog/2022/04/04/Announcing-Apache-Pinot-0-10/index.txt
+++ b/blog/2022/04/04/Announcing-Apache-Pinot-0-10/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2022/04/04/Announcing-Apache-Pinot-0-10","c"],{"children":["__PAGE__?{\"slug\":[\"2022\",\"04\",\"04\",\"Announcing-Apache-Pinot-0-10\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","c [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2022/04/04/Announcing-Apache-Pinot-0-10","c"],{"children":["__PAGE__?{\"slug\":[\"2022\",\"04\",\"04\",\"Announcing-Apache-Pinot-0-10\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","c [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot/index.html b/blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot/index.html
index 01f25575..39201ea8 100644
--- a/blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot/index.html
+++ b/blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1661700264-entities-emitting-data.png"/><link rel="preload [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1661700264-entities-emitting-data.png"/><link re [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -10,7 +10,7 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
 </span><span class="code-line"><span class="token keyword">FROM</span> <span class="token punctuation">(</span>
 </span><span class="code-line">    <span class="token keyword">SELECT</span> GAPFILL<span class="token punctuation">(</span>time_col<span class="token punctuation">,</span><span class="token string">&#x27;1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd HH:mm:ss.SSS&#x27;</span><span class="token punctuation">,</span><span class="token string">&#x27;2021-10-01 09:00:00.000&#x27;</span><span class="token punctuation">,</span>
 </span><span class="code-line">                   <span class="token string">&#x27;2021-10-01 12:00:00.000&#x27;</span><span class="token punctuation">,</span><span class="token string">&#x27;30:MINUTES&#x27;</span><span class="token punctuation">,</span> FILL<span class="token punctuation">(</span><span class="token keyword">status</span><span class="token punctuation">,</span> <span class="token string">&#x27;FILL_PREVIOUS_VALUE&#x27;</span><span class="token punctuation">)</span><span [...]
@@ -27,7 +27,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">    <span class="token keyword">LIMIT</span> <span class="token number">100</span><span class="token punctuation">)</span>
 </span><span class="code-line"><span class="token keyword">GROUP</span> <span class="token keyword">BY</span> <span class="token number">1</span>
 </span><span class="code-line"><span class="token keyword">LIMIT</span> <span class="token number">100</span>
-</span></code></pre></div><p>This query suggests three main steps:</p><ol><li>The raw data will be aggregated;</li><li>The aggregated data will be gapfilled;</li><li>The gapfilled data will be aggregated.</li></ol><p>We make one assumption that the raw data is sorted by timestamp. The Gapfill and Post-Gapfill Aggregation will not sort the data.</p><h3 id="query-components"><a href="#query-components" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Query component [...]
+</span></code></pre></div><p>This query suggests three main steps:</p><ol><li>The raw data will be aggregated;</li><li>The aggregated data will be gapfilled;</li><li>The gapfilled data will be aggregated.</li></ol><p>We make one assumption that the raw data is sorted by timestamp. The Gapfill and Post-Gapfill Aggregation will not sort the data.</p><h3 id="query-components"><a href="#query-components" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Query component [...]
 </span><span class="code-line">               <span class="token string">&#x27;1:MILLISECONDS:SIMPLE_DATE_FORMAT:yyyy-MM-dd HH:mm:ss.SSS&#x27;</span><span class="token punctuation">,</span><span class="token string">&#x27;30:MINUTES&#x27;</span><span class="token punctuation">)</span> <span class="token keyword">AS</span> time_col<span class="token punctuation">,</span>
 </span><span class="code-line">               lot_id<span class="token punctuation">,</span> lastWithTime<span class="token punctuation">(</span>is_occupied<span class="token punctuation">,</span> event_time<span class="token punctuation">,</span> <span class="token string">&#x27;INT&#x27;</span><span class="token punctuation">)</span> <span class="token keyword">AS</span> <span class="token keyword">status</span>
 </span><span class="code-line">        <span class="token keyword">FROM</span> parking_data
@@ -35,4 +35,4 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">        <span class="token keyword">GROUP</span> <span class="token keyword">BY</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span>
 </span><span class="code-line">        <span class="token keyword">ORDER</span> <span class="token keyword">BY</span> <span class="token number">1</span>
 </span><span class="code-line">        <span class="token keyword">LIMIT</span> <span class="token number">100</span>
-</span></code></pre></div><h3 id="execution-plan"><a href="#execution-plan" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Execution Plan</h3><p>The sample execution plan for this query is as shown in the figure below:</p><p><img alt="Sample query execution plan" src="https://www.datocms-assets.com/75153/1661700642-execution-plan.png" title="Sample query execution plan"/></p><h3 id="time-and-space-complexity"><a href="#time-and-space-complexity" aria-hidden="tru [...]
\ No newline at end of file
+</span></code></pre></div><h3 id="execution-plan"><a href="#execution-plan" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Execution Plan</h3><p>The sample execution plan for this query is as shown in the figure below:</p><p><img alt="Sample query execution plan" src="https://startree.ai/wp-content/uploads/2024/08/1661700642-execution-plan.png" title="Sample query execution plan"/></p><h3 id="time-and-space-complexity"><a href="#time-and-space-complexity" aria-h [...]
\ No newline at end of file
diff --git a/blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot/index.txt b/blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot/index.txt
index c8e49d86..56116f18 100644
--- a/blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot/index.txt
+++ b/blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot","c"],{"children":["__PAGE__?{\"slug\":[\"2022\",\"08\",\"02\",\"GapFill-Function-For-Time-Series-Datasets-In-Pinot\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/ [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot","c"],{"children":["__PAGE__?{\"slug\":[\"2022\",\"08\",\"02\",\"GapFill-Function-For-Time-Series-Datasets-In-Pinot\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/ [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -15,5 +15,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 12:I[1514,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 13:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"GapFill Function For Time-Series Datasets In Pinot\",\"datePublished\":\"2022-08-02T00:00:00.000Z\",\"dateModified\":\"2022-08-02T00:00:00.000Z\",\"description\":\"Gapfilling functions in Pinot to provide the on-the-fly interpolation (filling the missing data) functionality to better handle time-series data.\",\"image\":\"/ [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"GapFill Function For Time-Series Datasets In Pinot\",\"datePublished\":\"2022-08-02T00:00:00.000Z\",\"dateModified\":\"2022-08-02T00:00:00.000Z\",\"description\":\"Gapfilling functions in Pinot to provide the on-the-fly interpolation (filling the missing data) functionality to better handle time-series data.\",\"image\":\"/ [...]
 d:null
diff --git a/blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes/index.html b/blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes/index.html
index 3975d774..6dff402d 100644
--- a/blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes/index.html	
+++ b/blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes/index.html	
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1667915561-image1-edittable.png"/><link rel="preload" as=" [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1667915561-image1-edittable.png"/><link rel="pre [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -20,7 +20,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">  <span class="token parameter variable">-p</span> <span class="token number">9000</span>:9000 <span class="token punctuation">\</span>
 </span><span class="code-line">  apachepinot.docker.scarf.sh/apachepinot/pinot:0.11.0-arm64 <span class="token punctuation">\</span>
 </span><span class="code-line">  QuickStart <span class="token parameter variable">-type</span> BATCH
-</span></code></pre></div><p>Once that’s up and running, navigate to <a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/#/">http://localhost:9000/#/</a> and click on Tables. Under the tables section click on airlineStats_OFFLINE. You should see a page that looks like this:</p><p><img alt="airlineStats_OFFLINE page" src="https://www.datocms-assets.com/75153/1667915561-image1-edittable.png" title="airlineStats_OFFLINE page"/></p><p>Click on Edit Table. This will show  [...]
+</span></code></pre></div><p>Once that’s up and running, navigate to <a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/#/">http://localhost:9000/#/</a> and click on Tables. Under the tables section click on airlineStats_OFFLINE. You should see a page that looks like this:</p><p><img alt="airlineStats_OFFLINE page" src="https://startree.ai/wp-content/uploads/2024/08/1667915561-image1-edittable.png" title="airlineStats_OFFLINE page"/></p><p>Click on Edit Table. This  [...]
 </span><span class="code-line">  <span class="token property">&quot;rangeIndexVersion&quot;</span><span class="token operator">:</span> <span class="token number">2</span><span class="token punctuation">,</span>
 </span><span class="code-line">  <span class="token property">&quot;autoGeneratedInvertedIndex&quot;</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
 </span><span class="code-line">  <span class="token property">&quot;createInvertedIndexDuringSegmentGeneration&quot;</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
@@ -49,4 +49,4 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">    <span class="token punctuation">}</span>
 </span><span class="code-line">  <span class="token punctuation">}</span>
 </span><span class="code-line"><span class="token punctuation">]</span><span class="token punctuation">,</span>
-</span></code></pre></div><p>From reading this config we learn that a timestamp index is being applied to the <em>ts</em> column. It is applied at DAY, WEEK, and MONTH granularities, which means that the derived columns <span class="math math-inline"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi><mi>s</mi></mrow><annotation encoding="application/x-tex">ts</annotation></semantics></math></span><span class="katex- [...]
\ No newline at end of file
+</span></code></pre></div><p>From reading this config we learn that a timestamp index is being applied to the <em>ts</em> column. It is applied at DAY, WEEK, and MONTH granularities, which means that the derived columns <span class="math math-inline"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>t</mi><mi>s</mi></mrow><annotation encoding="application/x-tex">ts</annotation></semantics></math></span><span class="katex- [...]
\ No newline at end of file
diff --git a/blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes/index.txt b/blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes/index.txt
index 3e0cef28..ee68573a 100644
--- a/blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes/index.txt	
+++ b/blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes/index.txt	
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2022/11/08/Apache%20Pinot-How-do-I-see-my-indexes","c"],{"children":["__PAGE__?{\"slug\":[\"2022\",\"11\",\"08\",\"Apache Pinot-How-do-I-see-my-indexes\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","pre [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2022/11/08/Apache%20Pinot-How-do-I-see-my-indexes","c"],{"children":["__PAGE__?{\"slug\":[\"2022\",\"11\",\"08\",\"Apache Pinot-How-do-I-see-my-indexes\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","pre [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -15,5 +15,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 12:I[1514,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 13:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.11 - How do I see my indexes?\",\"datePublished\":\"2022-11-08T00:00:00.000Z\",\"dateModified\":\"2022-11-08T00:00:00.000Z\",\"description\":\"How you can work out which indexes are currently defined on a Pinot table\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://pinot.apache.org/blog/2022 [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.11 - How do I see my indexes?\",\"datePublished\":\"2022-11-08T00:00:00.000Z\",\"dateModified\":\"2022-11-08T00:00:00.000Z\",\"description\":\"How you can work out which indexes are currently defined on a Pinot table\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://pinot.apache.org/blog/2022 [...]
 d:null
diff --git a/blog/2022/11/17/Apache Pinot-Inserts-from-SQL/index.html b/blog/2022/11/17/Apache Pinot-Inserts-from-SQL/index.html
index aa18bb71..fa85989f 100644
--- a/blog/2022/11/17/Apache Pinot-Inserts-from-SQL/index.html	
+++ b/blog/2022/11/17/Apache Pinot-Inserts-from-SQL/index.html	
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1668701275-image4.png"/><link rel="preload" as="image" hre [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1668701275-image4.png"/><link rel="preload" as=" [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -10,7 +10,7 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
 </span><span class="code-line">    <span class="token atrule key">name</span><span class="token punctuation">:</span> <span class="token string">&#x27;standalone&#x27;</span>
 </span><span class="code-line">    <span class="token atrule key">segmentGenerationJobRunnerClassName</span><span class="token punctuation">:</span> <span class="token string">&#x27;org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner&#x27;</span>
 </span><span class="code-line">    <span class="token atrule key">segmentTarPushJobRunnerClassName</span><span class="token punctuation">:</span> <span class="token string">&#x27;org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner&#x27;</span>
@@ -42,7 +42,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">  apachepinot.docker.scarf.sh/apachepinot/pinot:0.11.0 LaunchDataIngestionJob <span class="token punctuation">\</span>
 </span><span class="code-line">  <span class="token variable parameter">-jobSpecFile</span> /config/job-spec.yml <span class="token punctuation">\</span>
 </span><span class="code-line">  <span class="token variable parameter">-values</span> <span class="token variable assign-left">PINOT_CONTROLLER</span><span class="token operator">=</span>pinot-controller
-</span></code></pre></div><p>And don’t worry, those credentials have already been deleted; I find it easier to understand what values go where if we use real values.</p><p>Once we’ve run this command, if we go to the Pinot UI at <a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/">http://localhost:9000</a> and click through to the events table from the Query Console menu, we’ll see that the records have been imported, as shown in the screenshot below:</p><p><img alt [...]
+</span></code></pre></div><p>And don’t worry, those credentials have already been deleted; I find it easier to understand what values go where if we use real values.</p><p>Once we’ve run this command, if we go to the Pinot UI at <a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/">http://localhost:9000</a> and click through to the events table from the Query Console menu, we’ll see that the records have been imported, as shown in the screenshot below:</p><p><img alt [...]
 </span><span class="code-line">  <span class="token property">&quot;taskTypeConfigsMap&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token property">&quot;SegmentGenerationAndPushTask&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span> <span class="token punctuation">}</span>
 </span><span class="code-line"><span class="token punctuation">}</span>
 </span></code></pre></div><p>As long as you’ve done those two things, we’re ready to write our import query! A query that imports JSON files from my S3 bucket is shown below:</p><div class="relative"><pre><code class="code-highlight language-sql"><span class="code-line"><span class="token keyword">INSERT</span> <span class="token keyword">INTO</span> events
@@ -55,4 +55,4 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">  input<span class="token punctuation">.</span>fs<span class="token punctuation">.</span>prop<span class="token punctuation">.</span>secretKey<span class="token operator">=</span>gfz71RX<span class="token operator">+</span>Tj4udve43YePCBqMsIeN1PvHXrVFyxJS<span class="token punctuation">,</span>
 </span><span class="code-line">  input<span class="token punctuation">.</span>fs<span class="token punctuation">.</span>prop<span class="token punctuation">.</span>region<span class="token operator">=</span>eu<span class="token operator">-</span>west<span class="token operator">-</span><span class="token number">2</span>
 </span><span class="code-line"><span class="token punctuation">)</span><span class="token punctuation">;</span>
-</span></code></pre></div><p>If we run this query, we’ll see the following output:</p><p><img alt="Sample events_OFFLINE query result" src="https://www.datocms-assets.com/75153/1668701654-image5.png" title="Sample events_OFFLINE query result"/></p><p>We can check on the state of the ingestion job via the Swagger REST API. If we navigate to <a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/help#/Task/getTaskState">http://localhost:9000/help#/Task/getTaskState</a>, p [...]
\ No newline at end of file
+</span></code></pre></div><p>If we run this query, we’ll see the following output:</p><p><img alt="Sample events_OFFLINE query result" src="https://startree.ai/wp-content/uploads/2024/08/1668701654-image5.png" title="Sample events_OFFLINE query result"/></p><p>We can check on the state of the ingestion job via the Swagger REST API. If we navigate to <a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/help#/Task/getTaskState">http://localhost:9000/help#/Task/getTaskSt [...]
\ No newline at end of file
diff --git a/blog/2022/11/17/Apache Pinot-Inserts-from-SQL/index.txt b/blog/2022/11/17/Apache Pinot-Inserts-from-SQL/index.txt
index 50e25725..cadcbce9 100644
--- a/blog/2022/11/17/Apache Pinot-Inserts-from-SQL/index.txt	
+++ b/blog/2022/11/17/Apache Pinot-Inserts-from-SQL/index.txt	
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2022/11/17/Apache%20Pinot-Inserts-from-SQL","c"],{"children":["__PAGE__?{\"slug\":[\"2022\",\"11\",\"17\",\"Apache Pinot-Inserts-from-SQL\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2022/11/17/Apache%20Pinot-Inserts-from-SQL","c"],{"children":["__PAGE__?{\"slug\":[\"2022\",\"11\",\"17\",\"Apache Pinot-Inserts-from-SQL\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -15,5 +15,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 12:I[1514,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 13:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.11 - Inserts from SQL\",\"datePublished\":\"2022-11-17T00:00:00.000Z\",\"dateModified\":\"2022-11-17T00:00:00.000Z\",\"description\":\"Explore the INSERT INTO clause, which makes ingesting batch data into Pinot as easy as writing a SQL query.\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https:// [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.11 - Inserts from SQL\",\"datePublished\":\"2022-11-17T00:00:00.000Z\",\"dateModified\":\"2022-11-17T00:00:00.000Z\",\"description\":\"Explore the INSERT INTO clause, which makes ingesting batch data into Pinot as easy as writing a SQL query.\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https:// [...]
 d:null
diff --git a/blog/2022/11/22/Apache-Pinot-Timestamp-Indexes/index.html b/blog/2022/11/22/Apache-Pinot-Timestamp-Indexes/index.html
index a70c42c4..555402a7 100644
--- a/blog/2022/11/22/Apache-Pinot-Timestamp-Indexes/index.html
+++ b/blog/2022/11/22/Apache-Pinot-Timestamp-Indexes/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1669133004-image1.png"/><link rel="preload" as="image" hre [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1669133004-image1.png"/><link rel="preload" as=" [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -10,7 +10,7 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
 </span><span class="code-line">  <span class="token variable parameter">-p</span> <span class="token number">8000</span>:8000 <span class="token punctuation">\</span>
 </span><span class="code-line">  <span class="token variable parameter">-p</span> <span class="token number">9000</span>:9000 <span class="token punctuation">\</span>
 </span><span class="code-line"> <span class="token variable parameter">--name</span> pinot-timestamp-blog <span class="token punctuation">\</span>
@@ -34,7 +34,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">    <span class="token variable parameter">-exec</span>
 </span><span class="code-line">
 </span></code></pre></div><p>We should see the following output:</p><div class="relative"><pre><code class="language-bash code-highlight"><span class="code-line">  <span class="token number">2022</span>/11/03 <span class="token number">13</span>:07:57.169 INFO <span class="token punctuation">\</span><span class="token punctuation">[</span>AddTableCommand<span class="token punctuation">\</span><span class="token punctuation">]</span> <span class="token punctuation">\</span><span class="to [...]
-</span></code></pre></div><p>A screenshot of the schema is shown below:</p><p><img alt="Chicago crime dataset table schema" src="https://www.datocms-assets.com/75153/1669132979-image3.png" title="Chicago crime dataset table schema"/></p><p>We won’t go through the table config and schema files in this blog post because we did that in the last post, but you can find them in the <a target="_blank" rel="noopener noreferrer" href="https://github.com/startreedata/pinot-recipes/tree/main/recipe [...]
+</span></code></pre></div><p>A screenshot of the schema is shown below:</p><p><img alt="Chicago crime dataset table schema" src="https://startree.ai/wp-content/uploads/2024/08/1669132979-image3.png" title="Chicago crime dataset table schema"/></p><p>We won’t go through the table config and schema files in this blog post because we did that in the last post, but you can find them in the <a target="_blank" rel="noopener noreferrer" href="https://github.com/startreedata/pinot-recipes/tree/m [...]
 </span><span class="code-line">   <span class="token variable parameter">--network</span> timestamp_blog <span class="token punctuation">\</span>
 </span><span class="code-line">   <span class="token variable parameter">-v</span> <span class="token constant environment">$PWD</span>/config:/config <span class="token punctuation">\</span>
 </span><span class="code-line">   <span class="token variable parameter">-v</span> <span class="token constant environment">$PWD</span>/data:/data <span class="token punctuation">\</span>
@@ -47,7 +47,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line"><span class="token keyword">group</span> <span class="token keyword">by</span> tsWeek
 </span><span class="code-line"><span class="token keyword">order</span> <span class="token keyword">by</span> <span class="token function">count</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token punctuation">)</span> <span class="token keyword">DESC</span>
 </span><span class="code-line"><span class="token keyword">limit</span> <span class="token number">10</span>
-</span></code></pre></div><p>If we run that query, we’ll see the following results:</p><p><img alt="Chicago crime dataset query result" src="https://www.datocms-assets.com/75153/1669133027-image6.png" title="Chicago crime dataset query result"/></p><p>And, if we look above the query result, there’s metadata about the query, including the time that it took to run.</p><p><img alt="Chicago crime dataset metadata about the query, including the time that it took to run" src="https://www.datoc [...]
+</span></code></pre></div><p>If we run that query, we’ll see the following results:</p><p><img alt="Chicago crime dataset query result" src="https://startree.ai/wp-content/uploads/2024/08/1669133027-image6.png" title="Chicago crime dataset query result"/></p><p>And, if we look above the query result, there’s metadata about the query, including the time that it took to run.</p><p><img alt="Chicago crime dataset metadata about the query, including the time that it took to run" src="https:/ [...]
 </span><span class="code-line">  <span class="token punctuation">{</span>
 </span><span class="code-line">    <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;DateEpoch&quot;</span><span class="token punctuation">,</span>
 </span><span class="code-line">    <span class="token property">&quot;encodingType&quot;</span><span class="token operator">:</span> <span class="token string">&quot;DICTIONARY&quot;</span><span class="token punctuation">,</span>
@@ -91,7 +91,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line"><span class="token punctuation">[</span>RangeIndexHandler<span class="token punctuation">]</span>  <span class="token property">Creating new range index for segment:</span> crimes_OFFLINE_0<span class="token punctuation">,</span> column<span class="token operator">:</span> <span class="token operator">$</span>DateEpoch<span class="token operator">$</span>WEEK
 </span><span class="code-line"><span class="token punctuation">[</span>RangeIndexHandler<span class="token punctuation">]</span>  <span class="token property">Created range index for segment:</span> crimes_OFFLINE_0<span class="token punctuation">,</span> column<span class="token operator">:</span> <span class="token operator">$</span>DateEpoch<span class="token operator">$</span>WEEK
 </span><span class="code-line">
-</span></code></pre></div><h2 id="what-does-a-timestamp-index-do"><a href="#what-does-a-timestamp-index-do" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>What does a timestamp index do?</h2><p>So, the timestamp index has now been created, but what does it actually do?</p><p>When we add a timestamp index on a column, Pinot creates a derived column for each granularity and adds a range index for each new column.</p><p>In our case, that means we’ll have these extr [...]
+</span></code></pre></div><h2 id="what-does-a-timestamp-index-do"><a href="#what-does-a-timestamp-index-do" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>What does a timestamp index do?</h2><p>So, the timestamp index has now been created, but what does it actually do?</p><p>When we add a timestamp index on a column, Pinot creates a derived column for each granularity and adds a range index for each new column.</p><p>In our case, that means we’ll have these extr [...]
 </span><span class="code-line"><span class="token keyword">from</span> crimes_indexed
 </span><span class="code-line"><span class="token keyword">GROUP</span> <span class="token keyword">BY</span> tsWeek
 </span><span class="code-line"><span class="token keyword">limit</span> <span class="token number">10</span>
@@ -111,4 +111,4 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line"><span class="token keyword">group</span> <span class="token keyword">by</span> tsWeek
 </span><span class="code-line"><span class="token keyword">order</span> <span class="token keyword">by</span> <span class="token function">count</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token punctuation">)</span> <span class="token keyword">DESC</span>
 </span><span class="code-line"><span class="token keyword">limit</span> <span class="token number">10</span>
-</span></code></pre></div><h2 id="re-running-the-query"><a href="#re-running-the-query" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Re-running the query</h2><p>Let’s now run our initial query against the <em>crimes_indexed</em> table. We’ll get exactly the same results as before, but let’s take a look at the query stats:</p><p><img alt="Chicago crime dataset updated query stats" src="https://www.datocms-assets.com/75153/1669133083-image4.png" title="Chicago c [...]
\ No newline at end of file
+</span></code></pre></div><h2 id="re-running-the-query"><a href="#re-running-the-query" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Re-running the query</h2><p>Let’s now run our initial query against the <em>crimes_indexed</em> table. We’ll get exactly the same results as before, but let’s take a look at the query stats:</p><p><img alt="Chicago crime dataset updated query stats" src="https://startree.ai/wp-content/uploads/2024/08/1669133083-image4.png" title= [...]
\ No newline at end of file
diff --git a/blog/2022/11/22/Apache-Pinot-Timestamp-Indexes/index.txt b/blog/2022/11/22/Apache-Pinot-Timestamp-Indexes/index.txt
index ccfcb4fa..a240cbe2 100644
--- a/blog/2022/11/22/Apache-Pinot-Timestamp-Indexes/index.txt
+++ b/blog/2022/11/22/Apache-Pinot-Timestamp-Indexes/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2022/11/22/Apache-Pinot-Timestamp-Indexes","c"],{"children":["__PAGE__?{\"slug\":[\"2022\",\"11\",\"22\",\"Apache-Pinot-Timestamp-Indexes\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2022/11/22/Apache-Pinot-Timestamp-Indexes","c"],{"children":["__PAGE__?{\"slug\":[\"2022\",\"11\",\"22\",\"Apache-Pinot-Timestamp-Indexes\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -16,5 +16,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 13:I[7246,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 15:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.11 - Timestamp Indexes\",\"datePublished\":\"2022-11-22T00:00:00.000Z\",\"dateModified\":\"2022-11-22T00:00:00.000Z\",\"description\":\"Users write queries that use the datetrunc function to filter at a coarser grain of functionality. Unfortunately, this approach results in scanning data and time value conve [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.11 - Timestamp Indexes\",\"datePublished\":\"2022-11-22T00:00:00.000Z\",\"dateModified\":\"2022-11-22T00:00:00.000Z\",\"description\":\"Users write queries that use the datetrunc function to filter at a coarser grain of functionality. Unfortunately, this approach results in scanning data and time value conve [...]
 d:null
diff --git a/blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion/index.html b/blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion/index.html
index 975b331a..e145304e 100644
--- a/blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion/index.html
+++ b/blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1669733133-pinot_0-11-realtime_injestion-diagram-v1.png"/> [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1669733133-pinot_0-11-realtime_injestion-diagram [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -10,7 +10,7 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
 </span><span class="code-line"><span class="token keyword">import</span> uuid
 </span><span class="code-line"><span class="token keyword">import</span> random
 </span><span class="code-line"><span class="token keyword">import</span> json
@@ -138,4 +138,4 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">    <span class="token property">&quot;pauseFlag&quot;</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>
 </span><span class="code-line">    <span class="token property">&quot;consumingSegments&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">&quot;events__0__22__20221123T1124Z&quot;</span><span class="token punctuation">]</span>
 </span><span class="code-line"><span class="token punctuation">}</span>
-</span></code></pre></div><p>Navigate to <a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/#/query">http://localhost:9000/#/query</a> and click on the events table. You should see the following:</p><p><img alt="Sample events table containing records" src="https://www.datocms-assets.com/75153/1669668611-image2.png" title="Sample events table containing records"/></p><p>We have records! We can also run our data generator again, and more events will be ingested.</p><h [...]
\ No newline at end of file
+</span></code></pre></div><p>Navigate to <a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/#/query">http://localhost:9000/#/query</a> and click on the events table. You should see the following:</p><p><img alt="Sample events table containing records" src="https://startree.ai/wp-content/uploads/2024/08/1669668611-image2.png" title="Sample events table containing records"/></p><p>We have records! We can also run our data generator again, and more events will be inges [...]
\ No newline at end of file
diff --git a/blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion/index.txt b/blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion/index.txt
index 2e3a9d71..4ca656dc 100644
--- a/blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion/index.txt
+++ b/blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion","c"],{"children":["__PAGE__?{\"slug\":[\"2022\",\"11\",\"28\",\"Apache-Pinot-Pausing-Real-Time-Ingestion\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion","c"],{"children":["__PAGE__?{\"slug\":[\"2022\",\"11\",\"28\",\"Apache-Pinot-Pausing-Real-Time-Ingestion\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -16,5 +16,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 13:I[7246,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 15:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.11 - Pausing Real-Time Ingestion\",\"datePublished\":\"2022-11-28T00:00:00.000Z\",\"dateModified\":\"2022-11-28T00:00:00.000Z\",\"description\":\"Learn about a feature that lets you pause and resume real-time data ingestion in Apache Pinot\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://pin [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.11 - Pausing Real-Time Ingestion\",\"datePublished\":\"2022-11-28T00:00:00.000Z\",\"dateModified\":\"2022-11-28T00:00:00.000Z\",\"description\":\"Learn about a feature that lets you pause and resume real-time data ingestion in Apache Pinot\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://pin [...]
 d:null
diff --git a/blog/2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables/index.html b/blog/2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables/index.html
index 8f2ec6fe..137176c9 100644
--- a/blog/2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables/index.html
+++ b/blog/2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1673273173-image4.png"/><link rel="preload" as="image" hre [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1673273173-image4.png"/><link rel="preload" as=" [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -153,7 +153,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line"><span class="token keyword">group</span> <span class="token keyword">by</span> uuid
 </span><span class="code-line"><span class="token keyword">order</span> <span class="token keyword">by</span> <span class="token function">count</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token punctuation">)</span>
 </span><span class="code-line"><span class="token keyword">limit</span> <span class="token number">10</span>
-</span></code></pre></div><p>The results of this query are shown below:</p><p><img alt="Sample Apache Pinot real-time query response stats including duplicates" src="https://www.datocms-assets.com/75153/1673273173-image4.png" title="Sample Apache Pinot real-time query response stats including duplicates"/></p><p>We can see loads of duplicates!</p><p>Now let’s add a table and schema that uses the de-duplicate feature, starting with the schema:</p><div class="relative"><pre><code class="co [...]
+</span></code></pre></div><p>The results of this query are shown below:</p><p><img alt="Sample Apache Pinot real-time query response stats including duplicates" src="https://startree.ai/wp-content/uploads/2024/08/1673273173-image4.png" title="Sample Apache Pinot real-time query response stats including duplicates"/></p><p>We can see loads of duplicates!</p><p>Now let’s add a table and schema that uses the de-duplicate feature, starting with the schema:</p><div class="relative"><pre><code [...]
 </span><span class="code-line">    <span class="token property">&quot;schemaName&quot;</span><span class="token operator">:</span> <span class="token string">&quot;events_dedup&quot;</span><span class="token punctuation">,</span>
 </span><span class="code-line">    <span class="token property">&quot;primaryKeyColumns&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">&quot;uuid&quot;</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
 </span><span class="code-line">    <span class="token property">&quot;dimensionFieldSpecs&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> <span class="token property">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;uuid&quot;</span><span class="token punctuation">,</span> <span class="token property">&quot;dataType&quot;</span><span class="token operator">:</sp [...]
@@ -215,4 +215,4 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">    group by uuid
 </span><span class="code-line">    order by count<span class="token punctuation">(</span>*<span class="token punctuation">)</span>
 </span><span class="code-line">    limit <span class="token number">10</span>
-</span></code></pre></div><p><img alt="Sample Apache Pinot real-time query response stats deduplicated" src="https://www.datocms-assets.com/75153/1673273248-image3.png" title="Sample Apache Pinot real-time query response stats deduplicated"/></p><p>We have every combination of hex values (16^3=4096) and no duplicates! Pinot’s de-duplication feature has done its job.</p><h2 id="how-does-it-work"><a href="#how-does-it-work" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></sp [...]
\ No newline at end of file
+</span></code></pre></div><p><img alt="Sample Apache Pinot real-time query response stats deduplicated" src="https://startree.ai/wp-content/uploads/2024/08/1673273248-image3.png" title="Sample Apache Pinot real-time query response stats deduplicated"/></p><p>We have every combination of hex values (16^3=4096) and no duplicates! Pinot’s de-duplication feature has done its job.</p><h2 id="how-does-it-work"><a href="#how-does-it-work" aria-hidden="true" tabindex="-1"><span class="icon icon- [...]
\ No newline at end of file
diff --git a/blog/2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables/index.txt b/blog/2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables/index.txt
index 2f9e8841..65e13e3f 100644
--- a/blog/2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables/index.txt
+++ b/blog/2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"01\",\"29\",\"Apache-Pinot-Deduplication-on-Real-Time-Tables\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2023/01/29/Apache-Pinot-Deduplication-on-Real-Time-Tables","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"01\",\"29\",\"Apache-Pinot-Deduplication-on-Real-Time-Tables\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -15,5 +15,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 12:I[1514,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 13:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.11 - Deduplication on Real-Time Tables\",\"datePublished\":\"2023-01-29T00:00:00.000Z\",\"dateModified\":\"2023-01-29T00:00:00.000Z\",\"description\":\"Learn about the deduplication for the real-time tables feature in Apache Pinot\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://pinot.apache [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.11 - Deduplication on Real-Time Tables\",\"datePublished\":\"2023-01-29T00:00:00.000Z\",\"dateModified\":\"2023-01-29T00:00:00.000Z\",\"description\":\"Learn about the deduplication for the real-time tables feature in Apache Pinot\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://pinot.apache [...]
 d:null
diff --git a/blog/2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary/index.html b/blog/2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary/index.html
index 1313286d..30b41377 100644
--- a/blog/2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary/index.html
+++ b/blog/2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1676991003-image2.png"/><link rel="stylesheet" href="/_nex [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1676991003-image2.png"/><link rel="stylesheet" h [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -11,7 +11,7 @@ _paq.push(['enableLinkTracking']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
 })();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
-</span></code></pre></div><p>The ingestion frequency can either be 1 hour or 1 day, so one of these values will be used.</p><p>When a query for a hybrid table is received by a Pinot Broker, the broker sends a time boundary annotated version of the query to the offline and real-time tables. Any records from or before the time boundary are read from the offline table; anything greater than the boundary comes from the real-time table.</p><p><img alt="Apache Pinot computing the time boundary [...]
+</span></code></pre></div><p>The ingestion frequency can either be 1 hour or 1 day, so one of these values will be used.</p><p>When a query for a hybrid table is received by a Pinot Broker, the broker sends a time boundary annotated version of the query to the offline and real-time tables. Any records from or before the time boundary are read from the offline table; anything greater than the boundary comes from the real-time table.</p><p><img alt="Apache Pinot computing the time boundary [...]
 </span><span class="code-line"><span class="token keyword">FROM</span> events
 </span></code></pre></div><p>The broker would send the following query to the offline table:</p><div class="relative"><pre><code class="code-highlight language-sql"><span class="code-line"><span class="token keyword">SELECT</span> <span class="token function">count</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token punctuation">)</span>
 </span><span class="code-line"><span class="token keyword">FROM</span> events_OFFLINE
@@ -25,4 +25,4 @@ _paq.push(['enableLinkTracking']);
 </span></code></pre></div><p>In this case, that will result in a new boundary time of 2023-01-09T18:41:17, which is exactly what we need.</p><p>We’ll then be able to query the events table and have it read the offline table to get all records on or before 2023-01-09T18:41:17 and the real-time table for everything else.</p><h2 id="neat-anything-else-i-should-know"><a href="#neat-anything-else-i-should-know" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Neat, any [...]
 </span><span class="code-line">  <span class="token string">&quot;http://localhost:9000/tables/{tableName}/timeBoundary&quot;</span> <span class="token punctuation">\</span>
 </span><span class="code-line">  <span class="token parameter variable">-H</span> <span class="token string">&quot;accept: application/json&quot;</span>
-</span></code></pre></div><h2 id="summary"><a href="#summary" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Summary</h2><p>I love this feature, and it solves a problem I’ve struggled with when using my datasets. I hope you’ll find it just as useful.</p><p>Give it a try, and let us know how you get on. If you have any questions about this feature, feel free to join us on <a target="_blank" rel="noopener noreferrer" href="https://stree.ai/slack">Slack</a>, where  [...]
\ No newline at end of file
+</span></code></pre></div><h2 id="summary"><a href="#summary" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Summary</h2><p>I love this feature, and it solves a problem I’ve struggled with when using my datasets. I hope you’ll find it just as useful.</p><p>Give it a try, and let us know how you get on. If you have any questions about this feature, feel free to join us on <a target="_blank" rel="noopener noreferrer" href="https://stree.ai/slack">Slack</a>, where  [...]
\ No newline at end of file
diff --git a/blog/2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary/index.txt b/blog/2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary/index.txt
index a86b37b9..ff83bd98 100644
--- a/blog/2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary/index.txt
+++ b/blog/2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"02\",\"21\",\"Apache-Pinot-0-12-Configurable-Time-Boundary\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3 [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"02\",\"21\",\"Apache-Pinot-0-12-Configurable-Time-Boundary\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3 [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -16,5 +16,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 13:I[7246,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 15:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.12 - Configurable Time Boundary\",\"datePublished\":\"2023-02-21T00:00:00.000Z\",\"dateModified\":\"2023-02-21T00:00:00.000Z\",\"description\":\"This post will explore the ability to configure the time boundary when working with hybrid tables.\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https:/ [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.12 - Configurable Time Boundary\",\"datePublished\":\"2023-02-21T00:00:00.000Z\",\"dateModified\":\"2023-02-21T00:00:00.000Z\",\"description\":\"This post will explore the ability to configure the time boundary when working with hybrid tables.\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https:/ [...]
 d:null
diff --git a/blog/2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag/index.html b/blog/2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag/index.html
index cbfe96a0..6ebbb8c6 100644
--- a/blog/2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag/index.html
+++ b/blog/2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1680190272-image2.png"/><link rel="preload" as="image" hre [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1680190272-image2.png"/><link rel="preload" as=" [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -130,7 +130,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">  printf <span class="token string">&quot;\n&quot;</span>
 </span><span class="code-line">
 </span><span class="code-line"><span class="token punctuation">}</span>
-</span></code></pre></div><p>Let’s call the function:</p><p><code>consuming\_info</code></p><p>We’ll see the following output:</p><p><img alt="Consumer record lag output" src="https://www.datocms-assets.com/75153/1680190272-image2.png" title="Consumer record lag output"/></p><p>Now let’s put it in a script and call the watch command so that it will be refreshed every couple of seconds:</p><div class="relative"><pre><code class="code-highlight language-python"><span class="code-line">!<sp [...]
+</span></code></pre></div><p>Let’s call the function:</p><p><code>consuming\_info</code></p><p>We’ll see the following output:</p><p><img alt="Consumer record lag output" src="https://startree.ai/wp-content/uploads/2024/08/1680190272-image2.png" title="Consumer record lag output"/></p><p>Now let’s put it in a script and call the watch command so that it will be refreshed every couple of seconds:</p><div class="relative"><pre><code class="code-highlight language-python"><span class="code- [...]
 </span><span class="code-line">
 </span><span class="code-line">function consuming_info<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
 </span><span class="code-line">  curl <span class="token string">&quot;http://localhost:9000/tables/events/consumingSegmentsInfo&quot;</span> <span class="token number">2</span><span class="token operator">&gt;</span><span class="token operator">/</span>dev<span class="token operator">/</span>null <span class="token operator">|</span>
@@ -150,4 +150,4 @@ _paq.push(['enableLinkTracking']);
 </span></code></pre></div><p>Give permissions to run it as a script:</p><p><code>chmod u+x watch\_consuming\_info.sh</code></p><p>And finally, run it:</p><p><code>./watch\_consuming\_info.sh</code></p><p>This will print out a new table every two seconds. Let’s now make things more interesting by removing the sleep from our ingestion command:</p><div class="relative"><pre><code class="code-highlight language-bash"><span class="code-line">python datagen.py  <span class="token operator"><sp [...]
 </span><span class="code-line">jq <span class="token parameter variable">-cr</span> <span class="token parameter variable">--arg</span> sep ø <span class="token string">&#x27;[.uuid, tostring] | join($sep)&#x27;</span> <span class="token operator">|</span>
 </span><span class="code-line">kcat <span class="token parameter variable">-P</span> <span class="token parameter variable">-b</span> localhost:9092 <span class="token parameter variable">-t</span> events -Kø
-</span></code></pre></div><p>And now if we look at the watch output:</p><p><img alt="Apache Pinot Consumer Record Lag" src="https://www.datocms-assets.com/75153/1680190286-image1.png" title="Apache Pinot Consumer Record Lag"/></p><p>We get some transitory lag, but it generally goes away by the next time the command is run.</p><h2 id="summary"><a href="#summary" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Summary</h2><p>I love this feature, and it solves a pro [...]
\ No newline at end of file
+</span></code></pre></div><p>And now if we look at the watch output:</p><p><img alt="Apache Pinot Consumer Record Lag" src="https://startree.ai/wp-content/uploads/2024/08/1680190286-image1.png" title="Apache Pinot Consumer Record Lag"/></p><p>We get some transitory lag, but it generally goes away by the next time the command is run.</p><h2 id="summary"><a href="#summary" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Summary</h2><p>I love this feature, and it so [...]
\ No newline at end of file
diff --git a/blog/2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag/index.txt b/blog/2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag/index.txt
index 5f735289..c3d7e3db 100644
--- a/blog/2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag/index.txt
+++ b/blog/2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"03\",\"30\",\"Apache-Pinot-0-12-Consumer-Record-Lag\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","pre [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"03\",\"30\",\"Apache-Pinot-0-12-Consumer-Record-Lag\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","pre [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -16,5 +16,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 13:I[7246,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 15:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.12 - Consumer Record Lag\",\"datePublished\":\"2023-03-30T00:00:00.000Z\",\"dateModified\":\"2023-03-30T00:00:00.000Z\",\"description\":\"This post will explore a new API endpoint that lets you check how much Pinot is lagging when ingesting from Apache Kafka.\",\"image\":\"/static/images/twitter-card.png\",\ [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot™ 0.12 - Consumer Record Lag\",\"datePublished\":\"2023-03-30T00:00:00.000Z\",\"dateModified\":\"2023-03-30T00:00:00.000Z\",\"description\":\"This post will explore a new API endpoint that lets you check how much Pinot is lagging when ingesting from Apache Kafka.\",\"image\":\"/static/images/twitter-card.png\",\ [...]
 d:null
diff --git a/blog/2023/05/11/Geospatial-Indexing-in-Apache-Pinot/index.html b/blog/2023/05/11/Geospatial-Indexing-in-Apache-Pinot/index.html
index acdbe667..f3986ace 100644
--- a/blog/2023/05/11/Geospatial-Indexing-in-Apache-Pinot/index.html
+++ b/blog/2023/05/11/Geospatial-Indexing-in-Apache-Pinot/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1683813508-image5.png"/><link rel="preload" as="image" hre [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1683813508-image5.png"/><link rel="preload" as=" [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -10,7 +10,7 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
 </span><span class="code-line">
 </span><span class="code-line">
 </span><span class="code-line"><span class="token punctuation">{</span>
@@ -88,7 +88,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line"><span class="token keyword">WHERE</span> distance <span class="token operator">&lt;</span> <span class="token number">10000</span>
 </span><span class="code-line"><span class="token keyword">ORDER</span> <span class="token keyword">BY</span> distance<span class="token punctuation">,</span> ts <span class="token keyword">DESC</span>
 </span><span class="code-line"><span class="token keyword">limit</span> <span class="token number">10</span>
-</span></code></pre></div><p>These results from running the query would follow:</p><p><img alt="Sample Geospatial Indexing In Apache Pinot Query Result" src="https://www.datocms-assets.com/75153/1683813581-image1.png" title="Sample Geospatial Indexing In Apache Pinot Query Result"/></p><p>Let’s now go into a bit more detail about what happens when we run the query.</p><p>The 10 km radius covers the area inside the white circle on the diagram below:</p><p><img alt="Geospatial Indexing In  [...]
+</span></code></pre></div><p>These results from running the query would follow:</p><p><img alt="Sample Geospatial Indexing In Apache Pinot Query Result" src="https://startree.ai/wp-content/uploads/2024/08/1683813581-image1.png" title="Sample Geospatial Indexing In Apache Pinot Query Result"/></p><p>Let’s now go into a bit more detail about what happens when we run the query.</p><p>The 10 km radius covers the area inside the white circle on the diagram below:</p><p><img alt="Geospatial In [...]
 </span><span class="code-line"><span class="token keyword">from</span> trains
 </span><span class="code-line"><span class="token keyword">WHERE</span> StWithin<span class="token punctuation">(</span>
 </span><span class="code-line">      <span class="token keyword">point</span><span class="token punctuation">,</span>
@@ -101,6 +101,6 @@ _paq.push(['enableLinkTracking']);
 </span></span><span class="code-line"><span class="token string">        -0.1296371966600418 51.508053828550544))&#x27;</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token number">1</span>
 </span><span class="code-line"><span class="token keyword">ORDER</span> <span class="token keyword">BY</span> ts <span class="token keyword">DESC</span>
 </span><span class="code-line"><span class="token keyword">limit</span> <span class="token number">10</span>
-</span></code></pre></div><p>The results from running the query are shown below:</p><p><img alt="Sample Geospatial Indexing In Apache Pinot Query Result" src="https://www.datocms-assets.com/75153/1683813749-image4.png" title="Sample Geospatial Indexing In Apache Pinot Query Result"/></p><p>If we change the query to show trains outside of a central London polygon, we’d see the following results:</p><p><img alt="Sample Geospatial Indexing In Apache Pinot Query Result" src="https://www.dato [...]
+</span></code></pre></div><p>The results from running the query are shown below:</p><p><img alt="Sample Geospatial Indexing In Apache Pinot Query Result" src="https://startree.ai/wp-content/uploads/2024/08/1683813749-image4.png" title="Sample Geospatial Indexing In Apache Pinot Query Result"/></p><p>If we change the query to show trains outside of a central London polygon, we’d see the following results:</p><p><img alt="Sample Geospatial Indexing In Apache Pinot Query Result" src="https: [...]
 </span><span class="code-line">fullyContained <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token number">4</span><span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">,</span><span class="token number">6</span><span class="token punctuation">]</span>
-</span></code></pre></div><p>First, compute newFullyContained to find all the records not in potential:</p><p><code>newFullyContained = [4,5,6,7,8,9]</code></p><p>Then we can remove the values in fullyContained, which gives us:</p><p><code>newFullyContained = [7,8,9]</code></p><p>We will return all the records in <code>newFullyContained</code> and apply the <code>STWithin</code> or <code>StContains</code> predicate to work out which records to return from the potential list.</p><h2 id="h [...]
\ No newline at end of file
+</span></code></pre></div><p>First, compute newFullyContained to find all the records not in potential:</p><p><code>newFullyContained = [4,5,6,7,8,9]</code></p><p>Then we can remove the values in fullyContained, which gives us:</p><p><code>newFullyContained = [7,8,9]</code></p><p>We will return all the records in <code>newFullyContained</code> and apply the <code>STWithin</code> or <code>StContains</code> predicate to work out which records to return from the potential list.</p><h2 id="h [...]
\ No newline at end of file
diff --git a/blog/2023/05/11/Geospatial-Indexing-in-Apache-Pinot/index.txt b/blog/2023/05/11/Geospatial-Indexing-in-Apache-Pinot/index.txt
index 8d71b313..88dc62da 100644
--- a/blog/2023/05/11/Geospatial-Indexing-in-Apache-Pinot/index.txt
+++ b/blog/2023/05/11/Geospatial-Indexing-in-Apache-Pinot/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2023/05/11/Geospatial-Indexing-in-Apache-Pinot","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"05\",\"11\",\"Geospatial-Indexing-in-Apache-Pinot\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precede [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2023/05/11/Geospatial-Indexing-in-Apache-Pinot","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"05\",\"11\",\"Geospatial-Indexing-in-Apache-Pinot\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precede [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -16,5 +16,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 13:I[7246,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 15:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Geospatial Indexing in Apache Pinot\",\"datePublished\":\"2023-05-11T00:00:00.000Z\",\"dateModified\":\"2023-05-11T00:00:00.000Z\",\"description\":\"This post will explore a new API endpoint that lets you check how much Pinot is lagging when ingesting from Apache Kafka.\",\"image\":\"/static/images/twitter-card.png\",\"url\ [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Geospatial Indexing in Apache Pinot\",\"datePublished\":\"2023-05-11T00:00:00.000Z\",\"dateModified\":\"2023-05-11T00:00:00.000Z\",\"description\":\"This post will explore a new API endpoint that lets you check how much Pinot is lagging when ingesting from Apache Kafka.\",\"image\":\"/static/images/twitter-card.png\",\"url\ [...]
 d:null
diff --git a/blog/2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance/index.html b/blog/2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance/index.html
index 6dc5bbd4..4744b39b 100644
--- a/blog/2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance/index.html
+++ b/blog/2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1684246698-image5.png"/><link rel="preload" as="image" hre [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1684246698-image5.png"/><link rel="preload" as=" [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -10,7 +10,7 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
 </span><span class="code-line">        <span class="token punctuation">{</span>
 </span><span class="code-line">          <span class="token property">&quot;dimensionsSplitOrder&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span>
 </span><span class="code-line">            <span class="token string">&quot;dropoff_date_str&quot;</span><span class="token punctuation">,</span>
@@ -36,7 +36,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">          <span class="token property">&quot;maxLeafRecords&quot;</span><span class="token operator">:</span> <span class="token number">10000</span>
 </span><span class="code-line">        <span class="token punctuation">}</span>
 </span><span class="code-line">      <span class="token punctuation">]</span>
-</span></code></pre></div><p>This one star-tree index can get us insights to questions such as:</p><ul><li>How many trips were completed in a given day, month or year?</li><li>How many passengers traveled in a given day, month or year?</li><li>What is the daily / monthly / annual average trip revenue?</li><li>What is the daily / monthly / annual average trip revenue, trip duration and distance traveled?</li><li>What is the daily / monthly / annual breakdown of total number of trips, tota [...]
+</span></code></pre></div><p>This one star-tree index can get us insights to questions such as:</p><ul><li>How many trips were completed in a given day, month or year?</li><li>How many passengers traveled in a given day, month or year?</li><li>What is the daily / monthly / annual average trip revenue?</li><li>What is the daily / monthly / annual average trip revenue, trip duration and distance traveled?</li><li>What is the daily / monthly / annual breakdown of total number of trips, tota [...]
 </span><span class="code-line">
 </span><span class="code-line"><span class="token keyword">SELECT</span>
 </span><span class="code-line">      toDateTime<span class="token punctuation">(</span>tpep_dropoff_datetime<span class="token operator">/</span><span class="token number">1000</span><span class="token punctuation">,</span> <span class="token string">&#x27;yyyy-MM-dd&#x27;</span><span class="token punctuation">)</span> <span class="token string">&quot;Date&quot;</span><span class="token punctuation">,</span>
@@ -70,7 +70,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">    <span class="token string">&quot;Date&quot;</span> <span class="token keyword">ASC</span>
 </span><span class="code-line"><span class="token keyword">limit</span> <span class="token number">1000</span>
 </span><span class="code-line"><span class="token keyword">option</span><span class="token punctuation">(</span>useStarTree<span class="token operator">=</span><span class="token boolean">false</span><span class="token punctuation">,</span> timeoutMs<span class="token operator">=</span><span class="token number">20000</span><span class="token punctuation">)</span>
-</span></code></pre></div><p><img alt="" src="https://www.datocms-assets.com/75153/1684246716-image1.png"/></p><p>Result: The query completed in 1,513 milliseconds. (~1.5s); from ~131s to ~1.5s was a BIG improvement. However, results still took more than a second — which is a relatively long time for an OLAP database, especially if it is faced with multiple concurrent queries.</p><h3 id="iteration-3-w-star-tree-index"><a href="#iteration-3-w-star-tree-index" aria-hidden="true" tabindex=" [...]
+</span></code></pre></div><p><img alt="" src="https://startree.ai/wp-content/uploads/2024/08/1684246716-image1.png"/></p><p>Result: The query completed in 1,513 milliseconds. (~1.5s); from ~131s to ~1.5s was a BIG improvement. However, results still took more than a second — which is a relatively long time for an OLAP database, especially if it is faced with multiple concurrent queries.</p><h3 id="iteration-3-w-star-tree-index"><a href="#iteration-3-w-star-tree-index" aria-hidden="true"  [...]
 </span><span class="code-line"><span class="token keyword">SELECT</span>
 </span><span class="code-line">      dropoff_date_str <span class="token string">&quot;Date&quot;</span><span class="token punctuation">,</span>
 </span><span class="code-line">      <span class="token function">count</span><span class="token punctuation">(</span><span class="token operator">*</span><span class="token punctuation">)</span> <span class="token string">&quot;Total # of Trips&quot;</span><span class="token punctuation">,</span>
@@ -87,4 +87,4 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">    <span class="token string">&quot;Date&quot;</span> <span class="token keyword">ASC</span>
 </span><span class="code-line"><span class="token keyword">limit</span> <span class="token number">1000</span>
 </span><span class="code-line"><span class="token keyword">option</span><span class="token punctuation">(</span>useStarTree<span class="token operator">=</span><span class="token boolean">true</span><span class="token punctuation">)</span>
-</span></code></pre></div><p><img alt="" src="https://www.datocms-assets.com/75153/1684246852-image9.png"/></p><p>Result: The query completed in 4 milliseconds! Notice in particular that the numDocsScanned came down from ~146M to 409!</p><h3 id="comparison"><a href="#comparison" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Comparison:</h3><p>Let’s take a closer look at the <a target="_blank" rel="noopener noreferrer" href="https://docs.pinot.apache.org/users/a [...]
\ No newline at end of file
+</span></code></pre></div><p><img alt="" src="https://startree.ai/wp-content/uploads/2024/08/1684246852-image9.png"/></p><p>Result: The query completed in 4 milliseconds! Notice in particular that the numDocsScanned came down from ~146M to 409!</p><h3 id="comparison"><a href="#comparison" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Comparison:</h3><p>Let’s take a closer look at the <a target="_blank" rel="noopener noreferrer" href="https://docs.pinot.apache.o [...]
\ No newline at end of file
diff --git a/blog/2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance/index.txt b/blog/2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance/index.txt
index 735901a8..3d7b95a5 100644
--- a/blog/2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance/index.txt
+++ b/blog/2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"05\",\"16\",\"star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOri [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"05\",\"16\",\"star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOri [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -15,5 +15,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 12:I[1514,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 13:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"StarTree Indexes in Apache Pinot Part-1 - Understanding the Impact on Query Performance\",\"datePublished\":\"2023-05-16T00:00:00.000Z\",\"dateModified\":\"2023-05-16T00:00:00.000Z\",\"description\":\"The blog post explains the star-tree index in Apache Pinot and its benefits compared to traditional materialized views. By i [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"StarTree Indexes in Apache Pinot Part-1 - Understanding the Impact on Query Performance\",\"datePublished\":\"2023-05-16T00:00:00.000Z\",\"dateModified\":\"2023-05-16T00:00:00.000Z\",\"description\":\"The blog post explains the star-tree index in Apache Pinot and its benefits compared to traditional materialized views. By i [...]
 d:null
diff --git a/blog/2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide/index.html b/blog/2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide/index.html
index d292c292..e873b802 100644
--- a/blog/2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide/index.html
+++ b/blog/2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1684419409-image7.png"/><link rel="preload" as="image" hre [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1684419409-image7.png"/><link rel="preload" as=" [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -10,15 +10,15 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
 </span></code></pre></div><p>You can also download the latest version like so:</p><div class="relative"><pre><code class="language-bash code-highlight"><span class="code-line"><span class="token function">docker</span> pull apachepinot.docker.scarf.sh/apachepinot/pinot:latest
 </span></code></pre></div><p>Here, apachepinot is the name of the repository in Docker Hub, pinot is the name of the image, and :latest or :0.12.0 is the version for the image.  Note that we will be using the 0.12.0 version for this blog post.</p><p><em>Docker Hub is the world’s largest repository of container images in the world.</em></p><p>You can verify the image was downloaded or pulled by running the following command:</p><div class="relative"><pre><code class="language-bash code-hi [...]
-</span></code></pre></div><p>It should show you the image like so:</p><p><img alt="Docker images command" src="https://www.datocms-assets.com/75153/1684420004-image3.png" title="Docker images command"/></p><h3 id="step-3"><a href="#step-3" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Step 3:</h3><p>Let’s run a container using the Docker image that we downloaded:</p><div class="relative"><pre><code class="language-bash code-highlight"><span class="code-line"><s [...]
-</span></code></pre></div><p><img alt="Running a container with downloaded Docker image" src="https://www.datocms-assets.com/75153/1684420103-image4.png" title="Running a container with downloaded Docker image"/></p><p>The docker run command runs the image. The -p 9000:00 option maps the docker container port 9000 to the local machine port 9000. This allows us to access the Pinot UI, which defaults to port 9000 to be accessible from the localhost. We are using the –entrypoint to override [...]
+</span></code></pre></div><p>It should show you the image like so:</p><p><img alt="Docker images command" src="https://startree.ai/wp-content/uploads/2024/08/1684420004-image3.png" title="Docker images command"/></p><h3 id="step-3"><a href="#step-3" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Step 3:</h3><p>Let’s run a container using the Docker image that we downloaded:</p><div class="relative"><pre><code class="language-bash code-highlight"><span class="cod [...]
+</span></code></pre></div><p><img alt="Running a container with downloaded Docker image" src="https://startree.ai/wp-content/uploads/2024/08/1684420103-image4.png" title="Running a container with downloaded Docker image"/></p><p>The docker run command runs the image. The -p 9000:00 option maps the docker container port 9000 to the local machine port 9000. This allows us to access the Pinot UI, which defaults to port 9000 to be accessible from the localhost. We are using the –entrypoint t [...]
 </span></code></pre></div><p>pinot-admin.sh is a shell script for starting the various components. The &amp; allows us to continue using the Bash shell. ZooKeeper is responsible for the configuration for the Pinot cluster and needs to be started first.</p><p>We can start the remaining components using these commands one at a time:</p><div class="relative"><pre><code class="language-bash code-highlight"><span class="code-line">./pinot-admin.sh StartController <span class="token operator"> [...]
 </span><span class="code-line">./pinot-admin.sh StartBroker <span class="token operator">&amp;</span>
 </span><span class="code-line">./pinot-admin.sh StartServer <span class="token operator">&amp;</span>
-</span></code></pre></div><p>The controller controls the cluster health and coordinates with ZooKeeper for configuration and status changes. The broker is responsible for query distribution and result collation, sometimes called Scatter-Gather. Servers manage individual table segments and perform the actual read/writes. To get a better understanding of each component, read this <a target="_blank" rel="noopener noreferrer" href="https://startree.ai/blog/introduction-to-apache-pinot-a-begi [...]
+</span></code></pre></div><p>The controller controls the cluster health and coordinates with ZooKeeper for configuration and status changes. The broker is responsible for query distribution and result collation, sometimes called Scatter-Gather. Servers manage individual table segments and perform the actual read/writes. To get a better understanding of each component, read this <a target="_blank" rel="noopener noreferrer" href="https://startree.ai/blog/introduction-to-apache-pinot-a-begi [...]
 </span></code></pre></div><p>You will notice that there are the following files listed here:</p><div class="relative"><pre><code class="code-highlight language-js"><span class="code-line">baseballStats_offline_table_config<span class="token punctuation">.</span><span class="token property-access">json</span>
 </span><span class="code-line">baseballStats_schema<span class="token punctuation">.</span><span class="token property-access">json</span>
 </span><span class="code-line">ingestionJobSpec<span class="token punctuation">.</span><span class="token property-access">yaml</span>
@@ -50,8 +50,8 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line"> <span class="token property">&quot;schemaName&quot;</span><span class="token operator">:</span> <span class="token string">&quot;baseballStats&quot;</span>
 </span><span class="code-line"><span class="token punctuation">}</span>
 </span></code></pre></div><p>To create a schema and table for the baseball stats file, run the following command from the /app/pinot/bin folder:</p><div class="relative"><pre><code class="language-bash code-highlight"><span class="code-line">./pinot-admin.sh AddTable <span class="token parameter variable">-schemaFile</span> /opt/pinot/examples/batch/baseballStats/baseballStats_schema.json <span class="token parameter variable">-tableConfigFile</span> /opt/pinot/examples/batch/baseballSta [...]
-</span></code></pre></div><p>You should now see the schema and table created:</p><p><img alt="Apache Pinot tables created" src="https://www.datocms-assets.com/75153/1684421406-image12.png" title="Apache Pinot tables created"/></p><p>Next, we’ll want to load some data into the table that we created. We have some sample data in the folder rawdata that we can use to load. We will need a YAML file to perform the actual ingestion job and can use the following command to import data:</p><div c [...]
+</span></code></pre></div><p>You should now see the schema and table created:</p><p><img alt="Apache Pinot tables created" src="https://startree.ai/wp-content/uploads/2024/08/1684421406-image12.png" title="Apache Pinot tables created"/></p><p>Next, we’ll want to load some data into the table that we created. We have some sample data in the folder rawdata that we can use to load. We will need a YAML file to perform the actual ingestion job and can use the following command to import data: [...]
 </span><span class="code-line">
-</span></code></pre></div><p>If you run into trouble on this step like I did, edit the ingestJobSpec.yaml file using Docker Desktop to change the inputDirURI from relative to absolute path. Then rerun the above command.</p><p><img alt="Editing the .yaml file with Docker Desktop" src="https://www.datocms-assets.com/75153/1684419802-image1.png" title="Editing the .yaml file with Docker Desktop"/></p><p>You should now be able to see the table has been populated like so:</p><p><img alt="Apac [...]
+</span></code></pre></div><p>If you run into trouble on this step like I did, edit the ingestJobSpec.yaml file using Docker Desktop to change the inputDirURI from relative to absolute path. Then rerun the above command.</p><p><img alt="Editing the .yaml file with Docker Desktop" src="https://startree.ai/wp-content/uploads/2024/08/1684419802-image1.png" title="Editing the .yaml file with Docker Desktop"/></p><p>You should now be able to see the table has been populated like so:</p><p><img [...]
 </span><span class="code-line"><span class="token keyword">select</span> <span class="token function">sum</span><span class="token punctuation">(</span>runs<span class="token punctuation">)</span><span class="token punctuation">,</span> playerName <span class="token keyword">from</span> baseballStats <span class="token keyword">group</span> <span class="token keyword">by</span> playerName <span class="token keyword">order</span> <span class="token keyword">by</span> <span class="token fu [...]
-</span></code></pre></div><p>You should see results like so:</p><p><img alt="Apache Pinot query console" src="https://www.datocms-assets.com/75153/1684421163-image6.png" title="Apache Pinot query console"/></p><p>And there you have it!</p><h2 id="whats-under-the-hood"><a href="#whats-under-the-hood" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>What’s under the hood?</h2><p>If you’re curious to go a step further and see what the segments look like and what the  [...]
\ No newline at end of file
+</span></code></pre></div><p>You should see results like so:</p><p><img alt="Apache Pinot query console" src="https://startree.ai/wp-content/uploads/2024/08/1684421163-image6.png" title="Apache Pinot query console"/></p><p>And there you have it!</p><h2 id="whats-under-the-hood"><a href="#whats-under-the-hood" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>What’s under the hood?</h2><p>If you’re curious to go a step further and see what the segments look like and [...]
\ No newline at end of file
diff --git a/blog/2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide/index.txt b/blog/2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide/index.txt
index 9e56a83f..3938e77a 100644
--- a/blog/2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide/index.txt
+++ b/blog/2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"05\",\"18\",\"apache-pinot-tutorial-for-getting-started-a-step-by-step-guide\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","h [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"05\",\"18\",\"apache-pinot-tutorial-for-getting-started-a-step-by-step-guide\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","h [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -15,5 +15,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 12:I[1514,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 13:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot Tutorial for Getting Started - A Step-by-Step Guide\",\"datePublished\":\"2023-05-18T00:00:00.000Z\",\"dateModified\":\"2023-05-18T00:00:00.000Z\",\"description\":\"This blog post is a guide to getting started with Apache Pinot, including installing and running the necessary components of a Pinot cluster. It al [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Apache Pinot Tutorial for Getting Started - A Step-by-Step Guide\",\"datePublished\":\"2023-05-18T00:00:00.000Z\",\"dateModified\":\"2023-05-18T00:00:00.000Z\",\"description\":\"This blog post is a guide to getting started with Apache Pinot, including installing and running the necessary components of a Pinot cluster. It al [...]
 d:null
diff --git a/blog/2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work/index.html b/blog/2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work/index.html
index dbee2ff7..12ca101b 100644
--- a/blog/2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work/index.html
+++ b/blog/2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1684857872-image3.png"/><link rel="preload" as="image" hre [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1684857872-image3.png"/><link rel="preload" as=" [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -10,7 +10,7 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
 </span><span class="code-line">  <span class="token property">&quot;schema&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>...<span class="token punctuation">}</span><span class="token punctuation">,</span>
 </span><span class="code-line">  <span class="token property">&quot;payload&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
 </span><span class="code-line">    <span class="token property">&quot;before&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
@@ -93,5 +93,5 @@ _paq.push(['enableLinkTracking']);
 </span></code></pre></div><p>You may have an alternative schema depending on your use case. You don’t need any of the fields I preserved. If at the end you only want the latest version, you can do that easily by only preserving the columns that matter to you.</p><h2 id="materialized-views"><a href="#materialized-views" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Materialized Views</h2><p>When looking up your record in Pinot, you only need to provide a WHERE c [...]
 </span><span class="code-line">    <span class="token property">&quot;primaryKeyColumns&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">&quot;user_id&quot;</span><span class="token punctuation">]</span>
 </span><span class="code-line"><span class="token punctuation">}</span>
-</span></code></pre></div><p>You can further configure the behavior of the upsert to allow for different behaviors: FULL or PARTIAL.</p><p>A FULL upsert means that a new record will replace the older record completely if they share the same primary key.</p><p>PARTIAL only allows updates to specific columns and employs additional strategies.</p><p><img alt="Table describing the strategy and descriptions of stream ingestion with upsert" src="https://www.datocms-assets.com/75153/1684857317- [...]
-</span></code></pre></div><p>Upsert simplifies client queries in an extremely powerful way. More importantly, upsert assures the accuracy of any aggregations applied to updated columns, which proves especially important when the analytics lead to critical decisions.</p><h2 id="summary"><a href="#summary" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Summary</h2><p>Change data capture is the best way to capture changes in a database. Other options require compar [...]
\ No newline at end of file
+</span></code></pre></div><p>You can further configure the behavior of the upsert to allow for different behaviors: FULL or PARTIAL.</p><p>A FULL upsert means that a new record will replace the older record completely if they share the same primary key.</p><p>PARTIAL only allows updates to specific columns and employs additional strategies.</p><p><img alt="Table describing the strategy and descriptions of stream ingestion with upsert" src="https://startree.ai/wp-content/uploads/2024/08/1 [...]
+</span></code></pre></div><p>Upsert simplifies client queries in an extremely powerful way. More importantly, upsert assures the accuracy of any aggregations applied to updated columns, which proves especially important when the analytics lead to critical decisions.</p><h2 id="summary"><a href="#summary" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Summary</h2><p>Change data capture is the best way to capture changes in a database. Other options require compar [...]
\ No newline at end of file
diff --git a/blog/2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work/index.txt b/blog/2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work/index.txt
index df5343d2..4a6efefe 100644
--- a/blog/2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work/index.txt
+++ b/blog/2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"05\",\"23\",\"change-data-capture-with-apache-pinot-how-does-it-work\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/sta [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"05\",\"23\",\"change-data-capture-with-apache-pinot-how-does-it-work\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/sta [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -15,5 +15,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 12:I[1514,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 13:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Change Data Capture with Apache Pinot - How Does It Work?\",\"datePublished\":\"2023-05-23T00:00:00.000Z\",\"dateModified\":\"2023-05-23T00:00:00.000Z\",\"description\":\"This blog post discusses the use of Change Data Capture (CDC) in Apache Pinot and the data format used in Debezium for efficient querying and analytics. I [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Change Data Capture with Apache Pinot - How Does It Work?\",\"datePublished\":\"2023-05-23T00:00:00.000Z\",\"dateModified\":\"2023-05-23T00:00:00.000Z\",\"description\":\"This blog post discusses the use of Change Data Capture (CDC) in Apache Pinot and the data format used in Debezium for efficient querying and analytics. I [...]
 d:null
diff --git a/blog/2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot/index.html b/blog/2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot/index.html
index e6b1af2a..f78a04c0 100644
--- a/blog/2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot/index.html
+++ b/blog/2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1685462020-image1.png"/><link rel="preload" as="image" hre [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1685462020-image1.png"/><link rel="preload" as=" [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -10,14 +10,14 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
 </span><span class="code-line"><span class="token function">curl</span> https://downloads.apache.org/kafka/3.4.0/kafka_2.12-3.4.0.tgz <span class="token parameter variable">--output</span> kafka.tgz <span class="token parameter variable">--output</span> kafka.tgz
-</span></code></pre></div><p>It should look this:</p><p><img alt="Code with Apache Pinot speed results" src="https://www.datocms-assets.com/75153/1685462322-image8.png" title="Code with Apache Pinot speed results"/></p><p>Note that we’ve changed the directory to keep the Kafka folder separate from the Pinot folder.</p><p>Now, let’s expand the downloaded TAR file, rename the folder for convenience, and delete the downloaded file:</p><div class="relative"><pre><code class="language-bash co [...]
+</span></code></pre></div><p>It should look this:</p><p><img alt="Code with Apache Pinot speed results" src="https://startree.ai/wp-content/uploads/2024/08/1685462322-image8.png" title="Code with Apache Pinot speed results"/></p><p>Note that we’ve changed the directory to keep the Kafka folder separate from the Pinot folder.</p><p>Now, let’s expand the downloaded TAR file, rename the folder for convenience, and delete the downloaded file:</p><div class="relative"><pre><code class="langua [...]
 </span><span class="code-line"><span class="token function">mv</span> kafka_2.12-3.4.0 kafka
 </span><span class="code-line"><span class="token function">rm</span> <span class="token parameter variable">-rf</span> kafka.tgz
-</span></code></pre></div><p>It should look like this:</p><p><img alt="Code with Apache Kafka" src="https://www.datocms-assets.com/75153/1685462061-image2.png" title="Code with Apache Kafka"/></p><p><img alt="Code with kafka version" src="https://www.datocms-assets.com/75153/1685462480-image12.png" title="Code with kafka version"/></p><p>Now, Kafka and Pinot reside locally on our Docker container with Pinot up and running. Let’s run the Kafka service. Kafka will use the existing ZooKeepe [...]
+</span></code></pre></div><p>It should look like this:</p><p><img alt="Code with Apache Kafka" src="https://startree.ai/wp-content/uploads/2024/08/1685462061-image2.png" title="Code with Apache Kafka"/></p><p><img alt="Code with kafka version" src="https://startree.ai/wp-content/uploads/2024/08/1685462480-image12.png" title="Code with kafka version"/></p><p>Now, Kafka and Pinot reside locally on our Docker container with Pinot up and running. Let’s run the Kafka service. Kafka will use t [...]
 </span><span class="code-line">./bin/kafka-server-start.sh config/server.properties
-</span></code></pre></div><p>It should look like this:</p><p><img alt="Code with cd kafka" src="https://www.datocms-assets.com/75153/1685462400-image10.png" title="Code with cd kafka"/></p><p>To verify that Kafka is running, let’s look at our ZooKeeper configs by browsing to <a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/#/zookeeper">http://localhost:9000/#/zookeeper:</a></p><p><img alt="Zookeeper Browser" src="https://www.datocms-assets.com/75153/1685462099-ima [...]
+</span></code></pre></div><p>It should look like this:</p><p><img alt="Code with cd kafka" src="https://startree.ai/wp-content/uploads/2024/08/1685462400-image10.png" title="Code with cd kafka"/></p><p>To verify that Kafka is running, let’s look at our ZooKeeper configs by browsing to <a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/#/zookeeper">http://localhost:9000/#/zookeeper:</a></p><p><img alt="Zookeeper Browser" src="https://startree.ai/wp-content/uploads/20 [...]
 </span><span class="code-line"><span class="token function">apt</span> <span class="token function">install</span> nodejs
 </span></code></pre></div><p>Node.js takes a few minutes to install. Next, we will create a script to consume the events called wikievents.js. Cut and paste the following code to this file:</p><div class="relative"><pre><code class="code-highlight language-javascript"><span class="code-line"><span class="token keyword">var</span> <span class="token maybe-class-name">EventSource</span> <span class="token operator">=</span> <span class="token function">require</span><span class="token punc [...]
 </span><span class="code-line"><span class="token keyword">var</span> fs <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">&#x27;fs&#x27;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
@@ -70,7 +70,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line"><span class="token function">start</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
 </span></code></pre></div><p>You can use vi to create the file and save it. You can also use Docker Desktop to edit the file.</p><p>To install the two modules referenced in the file above, kafkajs and eventsource, run the following command:</p><div class="relative"><pre><code class="language-bash code-highlight"><span class="code-line"><span class="token function">npm</span> i eventsource kafkajs
 </span></code></pre></div><p>Let’s run the program. This will result in the download of many files, so I recommend running the program for just a few minutes. You can stop the run by using Ctrl-C.</p><div class="relative"><pre><code class="language-bash code-highlight"><span class="code-line"><span class="token function">node</span> wikievents.js
-</span></code></pre></div><p>Use Ctrl-C to stop the program. Navigate to the events folder to see some new folders created with the various language events downloaded from Wikipedia.</p><p><img alt="Wikievents node in code" src="https://www.datocms-assets.com/75153/1685462366-image9.png" title="Wikievents node in code"/></p><p>Navigate to the enwiki folder and review some of the downloaded JSON files.</p><p><img alt="Code with realtime wikievents" src="https://www.datocms-assets.com/7515 [...]
+</span></code></pre></div><p>Use Ctrl-C to stop the program. Navigate to the events folder to see some new folders created with the various language events downloaded from Wikipedia.</p><p><img alt="Wikievents node in code" src="https://startree.ai/wp-content/uploads/2024/08/1685462366-image9.png" title="Wikievents node in code"/></p><p>Navigate to the enwiki folder and review some of the downloaded JSON files.</p><p><img alt="Code with realtime wikievents" src="https://startree.ai/wp-co [...]
 </span><span class="code-line">    <span class="token property">&quot;schemaName&quot;</span><span class="token operator">:</span> <span class="token string">&quot;wikievents&quot;</span><span class="token punctuation">,</span>
 </span><span class="code-line">    <span class="token property">&quot;dimensionFieldSpecs&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span>
 </span><span class="code-line">        <span class="token punctuation">{</span>
@@ -196,4 +196,4 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">    <span class="token property">&quot;isDimTable&quot;</span><span class="token operator">:</span> <span class="token boolean">false</span>
 </span><span class="code-line"><span class="token punctuation">}</span>
 </span></code></pre></div><p>Notice the section called streamConfigs, where we define the source as a Kafka stream, located at localhost:9092, and consume the topic wikipedia-events. That’s all it takes to consume a Kafka Topic into Pinot.</p><p>Don’t believe me? Give it a try!</p><p>Create the table by running the following command:</p><div class="relative"><pre><code class="language-bash code-highlight"><span class="code-line">/opt/pinot/bin/pinot-admin.sh AddTable <span class="token p [...]
-</span></code></pre></div><p>Now, browse to the following location <a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/#/tables">http://localhost:9000/#/tables,</a> and you should see the newly created table. However, where’s the real-time data, you say?</p><p>Run the node wikievents.js command, then query the newly created wikievents table to see the totalDocs increase in real time:</p><p><img alt="Apache Pinot query console" src="https://www.datocms-assets.com/7515 [...]
\ No newline at end of file
+</span></code></pre></div><p>Now, browse to the following location <a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/#/tables">http://localhost:9000/#/tables,</a> and you should see the newly created table. However, where’s the real-time data, you say?</p><p>Run the node wikievents.js command, then query the newly created wikievents table to see the totalDocs increase in real time:</p><p><img alt="Apache Pinot query console" src="https://startree.ai/wp-content/uplo [...]
\ No newline at end of file
diff --git a/blog/2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot/index.txt b/blog/2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot/index.txt
index dcb30eef..9ef7dcc2 100644
--- a/blog/2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot/index.txt
+++ b/blog/2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"05\",\"30\",\"how-to-ingest-streaming-data-from-kafka-to-apache-pinot\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/s [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"05\",\"30\",\"how-to-ingest-streaming-data-from-kafka-to-apache-pinot\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/s [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -15,5 +15,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 12:I[1514,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 13:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"How to Ingest Streaming Data from Kafka to Apache Pinot™\",\"datePublished\":\"2022-05-30T00:00:00.000Z\",\"dateModified\":\"2022-05-30T00:00:00.000Z\",\"description\":\"The blog post explains how to use Apache Kafka topics in Apache Pinot to ingest streaming data, with step-by-step instructions provided for installation an [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"How to Ingest Streaming Data from Kafka to Apache Pinot™\",\"datePublished\":\"2022-05-30T00:00:00.000Z\",\"dateModified\":\"2022-05-30T00:00:00.000Z\",\"description\":\"The blog post explains how to use Apache Kafka topics in Apache Pinot to ingest streaming data, with step-by-step instructions provided for installation an [...]
 d:null
diff --git a/blog/2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit/index.html b/blog/2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit/index.html
index 08efd7b7..7566494e 100644
--- a/blog/2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit/index.html
+++ b/blog/2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1685637607-image1.png"/><link rel="preload" as="image" hre [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1685637607-image1.png"/><link rel="preload" as=" [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -10,7 +10,7 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
 </span><span class="code-line"><span class="token builtin class-name">cd</span> mastodon-stream
 </span></code></pre></div><p>Then launch all of the components using Docker Compose:</p><div class="relative"><pre><code class="code-highlight language-bash"><span class="code-line"><span class="token function">docker-compose</span> up
 </span></code></pre></div><h2 id="pinot-schema-and-table"><a href="#pinot-schema-and-table" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Pinot Schema and Table</h2><p>Similar to what Simon did with DuckDB, we’ll ingest the Mastodon events into a table. Pinot tables have a schema that’s defined in a schema file.</p><p>To come up with a schema file, we need to know the structure of the ingested events. For example:</p><div class="relative"><pre><code class="code [...]
@@ -101,7 +101,7 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">     <span class="token variable parameter">-tableConfigFile</span> /config/table.json <span class="token punctuation">\</span>
 </span><span class="code-line">     <span class="token variable parameter">-controllerHost</span> <span class="token string">&quot;pinot-controller&quot;</span> <span class="token punctuation">\</span>
 </span><span class="code-line">    <span class="token variable parameter">-exec</span>
-</span></code></pre></div><p>We can then navigate to the table page of the Pinot UI:</p><p><a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/#/tenants/table/mastodon_REALTIME">http://localhost:9000/#/tenants/table/mastodon_REALTIME</a></p><p>Here, we’ll see the following:</p><p><img alt="Apache Pinot table config and schema" src="https://www.datocms-assets.com/75153/1685637837-image6.png" title="Apache Pinot table config and schema"/></p><h2 id="ingest-data-into-ka [...]
+</span></code></pre></div><p>We can then navigate to the table page of the Pinot UI:</p><p><a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/#/tenants/table/mastodon_REALTIME">http://localhost:9000/#/tenants/table/mastodon_REALTIME</a></p><p>Here, we’ll see the following:</p><p><img alt="Apache Pinot table config and schema" src="https://startree.ai/wp-content/uploads/2024/08/1685637837-image6.png" title="Apache Pinot table config and schema"/></p><h2 id="ingest-da [...]
 </span><span class="code-line">  <span class="token variable parameter">--public</span> <span class="token variable parameter">--enableKafka</span> <span class="token variable parameter">--quiet</span>
 </span><span class="code-line">python mastodonlisten.py <span class="token variable parameter">--baseURL</span> https://fosstodon.org/ <span class="token punctuation">\</span>
 </span><span class="code-line">  <span class="token variable parameter">--public</span> <span class="token variable parameter">--enableKafka</span> <span class="token variable parameter">--quiet</span>
@@ -109,13 +109,13 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">  <span class="token variable parameter">--public</span> <span class="token variable parameter">--enableKafka</span> <span class="token variable parameter">--quiet</span>
 </span></code></pre></div><p>We can then check the ingestion of messages with the <a target="_blank" rel="noopener noreferrer" href="https://docs.confluent.io/platform/current/clients/kafkacat-usage.html">kcat</a> command line tool:</p><div class="relative"><pre><code class="code-highlight language-bash"><span class="code-line">kcat <span class="token variable parameter">-C</span> <span class="token variable parameter">-b</span> localhost:9092 <span class="token variable parameter">-t</s [...]
 </span><span class="code-line">  <span class="token variable parameter">-s</span> <span class="token variable assign-left">value</span><span class="token operator">=</span>avro <span class="token variable parameter">-r</span> http://localhost:8081 <span class="token variable parameter">-e</span>
-</span></code></pre></div><h2 id="query-pinot"><a href="#query-pinot" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Query Pinot</h2><p>Now, let’s go to the Pinot UI to see what data we’ve got to play with:</p><p><a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/">http://localhost:9000</a></p><p>We’ll see the following preview of the data in the mastodon table:</p><p><img alt="SQL Editor, query response stats, and query result in Apache Pi [...]
+</span></code></pre></div><h2 id="query-pinot"><a href="#query-pinot" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Query Pinot</h2><p>Now, let’s go to the Pinot UI to see what data we’ve got to play with:</p><p><a target="_blank" rel="noopener noreferrer" href="http://localhost:9000/">http://localhost:9000</a></p><p>We’ll see the following preview of the data in the mastodon table:</p><p><img alt="SQL Editor, query response stats, and query result in Apache Pi [...]
 </span><span class="code-line"><span class="token punctuation">,</span> <span class="token function">count</span><span class="token punctuation">(</span><span class="token keyword">distinct</span><span class="token punctuation">(</span>username<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token string">&quot;Num users&quot;</span>
 </span><span class="code-line"><span class="token punctuation">,</span> <span class="token function">count</span><span class="token punctuation">(</span><span class="token keyword">distinct</span><span class="token punctuation">(</span>url<span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token string">&quot;Num urls&quot;</span>
 </span><span class="code-line"><span class="token keyword">from</span> mastodon
 </span><span class="code-line"><span class="token keyword">where</span> created_at<span class="token operator">*</span><span class="token number">1000</span> <span class="token operator">&gt;</span> ago<span class="token punctuation">(</span><span class="token string">&#x27;PT1M&#x27;</span><span class="token punctuation">)</span>
 </span><span class="code-line"><span class="token keyword">order</span> <span class="token keyword">by</span> <span class="token number">1</span> <span class="token keyword">DESC</span><span class="token punctuation">;</span>
-</span></code></pre></div><p><img alt="Query results for toots, users, and urls" src="https://www.datocms-assets.com/75153/1685637909-image8.png" title="Query results for toots, users, and urls"/></p><p>We can also query Pinot via the Python client, which we can install by running the following:</p><div class="relative"><pre><code class="code-highlight language-bash"><span class="code-line">pip <span class="token function">install</span> pinotdb
+</span></code></pre></div><p><img alt="Query results for toots, users, and urls" src="https://startree.ai/wp-content/uploads/2024/08/1685637909-image8.png" title="Query results for toots, users, and urls"/></p><p>We can also query Pinot via the Python client, which we can install by running the following:</p><div class="relative"><pre><code class="code-highlight language-bash"><span class="code-line">pip <span class="token function">install</span> pinotdb
 </span></code></pre></div><p>Once we’ve done that, let’s open the Python REPL and run the following code:</p><div class="relative"><pre><code class="code-highlight language-python"><span class="code-line"><span class="token keyword">from</span> pinotdb <span class="token keyword">import</span> connect
 </span><span class="code-line"><span class="token keyword">import</span> pandas <span class="token keyword">as</span> pd
 </span><span class="code-line">
@@ -137,4 +137,4 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">df <span class="token operator">=</span> pd<span class="token punctuation">.</span>DataFrame<span class="token punctuation">(</span>curs<span class="token punctuation">,</span> columns<span class="token operator">=</span><span class="token punctuation">[</span>item<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span> <span class="token keyword">for</span> item <span class="token keyword">in</span [...]
 </span></code></pre></div><p>This produces the resulting DataFrame:</p><div class="relative"><pre><code class="code-highlight language-js"><span class="code-line">   <span class="token maybe-class-name">Num</span> toots  <span class="token maybe-class-name">Num</span> users  <span class="token maybe-class-name">Num</span> urls
 </span><span class="code-line"><span class="token number">0</span>        <span class="token number">552</span>        <span class="token number">173</span>       <span class="token number">192</span>
-</span></code></pre></div><h2 id="streamlit"><a href="#streamlit" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Streamlit</h2><p>Next, we’ll create a Streamlit dashboard to package up these queries. We’ll visualize the results using Plotly, which you can install using:</p><p>pip install streamlit plotly</p><p>I’ve created a Streamlit app in the file <a target="_blank" rel="noopener noreferrer" href="https://github.com/mneedham/mastodon-stream/blob/main/app.py"> [...]
\ No newline at end of file
+</span></code></pre></div><h2 id="streamlit"><a href="#streamlit" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a>Streamlit</h2><p>Next, we’ll create a Streamlit dashboard to package up these queries. We’ll visualize the results using Plotly, which you can install using:</p><p>pip install streamlit plotly</p><p>I’ve created a Streamlit app in the file <a target="_blank" rel="noopener noreferrer" href="https://github.com/mneedham/mastodon-stream/blob/main/app.py"> [...]
\ No newline at end of file
diff --git a/blog/2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit/index.txt b/blog/2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit/index.txt
index 463772e7..e415241d 100644
--- a/blog/2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit/index.txt
+++ b/blog/2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"06\",\"01\",\"real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":" [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"06\",\"01\",\"real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":" [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -15,5 +15,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 12:I[1514,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 13:I[2529,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 14:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Real-Time Mastodon Usage with Apache Kafka, Apache Pinot, and Streamlit\",\"datePublished\":\"2023-06-01T00:00:00.000Z\",\"dateModified\":\"2023-06-01T00:00:00.000Z\",\"description\":\"The blog post discusses analyzing user activity and server popularity on Mastodon using Kafka Connect, Parquet, Seaborn, and DuckDB. It expl [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Real-Time Mastodon Usage with Apache Kafka, Apache Pinot, and Streamlit\",\"datePublished\":\"2023-06-01T00:00:00.000Z\",\"dateModified\":\"2023-06-01T00:00:00.000Z\",\"description\":\"The blog post discusses analyzing user activity and server popularity on Mastodon using Kafka Connect, Parquet, Seaborn, and DuckDB. It expl [...]
 d:null
diff --git a/blog/2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer/index.html b/blog/2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer/index.html
index e5a984c7..af79a530 100644
--- a/blog/2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer/index.html
+++ b/blog/2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://www.datocms-assets.com/75153/1689174701-image1.png"/><link rel="preload" as="image" hre [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="https://startree.ai/wp-content/uploads/2024/08/1689174701-image1.png"/><link rel="preload" as=" [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer/index.txt b/blog/2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer/index.txt
index 5999552f..c37ec643 100644
--- a/blog/2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer/index.txt
+++ b/blog/2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"07\",\"12\",\"star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],[" [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"07\",\"12\",\"star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],[" [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
@@ -14,5 +14,5 @@ f:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14
 5:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Star-Tree Index in Apache Pinot - Part 3 - Understanding the Impact in Real Customer Scenarios | Apache Pinot™"}],["$","meta","3",{"name":"description","content":"The blog post discusses how implementing a star-tree index significantly improved query performance for an AdTech platform by reducing latency. This index has also been succe [...]
 12:I[1514,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
 13:I[5185,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","797","static/chunks/app/blog/%5B...slug%5D/page-235a7c29806ad573.js"],""]
-e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Star-Tree Index in Apache Pinot - Part 3 - Understanding the Impact in Real Customer Scenarios\",\"datePublished\":\"2023-07-12T00:00:00.000Z\",\"dateModified\":\"2023-07-12T00:00:00.000Z\",\"description\":\"The blog post discusses how implementing a star-tree index significantly improved query performance for an AdTech pla [...]
+e:[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Star-Tree Index in Apache Pinot - Part 3 - Understanding the Impact in Real Customer Scenarios\",\"datePublished\":\"2023-07-12T00:00:00.000Z\",\"dateModified\":\"2023-07-12T00:00:00.000Z\",\"description\":\"The blog post discusses how implementing a star-tree index significantly improved query performance for an AdTech pla [...]
 d:null
diff --git a/blog/2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077/index.html b/blog/2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077/index.html
index dbfeda1c..6b168e3e 100644
--- a/blog/2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077/index.html
+++ b/blog/2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077/index.html
@@ -20,4 +20,4 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">    <span class="token punctuation">}</span>
 </span><span class="code-line">  <span class="token punctuation">}</span>
 </span><span class="code-line"><span class="token punctuation">}</span>
-</span></code></pre></div><p>All the configs above (excluding schedule) determine which completed segments are selected for compaction.</p><p>bufferTimePeriod is the amount of time that has elapsed since the segment was consuming. In the example above, this has been set to “7d” which means that any segment that was completed over 7 days ago may be eligible for compaction. However, if you want to ensure that segments are compacted without any additional delay this config can be set to “0d [...]
\ No newline at end of file
+</span></code></pre></div><p>All the configs above (excluding schedule) determine which completed segments are selected for compaction.</p><p>bufferTimePeriod is the amount of time that has elapsed since the segment was consuming. In the example above, this has been set to “7d” which means that any segment that was completed over 7 days ago may be eligible for compaction. However, if you want to ensure that segments are compacted without any additional delay this config can be set to “0d [...]
\ No newline at end of file
diff --git a/blog/2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077/index.txt b/blog/2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077/index.txt
index 49211541..df1f3a10 100644
--- a/blog/2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077/index.txt
+++ b/blog/2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"08\",\"04\",\"segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1", [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2023/08/04/segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"08\",\"04\",\"segment-compaction-for-upsert-enabled-tables-in-apache-pinot-3f30657aa077\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1", [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2023/09/19/Annoucing-Apache-Pinot-1-0/index.html b/blog/2023/09/19/Annoucing-Apache-Pinot-1-0/index.html
index df4398cc..c988953c 100644
--- a/blog/2023/09/19/Annoucing-Apache-Pinot-1-0/index.html
+++ b/blog/2023/09/19/Annoucing-Apache-Pinot-1-0/index.html
@@ -47,4 +47,4 @@ _paq.push(['enableLinkTracking']);
 </span><span class="code-line">        <span class="token punctuation">}</span>
 </span><span class="code-line">    <span class="token punctuation">}</span>
 </span><span class="code-line"><span class="token punctuation">}</span>
-</span></code></pre></div><p><code>&lt;field-names-1 and 2&gt;</code> are a comma-separated list of fields you wish to encode with CLP.</p><p>You can read the design <a target="_blank" rel="noopener noreferrer" href="https://docs.google.com/document/d/1nHZb37re4mUwEA258x3a2pgX13EWLWMJ0uLEDk1dUyU/edit">document</a> for more details into why and how this feature was implemented.</p><h2 id="summary"><a href="#summary" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a> [...]
\ No newline at end of file
+</span></code></pre></div><p><code>&lt;field-names-1 and 2&gt;</code> are a comma-separated list of fields you wish to encode with CLP.</p><p>You can read the design <a target="_blank" rel="noopener noreferrer" href="https://docs.google.com/document/d/1nHZb37re4mUwEA258x3a2pgX13EWLWMJ0uLEDk1dUyU/edit">document</a> for more details into why and how this feature was implemented.</p><h2 id="summary"><a href="#summary" aria-hidden="true" tabindex="-1"><span class="icon icon-link"></span></a> [...]
\ No newline at end of file
diff --git a/blog/2023/09/19/Annoucing-Apache-Pinot-1-0/index.txt b/blog/2023/09/19/Annoucing-Apache-Pinot-1-0/index.txt
index a6b01cd8..8150d83e 100644
--- a/blog/2023/09/19/Annoucing-Apache-Pinot-1-0/index.txt
+++ b/blog/2023/09/19/Annoucing-Apache-Pinot-1-0/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2023/09/19/Annoucing-Apache-Pinot-1-0","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"09\",\"19\",\"Annoucing-Apache-Pinot-1-0\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","cross [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2023/09/19/Annoucing-Apache-Pinot-1-0","c"],{"children":["__PAGE__?{\"slug\":[\"2023\",\"09\",\"19\",\"Annoucing-Apache-Pinot-1-0\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","cross [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2024/08/07/AWSxPinot/index.html b/blog/2024/08/07/AWSxPinot/index.html
index aa031bd9..fde0147f 100644
--- a/blog/2024/08/07/AWSxPinot/index.html
+++ b/blog/2024/08/07/AWSxPinot/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2024/08/07/AWSxPinot/index.txt b/blog/2024/08/07/AWSxPinot/index.txt
index df4e4728..599a9f71 100644
--- a/blog/2024/08/07/AWSxPinot/index.txt
+++ b/blog/2024/08/07/AWSxPinot/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2024/08/07/AWSxPinot","c"],{"children":["__PAGE__?{\"slug\":[\"2024\",\"08\",\"07\",\"AWSxPinot\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2024/08/07/AWSxPinot","c"],{"children":["__PAGE__?{\"slug\":[\"2024\",\"08\",\"07\",\"AWSxPinot\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2024/09/02/the-power-of-apache-pinot-why-i-chose-it-for-real-time-analytics/index.html b/blog/2024/09/02/the-power-of-apache-pinot-why-i-chose-it-for-real-time-analytics/index.html
index 736fbb48..da96a645 100644
--- a/blog/2024/09/02/the-power-of-apache-pinot-why-i-chose-it-for-real-time-analytics/index.html
+++ b/blog/2024/09/02/the-power-of-apache-pinot-why-i-chose-it-for-real-time-analytics/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2024/09/02/the-power-of-apache-pinot-why-i-chose-it-for-real-time-analytics/index.txt b/blog/2024/09/02/the-power-of-apache-pinot-why-i-chose-it-for-real-time-analytics/index.txt
index ca9b1b48..fd8a17d6 100644
--- a/blog/2024/09/02/the-power-of-apache-pinot-why-i-chose-it-for-real-time-analytics/index.txt
+++ b/blog/2024/09/02/the-power-of-apache-pinot-why-i-chose-it-for-real-time-analytics/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2024/09/02/the-power-of-apache-pinot-why-i-chose-it-for-real-time-analytics","c"],{"children":["__PAGE__?{\"slug\":[\"2024\",\"09\",\"02\",\"the-power-of-apache-pinot-why-i-chose-it-for-real-time-analytics\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2024/09/02/the-power-of-apache-pinot-why-i-chose-it-for-real-time-analytics","c"],{"children":["__PAGE__?{\"slug\":[\"2024\",\"09\",\"02\",\"the-power-of-apache-pinot-why-i-chose-it-for-real-time-analytics\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2024/09/03/pinot-for-low-latency-offline-table-analytics/index.html b/blog/2024/09/03/pinot-for-low-latency-offline-table-analytics/index.html
index f7227add..4880618a 100644
--- a/blog/2024/09/03/pinot-for-low-latency-offline-table-analytics/index.html
+++ b/blog/2024/09/03/pinot-for-low-latency-offline-table-analytics/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2024/09/03/pinot-for-low-latency-offline-table-analytics/index.txt b/blog/2024/09/03/pinot-for-low-latency-offline-table-analytics/index.txt
index a8e5fe58..ead8ecc1 100644
--- a/blog/2024/09/03/pinot-for-low-latency-offline-table-analytics/index.txt
+++ b/blog/2024/09/03/pinot-for-low-latency-offline-table-analytics/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2024/09/03/pinot-for-low-latency-offline-table-analytics","c"],{"children":["__PAGE__?{\"slug\":[\"2024\",\"09\",\"03\",\"pinot-for-low-latency-offline-table-analytics\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2e [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2024/09/03/pinot-for-low-latency-offline-table-analytics","c"],{"children":["__PAGE__?{\"slug\":[\"2024\",\"09\",\"03\",\"pinot-for-low-latency-offline-table-analytics\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2e [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2024/12/20/apache-pinot-year-in-review-2024/index.html b/blog/2024/12/20/apache-pinot-year-in-review-2024/index.html
index 9daa4178..c7b78b92 100644
--- a/blog/2024/12/20/apache-pinot-year-in-review-2024/index.html
+++ b/blog/2024/12/20/apache-pinot-year-in-review-2024/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2024/12/20/apache-pinot-year-in-review-2024/index.txt b/blog/2024/12/20/apache-pinot-year-in-review-2024/index.txt
index 51c9e840..ec8f533f 100644
--- a/blog/2024/12/20/apache-pinot-year-in-review-2024/index.txt
+++ b/blog/2024/12/20/apache-pinot-year-in-review-2024/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2024/12/20/apache-pinot-year-in-review-2024","c"],{"children":["__PAGE__?{\"slug\":[\"2024\",\"12\",\"20\",\"apache-pinot-year-in-review-2024\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":" [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2024/12/20/apache-pinot-year-in-review-2024","c"],{"children":["__PAGE__?{\"slug\":[\"2024\",\"12\",\"20\",\"apache-pinot-year-in-review-2024\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":" [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/2025/03/05/Secure-and-low-latency-queries-with-raft-data-platform/index.html b/blog/2025/03/05/Secure-and-low-latency-queries-with-raft-data-platform/index.html
index 247190a2..c0f802b7 100644
--- a/blog/2025/03/05/Secure-and-low-latency-queries-with-raft-data-platform/index.html
+++ b/blog/2025/03/05/Secure-and-low-latency-queries-with-raft-data-platform/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/2025/03/05/Secure-and-low-latency-queries-with-raft-data-platform/index.txt b/blog/2025/03/05/Secure-and-low-latency-queries-with-raft-data-platform/index.txt
index 0d396311..9ea4f0cc 100644
--- a/blog/2025/03/05/Secure-and-low-latency-queries-with-raft-data-platform/index.txt
+++ b/blog/2025/03/05/Secure-and-low-latency-queries-with-raft-data-platform/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":[["slug","2025/03/05/Secure-and-low-latency-queries-with-raft-data-platform","c"],{"children":["__PAGE__?{\"slug\":[\"2025\",\"03\",\"05\",\"Secure-and-low-latency-queries-with-raft-data-platform\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/sta [...]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":[["slug","2025/03/05/Secure-and-low-latency-queries-with-raft-data-platform","c"],{"children":["__PAGE__?{\"slug\":[\"2025\",\"03\",\"05\",\"Secure-and-low-latency-queries-with-raft-data-platform\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/sta [...]
 6:HL["/_next/static/css/c130d1629644f070.css","style",{"crossOrigin":""}]
 7:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 8:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
diff --git a/blog/index.html b/blog/index.html
index ee67b2fd..d34a2f88 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/blog/index.txt b/blog/index.txt
index 022973e0..9a16b9db 100644
--- a/blog/index.txt
+++ b/blog/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["blog",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["blog",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 7:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
 8:I[5922,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],""]
diff --git a/download/index.html b/download/index.html
index 6fd46f90..73c5a5e1 100644
--- a/download/index.html
+++ b/download/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/download/index.txt b/download/index.txt
index 11ffcda6..19f1cc5e 100644
--- a/download/index.txt
+++ b/download/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["download",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["download",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 7:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
 8:I[5922,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],""]
diff --git a/index.html b/index.html
index 323e5931..9999f181 100644
--- a/index.html
+++ b/index.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="/static/images/hero_diagram_mobile.svg" fetchPriority="high"/><link rel="preload" as="image" hr [...]
+<!DOCTYPE html><html lang="en-us" class="__variable_a2025e scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/c9e6921c7fc300d8-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="/static/images/youtube_red.svg"/><link rel="preload" as="image" href="/static/images/hero_diagram_mobile.svg" fetchPriority="high"/><link rel="preload" as="image" hr [...]
 /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
 _paq.push(["setDoNotTrack", true]);
 _paq.push(["disableCookies"]);
@@ -14,4 +14,4 @@ _paq.push(['enableLinkTracking']);
                                         pt-5 font-[Source_Code_Pro]
                             border-rose-700 text-base font-semibold">x86</button><button class="border-b-4 px-4 py-2
                                         pt-5 font-[Source_Code_Pro]
-                            border-transparent opacity-30">ARM64</button></div><div class="table w-full whitespace-pre-wrap p-4 font-[Source_Code_Pro] leading-loose"><div class="table-row"><span class="table-cell select-none pr-1 text-gray-400">1</span><span class="table-cell">docker run -p 9000:9000 \</span></div><div class="table-row"><span class="table-cell select-none pr-1 text-gray-400">2</span><span class="table-cell">apachepinot.docker.scarf.sh/apachepinot/pinot:1.4.0 \</span></di [...]
\ No newline at end of file
+                            border-transparent opacity-30">ARM64</button></div><div class="table w-full whitespace-pre-wrap p-4 font-[Source_Code_Pro] leading-loose"><div class="table-row"><span class="table-cell select-none pr-1 text-gray-400">1</span><span class="table-cell">docker run -p 9000:9000 \</span></div><div class="table-row"><span class="table-cell select-none pr-1 text-gray-400">2</span><span class="table-cell">apachepinot.docker.scarf.sh/apachepinot/pinot:1.4.0 \</span></di [...]
\ No newline at end of file
diff --git a/index.txt b/index.txt
index bd452642..3562c515 100644
--- a/index.txt
+++ b/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 7:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
 8:I[5922,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],""]
@@ -11,6 +11,6 @@ b:I[8326,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980
 10:I[9893,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],""]
 e:T9fe,M42.99 18.448c1.032-.553 2.21-.831 3.535-.831 1.542 0 2.938.38 4.187 1.14 1.248.76 2.236 1.841 2.965 3.241.728 1.402 1.091 3.025 1.091 4.872s-.363 3.482-1.091 4.903c-.729 1.424-1.717 2.525-2.965 3.307-1.25.782-2.645 1.173-4.187 1.173-1.325 0-2.493-.271-3.503-.815-1.01-.543-1.83-1.226-2.46-2.053v14.612H36V17.912h4.562v2.606c.586-.825 1.395-1.515 2.426-2.068l.002-.002m6.452 5.605c-.445-.793-1.032-1.395-1.76-1.808a4.72 4.72 0 0 0-2.362-.618c-.847 0-1.602.211-2.33.635-.728.423-1.315 1 [...]
 5:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Apache Pinot™"}],["$","meta","3",{"name":"description","content":"Realtime distributed OLAP datastore"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","meta","5",{"name":"googlebot","content":"index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1"}],["$","link","6",{"rel":"canonical","href":"h [...]
-11:I[2610,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","502","static/chunks/502-1d04ea4451ae58c9.js","931","static/chunks/app/page-a11a4e6dbe0e533c.js"],""]
+11:I[2610,["326","static/chunks/326-d01e407f23b4c329.js","413","static/chunks/413-8372a7c066a264ea.js","980","static/chunks/980-5d5a1842ad6a43f2.js","502","static/chunks/502-1d04ea4451ae58c9.js","931","static/chunks/app/page-dbcdd45a2d5cc1ca.js"],""]
 d:["$","$L11",null,{"posts":[{"title":"Secure & Low-Latency Queries at scale with Raft Data Platform - [R]DP","date":"2025-03-05T00:00:00.000Z","tags":["data platform","real-time analytics","open source","security","cloud infrastructure","data ingestion","scalability"],"summary":"Explore how the Raft Data Platform (RDP) meets the growing demands for secure, high-performance data analytics at scale, with flexible architecture, advanced capabilities, and a vision for the future of real-tim [...]
 c:null
diff --git a/powered-by/index.html b/powered-by/index.html
index b0cdcf2b..b240b720 100644
--- a/powered-by/index.html
+++ b/powered-by/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/powered-by/index.txt b/powered-by/index.txt
index 99d49ae7..b0b6e732 100644
--- a/powered-by/index.txt
+++ b/powered-by/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["powered-by",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["powered-by",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 7:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
 8:I[5922,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],""]
diff --git a/share/index.html b/share/index.html
index 0f5a771c..89e7e993 100644
--- a/share/index.html
+++ b/share/index.html
@@ -10,4 +10,4 @@ _paq.push(['enableLinkTracking']);
   _paq.push(['setSiteId', '88']);
   var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
   g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
-})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
+})();</script><script src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js" crossorigin="" noModule=""></script></head><body class="bg-white text-black antialiased dark:bg-gray-950 dark:text-white"><script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}e [...]
\ No newline at end of file
diff --git a/share/index.txt b/share/index.txt
index fc3ccf1f..dd87ee8c 100644
--- a/share/index.txt
+++ b/share/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["share",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["share",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 7:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
 8:I[5922,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],""]
diff --git a/sitemap.xml b/sitemap.xml
index 4f06757f..2f0fadbb 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,11 +2,11 @@
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <url>
 <loc>https://pinot.apache.org/</loc>
-<lastmod>2026-01-09</lastmod>
+<lastmod>2026-01-30</lastmod>
 </url>
 <url>
 <loc>https://pinot.apache.org/blog</loc>
-<lastmod>2026-01-09</lastmod>
+<lastmod>2026-01-30</lastmod>
 </url>
 <url>
 <loc>https://pinot.apache.org/blog/2015/05/16/LinkedIn-Scaling</loc>
diff --git a/who_uses/index.html b/who_uses/index.html
index db657af2..d5d0ff84 100644
--- a/who_uses/index.html
+++ b/who_uses/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-a88144289337b17d.js" crossorigin=""/><script src="/_next/static/chunks/fd9d1056-80f06828277d71c3.js" async="" crossorigin=""></script><script src="/_next/static/chunks/472-28aea1d704b7083d.js" async="" crossorigin=""></script><script src="/_next/static/chunks/main-a [...]
\ No newline at end of file
+<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-a88144289337b17d.js" crossorigin=""/><script src="/_next/static/chunks/fd9d1056-80f06828277d71c3.js" async="" crossorigin=""></script><script src="/_next/static/chunks/472-28aea1d704b7083d.js" async="" crossorigin=""></script><script src="/_next/static/chunks/main-a [...]
\ No newline at end of file
diff --git a/who_uses/index.txt b/who_uses/index.txt
index e1aa9c07..0025a471 100644
--- a/who_uses/index.txt
+++ b/who_uses/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["who_uses",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["who_uses",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 7:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
 8:I[5922,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],""]
diff --git a/who_uses/index/index.html b/who_uses/index/index.html
index 1ed1a7b7..40868626 100644
--- a/who_uses/index/index.html
+++ b/who_uses/index/index.html
@@ -1 +1 @@
-<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-a88144289337b17d.js" crossorigin=""/><script src="/_next/static/chunks/fd9d1056-80f06828277d71c3.js" async="" crossorigin=""></script><script src="/_next/static/chunks/472-28aea1d704b7083d.js" async="" crossorigin=""></script><script src="/_next/static/chunks/main-a [...]
\ No newline at end of file
+<!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-a88144289337b17d.js" crossorigin=""/><script src="/_next/static/chunks/fd9d1056-80f06828277d71c3.js" async="" crossorigin=""></script><script src="/_next/static/chunks/472-28aea1d704b7083d.js" async="" crossorigin=""></script><script src="/_next/static/chunks/main-a [...]
\ No newline at end of file
diff --git a/who_uses/index/index.txt b/who_uses/index/index.txt
index 0d36c3dc..a5108d97 100644
--- a/who_uses/index/index.txt
+++ b/who_uses/index/index.txt
@@ -1,7 +1,7 @@
 1:HL["/_next/static/media/c9e6921c7fc300d8-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
 2:HL["/_next/static/css/40828874623469ec.css","style",{"crossOrigin":""}]
 3:HL["/_next/static/css/a489761f2ee3ea90.css","style",{"crossOrigin":""}]
-0:["uG0kJIApiwLOlom95Ban2",[[["",{"children":["who_uses",{"children":[["slug","index","c"],{"children":["__PAGE__?{\"slug\":[\"index\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
+0:["yITiFmChU-QAwLA40SGGV",[[["",{"children":["who_uses",{"children":[["slug","index","c"],{"children":["__PAGE__?{\"slug\":[\"index\"]}",{}]}]}]},"$undefined","$undefined",true],"$L4",[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/40828874623469ec.css","precedence":"next","crossOrigin":""}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/a489761f2ee3ea90.css","precedence":"next","crossOrigin":""}]],"$L5"]]]]
 6:I[7821,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"ThemeProviders"]
 7:I[9640,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],"AlgoliaSearchProvider"]
 8:I[5922,["326","static/chunks/326-d01e407f23b4c329.js","980","static/chunks/980-5d5a1842ad6a43f2.js","702","static/chunks/702-0dc9a84f164bf101.js","185","static/chunks/app/layout-01c9d8efe5e4f044.js"],""]


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org