<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="jpc2.org/feed.xml" rel="self" type="application/atom+xml" /><link href="jpc2.org/" rel="alternate" type="text/html" /><updated>2025-08-27T13:15:24+00:00</updated><id>jpc2.org/feed.xml</id><title type="html">Joe Conley</title><subtitle>Random thoughts on technology, business, books, and everything in between</subtitle><author><name>Joe Conley</name></author><entry><title type="html">AI Code Review Tools: The Good, The Bad, and The Expensive</title><link href="jpc2.org/software/productivity/ai/2024/12/19/ai-code-review-tools-showdown.html" rel="alternate" type="text/html" title="AI Code Review Tools: The Good, The Bad, and The Expensive" /><published>2024-12-19T00:00:00+00:00</published><updated>2024-12-19T00:00:00+00:00</updated><id>jpc2.org/software/productivity/ai/2024/12/19/ai-code-review-tools-showdown</id><content type="html" xml:base="jpc2.org/software/productivity/ai/2024/12/19/ai-code-review-tools-showdown.html"><![CDATA[<p>Ever found yourself drowning in pull request reviews, wishing you had a magical AI assistant to do the heavy lifting and keep coding moving? Well, I’ve been down that rabbit hole and tested several AI code review tools to see what works and what doesn’t. Here’s what I discovered in my quest for the (near-)perfect AI code reviewer.</p>

<div class="row justify-content-center">
<table class="image">
	<tr><td><img src="/assets/ai-reviewer.png" alt="Step 1" /></td></tr>
</table>
</div>

<h2 id="the-contenders">The Contenders</h2>

<p>I put four popular AI code review tools through their paces, scoring them on features, quality, and pricing (I tend to work and operate startups, so pricing is always front and center).</p>

<h2 id="-qodo-ai-pr-agent-615---the-verbose-one">🥉 Qodo AI PR-Agent (6/15) - The Verbose One</h2>

<p><strong>What it does:</strong> Catches bugs early and auto-generates PR descriptions right in Github.</p>

<p><strong>The good:</strong> Integrates with VS Code, JetBrains, GitHub, and GitLab. Has a generous free tier with 75 PR reviews per month.</p>

<p><strong>The not-so-good:</strong> PR descriptions are terribly verbose and usually not very insightful. I know we’re getting to the point where we should be writing and generating content specifically for LLMs, but I’m old-fashioned and still prefer concise, specific insights. To wit, most recommendations here tend to focus on low-hanging fruit rather than deep architectural insights.</p>

<p><strong>Price:</strong> Free tier available, then $19/user/month for teams.</p>

<p><strong>Verdict:</strong> Good for basic bug catching, but don’t expect deep insights.</p>

<h2 id="-greptile-915---the-context-aware-one">🥈 Greptile (9/15) - The Context-Aware One</h2>

<p><strong>What it does:</strong> AI code reviews that actually understand your entire codebase.</p>

<p><strong>The good:</strong> Shows deeper understanding of your codebase than most tools. More insightful feedback that goes beyond simple linting suggestions. Focuses on reducing merge times.</p>

<p><strong>The not-so-good:</strong> Limited to GitHub and GitLab integrations.</p>

<p><strong>Price:</strong> Flat $30/developer/month with unlimited reviews.</p>

<p><strong>Verdict:</strong> Better quality than most, but the price point might make you wince.</p>

<h2 id="-cursor-bugbot-1015---the-bug-hunter">🥈 Cursor Bugbot (10/15) - The Bug Hunter</h2>

<p><strong>What it does:</strong> Specializes in bug detection and security issues beyond basic linting.</p>

<p><strong>The good:</strong> Has reviewed over 1 million PRs and found 1.5 million issues during beta. Integrates well with the Cursor editor.</p>

<p><strong>The not-so-good:</strong> Can be nitpicky and doesn’t maintain context well across iterations. Separate from main Cursor subscription.</p>

<p><strong>Price:</strong> $40/month for unlimited reviews on up to 200 PRs/month.</p>

<p><strong>Verdict:</strong> Good at what it does (bug hunting), but the pricing can get expensive if you exceed the basic limits</p>

<h2 id="-coderabbit-ai-1115---the-overachiever">🥇 CodeRabbit AI (11/15) - The Overachiever</h2>

<p><strong>What it does:</strong> Real-time, context-aware feedback with conversational chat and line-by-line suggestions.</p>

<p><strong>The good:</strong> Users rave about making code reviews 10x faster. Gets smarter over time and provides deep analytics. The conversational interface makes it feel less robotic than other tools.</p>

<p><strong>The not-so-good:</strong> The free tier is limited to public repos and basic PR summarization.</p>

<p><strong>Price:</strong> Free for public repos, $12/developer/month (Lite) or $20/developer/month (Pro) when billed annually.</p>

<p><strong>Verdict:</strong> The clear winner in terms of features and quality. Worth the investment if you’re serious about improving your review process.</p>

<h2 id="the-bottom-line">The Bottom Line</h2>

<p>If you’re looking for the best overall experience, <strong>CodeRabbit AI</strong> is your winner. It strikes the right balance between features, quality, and price.</p>

<p><strong>Greptile</strong> is solid if you need deeper codebase understanding and don’t mind the higher price tag.</p>

<p><strong>Qodo</strong> is fine for basic bug catching, but don’t expect miracles.</p>

<p><strong>Cursor Bugbot</strong> is worth considering if you’re already using Cursor and need specialized bug detection.</p>

<h2 id="my-take">My Take</h2>

<p>AI code review tools are getting better, but they’re still not magic bullets. They excel at catching obvious issues and speeding up routine reviews, but they still can’t replace human judgment for complex architectural decisions. Especially as most non-trivial code bases still have enough complexity to require a human at some point in the loop.</p>

<p>The key is finding the right tool for your team’s needs and budget. Start with a free tier if available, and scale up as you see value.</p>

<p>What’s your experience with AI code review tools? Have you found one that actually makes your life easier, or are they all just expensive toys? Drop a comment below!</p>]]></content><author><name>Joe Conley</name></author><category term="software" /><category term="productivity" /><category term="ai" /><category term="ai" /><category term="code-review" /><category term="productivity" /><category term="software" /><summary type="html"><![CDATA[Ever found yourself drowning in pull request reviews, wishing you had a magical AI assistant to do the heavy lifting and keep coding moving? Well, I’ve been down that rabbit hole and tested several AI code review tools to see what works and what doesn’t. Here’s what I discovered in my quest for the (near-)perfect AI code reviewer.]]></summary></entry><entry><title type="html">GraphRAG with Neptune</title><link href="jpc2.org/2024/11/22/graphrag-neptune.html" rel="alternate" type="text/html" title="GraphRAG with Neptune" /><published>2024-11-22T00:00:00+00:00</published><updated>2024-11-22T00:00:00+00:00</updated><id>jpc2.org/2024/11/22/graphrag-neptune</id><content type="html" xml:base="jpc2.org/2024/11/22/graphrag-neptune.html"><![CDATA[<p>I really enjoyed my recent talk as part of the monthly <a href="https://www.meetup.com/gpawsug/">Greater Philadelphia AWS User Group</a> at <a href="https://www.linkedin.com/company/sid-global-solutions-it-consulting-&amp;-training-/">SID Global Solutions</a>.</p>

<p>While I’ve mostly built basic RAG solutions so far as part of the Fractional CTO work I’m doing at <a href="https://techsight.dev">TechSight</a>, it was fun taking some time to explore the potential behind graphs and how their inherent structure can improve quality and traceability.</p>

<h2 id="tldr">TLDR</h2>

<ul>
  <li>Basic #RAG is always a good starting point and is effective for certain use cases (like specific queries/search)</li>
  <li>The structural nature of graphs can improve RAG by adding a layer of semantics and traceability (the challenge is building out the graph from large unstructured datasets)</li>
  <li>Call ahead to make sure the post-talk bar you go to has Prime so you can watch football :)</li>
</ul>

<p>Here are the slides, reach out if you wanna chat further!</p>

<iframe src="https://docs.google.com/presentation/d/1DDBuCoIXzBMSDIW6Q0aLw-e-dodvEyS2DPAxyFh_1ow/embed?start=false&amp;loop=false&amp;delayms=3000" frameborder="0" width="960" height="569" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>]]></content><author><name>Joe Conley</name></author><category term="cto" /><category term="startups" /><category term="techsight" /><category term="aws" /><summary type="html"><![CDATA[I really enjoyed my recent talk as part of the monthly Greater Philadelphia AWS User Group at SID Global Solutions.]]></summary></entry><entry><title type="html">Product Academy Presentation</title><link href="jpc2.org/2024/06/21/product-academy-product-cto.html" rel="alternate" type="text/html" title="Product Academy Presentation" /><published>2024-06-21T00:00:00+00:00</published><updated>2024-06-21T00:00:00+00:00</updated><id>jpc2.org/2024/06/21/product-academy-product-cto</id><content type="html" xml:base="jpc2.org/2024/06/21/product-academy-product-cto.html"><![CDATA[<p>I really enjoyed my recent talk at Turnberry Solutions’ <a href="https://www.turnberrysolutions.com/services/business-excellence/business-agility/">Product Academy</a>. I always enjoy hearing stories and learning lessons from product-minded folks across different industries. Despite the variety of roles there are always some common takeaways that can help us all navigate product development and stay sane!</p>

<p>Here are the slides, reach out if you wanna chat further!</p>

<iframe src="https://docs.google.com/presentation/d/11qje4-WN7JYK-jf0hYg3Yhuvxypc3dVUn8GYhUwEsL8/embed?start=false&amp;loop=false&amp;delayms=3000" frameborder="0" width="960" height="569" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>]]></content><author><name>Joe Conley</name></author><category term="cto" /><category term="startups" /><summary type="html"><![CDATA[I really enjoyed my recent talk at Turnberry Solutions’ Product Academy. I always enjoy hearing stories and learning lessons from product-minded folks across different industries. Despite the variety of roles there are always some common takeaways that can help us all navigate product development and stay sane!]]></summary></entry><entry><title type="html">Advanced Data Analytics with AWS</title><link href="jpc2.org/2024/04/26/data-analytics-on-aws.html" rel="alternate" type="text/html" title="Advanced Data Analytics with AWS" /><published>2024-04-26T00:00:00+00:00</published><updated>2024-04-26T00:00:00+00:00</updated><id>jpc2.org/2024/04/26/data-analytics-on-aws</id><content type="html" xml:base="jpc2.org/2024/04/26/data-analytics-on-aws.html"><![CDATA[<p>I’m very proud to announce the publication of my first book, <a href="https://www.amazon.com/Advanced-Data-Analytics-AWS-Engineering/dp/8197081891">Advanced Data Analytics with AWS</a>!</p>

<p>I’ve spent most of my career in tech working with data in all shapes and sizes, more recently in the cloud on AWS. And while I know how daunting AWS can be to knowledge workers across all levels of experience, I felt it was worthwhile to offer a foundational overview of how to build data analytics pipelines on (arguably) the de facto operating system for modern software.</p>

<p>Enjoy! Please let me know if you have any feedback at all!</p>

<ul>
  <li><a href="https://www.amazon.com/Advanced-Data-Analytics-AWS-Engineering/dp/8197081891">Book</a></li>
  <li><a href="https://github.com/ava-orange-education/Advanced-Data-Analytics-with-AWS">Code</a></li>
</ul>

<p>P.S. I promise to get the KnowledgeGraphIndex debugging working with a (much shorter) snippet from Lord of the Rings, apparently trying to create a knowledge graph from a thousand page book can’t be done during a demo (and also cost $80 trying)</p>]]></content><author><name>Joe Conley</name></author><category term="AWS" /><category term="CTO" /><category term="data" /><summary type="html"><![CDATA[I’m very proud to announce the publication of my first book, Advanced Data Analytics with AWS!]]></summary></entry><entry><title type="html">Meet SEC AI</title><link href="jpc2.org/2024/04/08/sec-ai.html" rel="alternate" type="text/html" title="Meet SEC AI" /><published>2024-04-08T00:00:00+00:00</published><updated>2024-04-08T00:00:00+00:00</updated><id>jpc2.org/2024/04/08/sec-ai</id><content type="html" xml:base="jpc2.org/2024/04/08/sec-ai.html"><![CDATA[<h2 id="sec-ai">SEC AI</h2>

<ul>
  <li><a href="https://jpc2-secai.streamlit.app/">SEC AI</a></li>
  <li><a href="https://github.com/josephpconley/sec-ai">Code</a></li>
</ul>

<p>Wouldn’t it be great if you didn’t have to manually sift through 100-page annual reports for your investments?</p>

<p>Just kidding, you should probably still do that.</p>

<p>But if you want a reading companion that can help you find the answers to quick questions, track trends over many years, or compare multiple competitors in an industry, then check out <a href="https://jpc2-secai.streamlit.app/">SEC AI</a>. It’s a simple Q&amp;A chatbot that lets you search for companies by ticker, load one or more SEC filings, and then ask questions of the loaded docs.</p>

<p>For example, let’s get a breakdown of Berkshire Hathaway’s revenue for 2023. First we search by ticker and select <code class="language-plaintext highlighter-rouge">Add Filing </code> for the latest 10-k filing:</p>

<div class="row justify-content-center">
<table class="image">
	<tr><td><img src="/assets/2024-04-08_23-01.png" alt="Step 1" /></td></tr>
</table>
</div>

<p>Next, click <code class="language-plaintext highlighter-rouge">Load Docs</code> to selected filing(s) into a local in-memory vector store (powered by Chroma). Finally we ask our question and get a response:</p>

<div class="row justify-content-center">
<table class="image">
	<tr><td><img src="/assets/2024-04-08_23-01_1.png" alt="Step 2" /></td></tr>
</table>
</div>

<p>This currently requires an OpenAI <a href="https://platform.openai.com/api-keys">API key</a>, however the next version will include model selection as an option with an open-source LLM option to avoid having to provision your own key. I’m especially excited to test this given the recent news that <a href="https://venturebeat.com/ai/cohere-launches-command-r-a-powerful-llm-optimized-for-enterprise-ai/">an open-source model surpassed GPT-4 in performance</a></p>

<h2 id="next-steps">Next Steps</h2>

<p>In addition to testing open-source models, I’d also like to add the following:</p>

<ul>
  <li>Including investor call transcripts in context</li>
  <li>Generating summary-level reports to focus on specific metrics and financials</li>
  <li>Automating reports based on company-specific prompts via email</li>
</ul>

<h2 id="reflections-on-chatgpt-for-coding">Reflections on ChatGPT for Coding</h2>

<p>While I’ve built some RAG-based tools in Python using frameworks like <a href="https://www.langchain.com/">LangChain</a>, I had zero upfront knowledge of Streamlit. So I also used this as an opportunity to see just how effective I could be with a brand new framework using mostly ChatGPT and <a href="https://cursor.sh/">Cursor</a>. While I needed to hit the documentation in a few spots, overall these coding tools got me most of the way there. While this may not be production-ready per se, it certainly provides quick iterative feedback on ideas and gives me a feel for how the app should flow.</p>

<h2 id="suggestions">Suggestions?</h2>

<p>Let me know what you think and if you have any suggestions. Thanks!</p>]]></content><author><name>Joe Conley</name></author><category term="investing" /><category term="AI" /><category term="RAG" /><summary type="html"><![CDATA[SEC AI]]></summary></entry><entry><title type="html">Damn Good Pizza</title><link href="jpc2.org/2024/03/20/pizza-time.html" rel="alternate" type="text/html" title="Damn Good Pizza" /><published>2024-03-20T00:00:00+00:00</published><updated>2024-03-20T00:00:00+00:00</updated><id>jpc2.org/2024/03/20/pizza-time</id><content type="html" xml:base="jpc2.org/2024/03/20/pizza-time.html"><![CDATA[<p>I’ve seen, and been part of, software teams that remind me of this great Simpsons quote (my edits in italics):</p>

<blockquote>
  <p>You know <strong>software with users</strong> is like the mule with a spinning wheel. No one knows how they got ‘em, and danged if they know how to <strong>serve</strong> ‘em!</p>
</blockquote>

<div style="text-align: center">
<iframe width="700" height="450" src="https://www.youtube.com/embed/nLMy2T5qrU0?si=papuTyO_xyYf4M2R" allowfullscreen=""></iframe>
</div>

<p>It’s easy as a team to get distracted by  struggles with process, tech debt, and debates over languages and frameworks. You can often forget that the ultimate goal of a software team is <strong>to provide a service</strong>, specifically by delivering working software. The quality and speed of this service is important (just like an API meeting certain SLAs), and the ultimate goal is to provide value to the software’s end-user that they couldn’t find otherwise.</p>

<p>Most engineers probably won’t attend sales calls or talk to users directly, fine. The quality of their code still impacts those end-users, so that voice of the customer needs to be front of mind in some form as they build out the product.</p>

<p>A previous manager of mine, struggling with a team’s delivery issues, had everyone think through the example of a pizza shop.</p>

<blockquote>
  <p>Think of our team as a pizza shop. Pizza shops need to deliver quality pizza. They also need to deliver quality pizza in a reasonable amount of time.</p>

  <p>If we take forever to make pizzas, customers will leave.</p>

  <p>If the pizza we make tastes like shit, customers will leave.</p>

  <p>If customers leave, we can’t afford to keep the shop open and we all go home.</p>
</blockquote>

<p>Customers don’t care about the oven you used to make the pizza (microservices, kubernetes, Java applets). They also don’t care how the pizza gets delivered (Agile bike delivery or Waterfall waiters). They’re hungry! Just make good pizza, and ask them what they liked and didn’t like!</p>

<p>Understanding this idea from a ground level really helps add perspective to your work. It’s common to feel disconnected from your product when living in abstract architecture land, but the technical decisions you make are important, and have a real impact on how damn good the pizza is.</p>

<p>Here’s some ideas to help break out of the silo:</p>

<ul>
  <li>Gather feedback <strong>quickly and iteratively</strong> from customers, rather than build something in isolation for months</li>
  <li>Share that feedback <strong>with the entire org</strong>, and give engineers a chance to ask curious questions and even interact with customers. Your org should look and feel more like a living laboratory running experiments, not a slow-moving cruise liner</li>
  <li><strong>Use data</strong>, not guesses, to figure out what the customer actually uses and where they get stuck</li>
  <li>Focus on the <strong>highest leverage points</strong> in the product that lead to the highest possible quality and best experience</li>
</ul>

<p>I’m sure you can think of other principles that rhyme here, but the main point is to keep the focus on the customer.</p>

<div class="row justify-content-center">
<table class="image">
	<tr><td><img src="/assets/pizzatime.jpg" alt="Pizza Time" /></td></tr>
</table>
</div>

<p>So take pride in your pizza! There’s always ways to make it better and faster. And that’s part of the fun of building software, we’re never done. Yes, AI will help us immensely. But I bet backlogs and roadmaps still exist in 10 years, so  regardless of how fast you run, you can’t leave the customer behind.</p>]]></content><author><name>Joe Conley</name></author><category term="software" /><category term="CTO" /><summary type="html"><![CDATA[I’ve seen, and been part of, software teams that remind me of this great Simpsons quote (my edits in italics):]]></summary></entry><entry><title type="html">Charlie Joins the Eminent Dead</title><link href="jpc2.org/2023/12/04/charlie-joins-the-eminent-dead.html" rel="alternate" type="text/html" title="Charlie Joins the Eminent Dead" /><published>2023-12-04T00:00:00+00:00</published><updated>2023-12-04T00:00:00+00:00</updated><id>jpc2.org/2023/12/04/charlie-joins-the-eminent-dead</id><content type="html" xml:base="jpc2.org/2023/12/04/charlie-joins-the-eminent-dead.html"><![CDATA[<p>Charlie Munger <a href="https://www.nytimes.com/2023/11/28/business/charles-t-munger-dead.html">passed away</a> at the age of 99, just a few weeks shy of his 100th birthday. My first instinct was to join the social media fray of sharing reflections and favorite Munger quotes but it was tough to pick just one. Instead I just thought about what I admired most about him: his fierce desire to live an independent life shaped to his own personality.</p>

<p>Munger was never one to mince words. He knew early on he wanted wealth, not for the material trappings but for the independence it brings (he felt it “uncouth” to send someone an invoice). So he read a lot, figured out what worked, and made a fortune. Meeting Buffett certainly helped but he was well on his way to his goal before that.</p>

<p>I admire this drive for independence because it’s such a rare trait in this world. We tend to live and think in highly regimented, engineered systems (schools, corporations, social media) that incentivize us to act in ways that might not align with our true nature. I know few people who actively (and “successfully”) reject organizational prerogatives and carve out a life they can truly call their own. It’s easier to live life on autopilot, especially with family obligations, and just stay within these systems. As Munger said, “Who’s bread I eat, his song I sing”.</p>

<p>I know, too, that independence is something I highly value, though the realization came to me later in life. I spent most of my school life worried about grades, not always pursuring learning for its own sake.</p>

<p>And then I saw <em>The Matrix</em>.</p>

<p>This was one of those “holy shit” moments where I begin to see reality through a different lens. Like what kind of systems are we currently plugged into, consciously or otherwise? Which thoughts are truly ours, or engineered by our environment? How can we free our minds from these systems? What is identity, really, if “the matrix cannot tell you who you are”?</p>

<p>This helped liberate my approach to learning and thinking, and I’ve been lucky to find and learn from many mentors from the “eminent dead” as Munger liked to say.</p>

<p>I don’t claim to have any answers yet, but that’s the point. You can get further in life not by finding all the answers but figuring out the right questions to ask. I think Munger did that exceptionally well.</p>

<p>I think the best way to honor his life is simply to emulate it (“shamelessly clone” it as his good friend Mohnish Pabrai might say). Learn as much as you can, <em>try</em> to stay rational, and find something useful to do with your life.</p>

<table class="image">
	<caption align="bottom">Source: <a href="https://www.amazon.com/Poor-Charlies-Almanack-Essential-Charles/dp/1953953239/ref=tmm_hrd_swatch_0?_encoding=UTF8&amp;qid=1701658320&amp;sr=8-1">Poor Charlie's Almanack: The Wit and Wisdom of Charles T. Munger</a></caption>
	<tr><td><img src="/assets/20231203_214220.jpg" alt="Munger reading" /></td></tr>
</table>

<p>Nothing to add.</p>]]></content><author><name>Joe Conley</name></author><category term="investing" /><category term="buffet" /><category term="munger" /><category term="matrix" /><category term="philosophy" /><summary type="html"><![CDATA[Charlie Munger passed away at the age of 99, just a few weeks shy of his 100th birthday. My first instinct was to join the social media fray of sharing reflections and favorite Munger quotes but it was tough to pick just one. Instead I just thought about what I admired most about him: his fierce desire to live an independent life shaped to his own personality.]]></summary></entry><entry><title type="html">2023Q2</title><link href="jpc2.org/2023/07/01/2023Q2-review.html" rel="alternate" type="text/html" title="2023Q2" /><published>2023-07-01T00:00:00+00:00</published><updated>2023-07-01T00:00:00+00:00</updated><id>jpc2.org/2023/07/01/2023Q2-review</id><content type="html" xml:base="jpc2.org/2023/07/01/2023Q2-review.html"><![CDATA[<p>Summary</p>
<ul>
  <li>bought more $PLTR, $HIFS, $PAR, and $JDC.DE</li>
  <li>fully sold $SNOW to finance the above - not necessarily bearish on $SNOW but felt much more confident in the other names, especially seeing $PLTR in the $7-8 range.</li>
  <li>still keeping an eye on $NICK but not sure what the catalyst would be to get above $5</li>
</ul>

<p>While I’ve been bullish on $PLTR for a while, it was nice to see its surge amid recent profitability and the AI craze.
Even after doubling this year, it’s hard to say it’s overpriced based on the sheer scope and capabilities of its platform (having 2B cash and no debt is a nice kicker too).
I’ve been working with LLMs for a while now and it’s clear that operationalizing them will be vastly important, something that <a href="https://www.palantir.com/platforms/aip/">AIP</a> seems well positioned to do.</p>

<p>I largely agree with the views <a href="https://twitter.com/BenMillerise">Benjamin Miller</a> has been expressing around an eventual recession, and his <a href="https://fundrise.com/investor-update/1012/view?utm_medium=email&amp;utm_source=fundrise&amp;utm_campaign=investor-update-1012">mid-year letter</a> is a great exposition of those views backed by data (the best views usually are!).
I’ll probably ease up on the equity inflows and focus more on <a href="https://twitter.com/Fundrise">Fundrise</a> and other alternative investments in the short-term.</p>

<p>I recently re-read <a href="https://www.amazon.com/Man-All-Markets-Street-Dealer/dp/0812979907/ref=sr_1_1?keywords=a+man+for+all+markets+edward+thorp&amp;qid=1689633558&amp;sprefix=a+man+for+all+mar%2Caps%2C185&amp;sr=8-1">A Man for All Markets</a>, Ed Thorp’s autobiography, and was amazed how much of the insight is still relevant today.  I think the most important insight is just how well he designed his life to work on interesting problems and not get stuck in status or money traps like most folks.  David Senra gives a great overview of the book in his <a href="https://open.spotify.com/episode/22qcWWLSZheEysQEbjkUKs?si=8d5f3e53ecf94cef&amp;nd=1">podcast</a>, showing why he uses Ed’s life as the blueprint for his own.</p>]]></content><author><name>Joe Conley</name></author><category term="investing" /><category term="PLTR" /><summary type="html"><![CDATA[Summary bought more $PLTR, $HIFS, $PAR, and $JDC.DE fully sold $SNOW to finance the above - not necessarily bearish on $SNOW but felt much more confident in the other names, especially seeing $PLTR in the $7-8 range. still keeping an eye on $NICK but not sure what the catalyst would be to get above $5]]></summary></entry><entry><title type="html">Data Visualization Roundup</title><link href="jpc2.org/2023/05/31/data-viz-roundup.html" rel="alternate" type="text/html" title="Data Visualization Roundup" /><published>2023-05-31T00:00:00+00:00</published><updated>2023-05-31T00:00:00+00:00</updated><id>jpc2.org/2023/05/31/data-viz-roundup</id><content type="html" xml:base="jpc2.org/2023/05/31/data-viz-roundup.html"><![CDATA[<p>Teams operate best when they’re focused.  Not just on a shared mission, but on the steps needed to get there.  If your team is striving to build effectively at scale (and are largely remote to boot), chances are you’ll need some shared dashboard to check progress and monitor what matters.</p>

<p>I’ve used two such tools extensively so far (<a href="https://docs.aws.amazon.com/QuickSight/latest/user/getting-started.html">QuickSight</a> and <a href="https://superset.apache.org/docs/intro/">Superset</a>), and I was surprised to find how easy both were to use for someone as design-challenged as myself.  Herein lies a quick review of their functionality (both work well!).</p>

<h2 id="intro---sec-data-driven-portfolio-tracker">Intro - SEC data-driven portfolio tracker</h2>

<p>As a motivating example, I’m using a few simple financial datasets to show off each tool’s capabilities.  <a href="https://www.sec.gov/dera/data/financial-statement-data-sets">EDGAR</a> produces quarterly data dumps of all publicly-traded companies in a TSV format.  Companies must tag specific fields   (e.g. <code class="language-plaintext highlighter-rouge">NetIncomeLoss</code>).  I added my own <a href="/portfolio">portfolio</a> activity and some historical <a href="https://www.nyse.com/market-data/historical">daily price data</a> to build a dashboard showing financial performance, price tracking, and portfolio composition.  This afforded me some diversity of chart visuals and non-trivial datasets to work with.  Here’s how the tools compare on some core data visualization concepts.</p>

<h2 id="working-with-data---quicksight-by-a-hair">Working with Data - QuickSight (by a hair)</h2>

<p>It became clear that with both tools, it’s  always simpler to <strong>clean and combine data beforehand</strong>.  While these tools support joins and other ways to massage data, I saved much time by just passing it clean data (reminded me of how to design tables in DynamoDB - think about queries in advance).  However, if you choose to do more customization in the tools themselves, you can use custom SQL views (ideally at the source - JDBC for Superset or SQL/Athena for QuickSight).</p>

<p>Caching data seems to be simpler in QuickSight, specifically in relying on SPICE to store a cached version of your data.  Superset has this capability using Redis, but this adds a bit more complexity (especially as you are likely hosting Superset on your own).</p>

<p>QuickSight’s come a long way over the past few years, and the biggest techdiff it has is its seamless integration with the AWS ecosystem and some other interesting third-party integrations as well (e.g. Twitter, Github).  Despite the slight edge, I didn’t find much difficulty in managing data in Superset, and could use a myriad of ways (simple script, Airflow, hell even dbt) to prep data for visualization in either.</p>

<p><img class="ui large centered rounded image rotate180" src="/assets/qs-sources.png" /></p>

<h2 id="building-charts---superset-by-a-nose">Building Charts - Superset (by a nose)</h2>

<p>Both tools offer a wide and growing set of visualizations to use, but I was really impressed to see the full list of Superset plugins (even as far as Mapbox plugins and Handlebars for templating).  This, for me, made up for the sometimes clunky interface for building charts. The biggest gripe I still have is that updating a custom dataset after building a chart won’t reflect those changes in the chart builder (you can still manually reference any new fields but this wasn’t obvious).</p>

<p>QuickSight works well and offers a wide set of visuals to choose from, and as you can see it was easy to replicate the work from Superset to QuickSight.</p>

<p><small><b>Superset</b></small>
<img class="ui large centered rounded image rotate180" src="/assets/superset-dash.png" /></p>

<p><small><b>QuickSight</b></small>
<img class="ui large centered rounded image rotate180" src="/assets/qs-dash.png" /></p>

<h2 id="embedded-visuals---tie">Embedded Visuals - Tie</h2>

<p>Both tools take a bit of finagling to get the initial embedding working, but once up and running it works pretty seamlessly.  Not much of a difference here, except that Superset doesn’t have a way to have visual-specific filters on a dashboard (the filters are only global), but that can be worked around pretty easily (<a href="https://medium.com/@khushbu.adav/embedding-superset-dashboards-in-your-react-application-7f282e3dbd88">SS embed</a>, <a href="https://docs.aws.amazon.com/QuickSight/latest/user/embedded-analytics-dashboards-for-everyone.html">QS embed</a>)</p>

<h2 id="measure-what-matters">Measure What Matters</h2>

<p>Modern BI tools have come a long way.  While there’s dozens to choose from, you can’t go wrong with these two.  If you’re cost conscious and not married to AWS, Superset should work great.  If your heavy AWS users then you probably won’t mind the incremental cost of a few QuickSight seats given how fast you can design and create its easy-to-use visuals.</p>]]></content><author><name>Joe Conley</name></author><category term="bi" /><category term="data" /><category term="cto" /><summary type="html"><![CDATA[Teams operate best when they’re focused. Not just on a shared mission, but on the steps needed to get there. If your team is striving to build effectively at scale (and are largely remote to boot), chances are you’ll need some shared dashboard to check progress and monitor what matters.]]></summary></entry><entry><title type="html">2023Q1</title><link href="jpc2.org/2023/04/01/2023Q1-review.html" rel="alternate" type="text/html" title="2023Q1" /><published>2023-04-01T00:00:00+00:00</published><updated>2023-04-01T00:00:00+00:00</updated><id>jpc2.org/2023/04/01/2023Q1-review</id><content type="html" xml:base="jpc2.org/2023/04/01/2023Q1-review.html"><![CDATA[<ul>
  <li>bought more $HIFS and $PAR - hopefully those moves are greeted by <a href="https://www.in.kpmg.com/SecureData/aci/Files/agendaissue5.pdf">yawns</a></li>
  <li>added Lumine Group $LMGIF via dividend from Constellation - not sure if I want to add any more yet, have to do the homework.  Their concentration of companies focused on selling to enterprises is interesting though.</li>
  <li>watched the ever-volatile $SKYH price roughly 2.5x, might be a bit over-priced today but long-term the prospects still seem sound so no reason to trim</li>
</ul>

<p>Looking to do a deeper dive into $HIFS and $NU in the midst of the banking turmoil to understand how they’re positioned and if there’s any additional opportunity there.  Should be fun learnings either way!</p>]]></content><author><name>Joe Conley</name></author><category term="investing" /><summary type="html"><![CDATA[bought more $HIFS and $PAR - hopefully those moves are greeted by yawns added Lumine Group $LMGIF via dividend from Constellation - not sure if I want to add any more yet, have to do the homework. Their concentration of companies focused on selling to enterprises is interesting though. watched the ever-volatile $SKYH price roughly 2.5x, might be a bit over-priced today but long-term the prospects still seem sound so no reason to trim]]></summary></entry></feed>