<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Productivity on Shivasurya</title><link>http://shivasurya.me/tags/productivity/</link><description>Recent content in Productivity on Shivasurya</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 20 Dec 2025 00:00:00 +0000</lastBuildDate><atom:link href="http://shivasurya.me/tags/productivity/feed.xml" rel="self" type="application/rss+xml"/><item><title>2025 Wrapped</title><link>http://shivasurya.me/2025/12/20/2025-wrapped/</link><pubDate>Sat, 20 Dec 2025 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2025/12/20/2025-wrapped/</guid><description>&lt;h3 id="2025-wrapped">2025 Wrapped&lt;/h3>
&lt;ul>
&lt;li>
&lt;p>Published 📰&lt;/p>
&lt;ul>
&lt;li>Sourcegraph Blog: &lt;a href="https://sourcegraph.com/blog/lessons-from-building-sherlock-automating-security-code-reviews-with-sourcegraph">Lessons from building Sherlock: Automating security code reviews with Sourcegraph&lt;/a>
&lt;ul>
&lt;li>Built AI security agent around 2024 and wrote a blog post about it.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Tried out &lt;a href="https://www.latent.space/p/willccbb">Multi-Turn Reinforcement Learning&lt;/a> for security vulnerability analysis using verifier framework.
&lt;ul>
&lt;li>Turns out it&amp;rsquo;s amazing and has lot of stuffs to explore and learn.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Shipped 🚀&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://codepathfinder.dev/secureflow-ai">Secureflow AI&lt;/a>, Autonoumous AI Agent for security vulnerability analysis
&lt;ul>
&lt;li>Published blog post on &lt;a href="https://codepathfinder.dev/blog/introducing-secureflow-cli-to-hunt-vuln">codepathfinder.dev&lt;/a>&lt;/li>
&lt;li>And it&amp;rsquo;s clear that &lt;a href="https://ampcode.com/how-to-build-an-agent">NO ONE HAS MOAT&lt;/a>, If any AI security vendor company shows flashy demo &amp;ldquo;How our AI Security engineer can do this &amp;amp; that&amp;rdquo;, remember, you can replicate the same by calling OpenAI, Claude API, or any other AI platform providers.
&lt;ul>
&lt;li>This includes AI SAST, AI Vulnerability detection, AI Appsec, AI Threat modeling, AI Penetration testing, AI Security Orchestration.&lt;/li>
&lt;li>All you need is good level of context engineering, memory, workflow setup, AI API calls.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="https://codepathfinder.dev/">Code-Pathfinder&lt;/a>, AI-Native static code analysis now has Python, Docker, Docker Compose support and open-sourced under AGPLv3 license&lt;/li>
&lt;li>Some Milestones &amp;amp; Metrics 📊
&lt;ul>
&lt;li>Code-Pathfinder &amp;amp; Secureflow AI
&lt;ul>
&lt;li>307 Monthly Active Users&lt;/li>
&lt;li>64 Weekly Active Users&lt;/li>
&lt;li>Started from zero half way through 2025 and grateful to achieve this number.&lt;/li>
&lt;li>Excited to see the growth in 2026&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Read 6 books 📚&lt;/p></description></item><item><title>Lessons from Building Sherlock: Automating Security Code Reviews with Sourcegraph</title><link>http://shivasurya.me/2025/04/10/lessons-from-building-sherlock-automating-security-code-reviews-with-sourcegraph/</link><pubDate>Thu, 10 Apr 2025 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2025/04/10/lessons-from-building-sherlock-automating-security-code-reviews-with-sourcegraph/</guid><description>&lt;p>Originally published on the &lt;a href="https://sourcegraph.com/blog/lessons-from-building-sherlock-automating-security-code-reviews-with-sourcegraph">Sourcegraph Blog&lt;/a>.&lt;/p></description></item><item><title>LLM-Powered Security Reviews: Insights and Challenges</title><link>http://shivasurya.me/2025/03/19/llm-powered-security-reviews/</link><pubDate>Wed, 19 Mar 2025 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2025/03/19/llm-powered-security-reviews/</guid><description>&lt;h3 id="introduction">Introduction&lt;/h3>
&lt;p>In a previous post on the &lt;a href="https://shivasurya.me/security-reviews/sast/2024/06/27/automate-security-code-reviews-with-cody-ai.html">Sherlock blog&lt;/a>, I discussed leveraging large language models (LLMs) to assist with security code reviews. There’s no doubt that LLMs outperform traditional static application security testing (SAST) tools in several ways, enhancing the security review process by:&lt;/p>
&lt;ul>
&lt;li>Reducing false positive rates&lt;/li>
&lt;li>Increasing the accuracy of findings&lt;/li>
&lt;li>Uncovering previously unidentified edge cases&lt;/li>
&lt;/ul>
&lt;p>When used in conjunction with SAST tools, LLMs can significantly boost the effectiveness of security reviews.&lt;/p></description></item><item><title>How I Use AI to Streamline/Assist My Work</title><link>http://shivasurya.me/2025/01/28/how-i-use-llm-workflows/</link><pubDate>Tue, 28 Jan 2025 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2025/01/28/how-i-use-llm-workflows/</guid><description>&lt;h2 id="intro">Intro&lt;/h2>
&lt;p>While there&amp;rsquo;s a lot of skepticism about using AI to automate tasks, I&amp;rsquo;ve found AI tools to be invaluable allies that enhance my results and handle niche tasks.&lt;/p>
&lt;h3 id="-reflecting-on-my-llm-usage">🤖 Reflecting on My LLM Usage&lt;/h3>
&lt;p>I used to pay for OpenAI &amp;amp; Anthropic Claude API access and regularly automated several tasks until recently when DeepSeek-v3 was released, cutting costs by at least 50% while maintaining the same response quality. Here are a few tasks I found useful after attempting more than 30+ workflows to incorporate and derive value.&lt;/p></description></item><item><title>2024 Wrapped</title><link>http://shivasurya.me/2024/12/26/2024-wrapped/</link><pubDate>Thu, 26 Dec 2024 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2024/12/26/2024-wrapped/</guid><description>&lt;h3 id="2024-wrapped">2024 Wrapped&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="https://shivasurya.me/books/reading/2024/12/19/books-i-read-2024.html">Read 12 books&lt;/a>&lt;/li>
&lt;li>Built &lt;a href="https://codepathfinder.dev/">Code-Pathfinder&lt;/a>, Open-source alternative to GitHub CodeQL
&lt;ul>
&lt;li>Received positive interest and interaction from various people working for Microsoft, GitHub, Elastic and TrailofBits&lt;/li>
&lt;li>Mind-blown to see people reaching out regarding the project :)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Welcomed our beautiful baby girl into the world! 👸
&lt;ul>
&lt;li>Grateful to &lt;a href="https://www.grhosp.on.ca/">Grand River Hospital&lt;/a> staff &amp;amp; volunteers for the exceptional care and support. 🫡 to Canada&amp;rsquo;s Healthcare&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Read and built security vulnerability classifier based on &lt;a href="https://www.manning.com/books/build-a-large-language-model-from-scratch">Building a Large Language Model from Scratch&lt;/a>&lt;/li>
&lt;li>494 days streak on &lt;a href="https://www.duolingo.com/profile/shivasurya">Duolingo&lt;/a> learning french 🇫🇷&lt;/li>
&lt;/ul>
&lt;p>And that&amp;rsquo;s a wrap!&lt;/p></description></item><item><title>Books I read in 2024</title><link>http://shivasurya.me/2024/12/19/books-i-read-2024/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2024/12/19/books-i-read-2024/</guid><description>&lt;h3 id="books">Books&lt;/h3>
&lt;p>If you’re looking for a great device to read books, highlight important sections, and take notes, the &lt;a href="https://www.amazon.ca/Introducing-Kindle-Scribe-the-first-Kindle-for-reading-and-writing/dp/B09BS5XWNS">Kindle Scribe&lt;/a> is a fantastic option. It’s especially handy for times like waiting at the airport/hospital, traveling by flight/train.&lt;/p>
&lt;p>Pro tip: You can always send pdf/epub to kindle and read it on kindle.&lt;/p>
&lt;h4 id="security--programming">Security &amp;amp; Programming&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.manning.com/books/build-a-large-language-model-from-scratch">Building a Large Language Model from Scratch&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.oreilly.com/library/view/building-an-interpreter/9781801071338/">Building Interpreter from Scratch&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.in/Serious-Cryptography-Practical-Introduction-Encryption/dp/1593278268?nsdOptOutParam=true">Serious Cryptography: A Practical Introduction to Modern Encryption&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.in/Crypto-Dictionary-Tidbits-Curious-Cryptographer-ebook/dp/B08PHS676K?nsdOptOutParam=true">Crypto Dictionary: 500 Tasty Tidbits for the Curious Cryptographer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.in/Crafting-Interpreters-Robert-Nystrom/dp/0990582930">Crafting Interpreters: An Illustrated Guide to Building an Interpreter&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.in/LLVM-Cookbook-Mayur-Pandey/dp/178528598X">LLVM Cookbook&lt;/a>&lt;/li>
&lt;/ul>
&lt;h4 id="non-fiction">Non-Fiction&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.amazon.in/Orbiting-Giant-Hairball-Corporate-Surviving/dp/0670879835?nsdOptOutParam=true">Orbiting the Giant Hairball: A Corporate Fool&amp;rsquo;s Guide to Surviving with Grace&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.in/How-Fail-Almost-Everything-Still-ebook/dp/B0CFD2YLB7?nsdOptOutParam=true">How to Fail at Almost Everything and Still Win Big: Kind of the Story of My Life&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.in/SIMMASANA-SECRET-V-IRAIANBU/dp/8123425910">சிம்மாசன சீக்ரெட்&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.in/Ego-Enemy-Ryan-Holiday/dp/1781257019">Ego is the Enemy&lt;/a> (reading)&lt;/li>
&lt;li>&lt;a href="https://www.amazon.in/Outlive-Science-Longevity-Peter-Attia/dp/1785044559">Outlive: The Science and Art of Longevity&lt;/a> (reading)&lt;/li>
&lt;/ul>
&lt;h4 id="personal-finance">Personal Finance&lt;/h4>
&lt;ul>
&lt;li>&lt;a href="https://www.amazon.in/MASTERING-MARKET-CYCLE-Howard-Marks/dp/1473695686">Mastering the Market Cycle&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.in/Most-Important-Thing-Uncommon-Thoughtful/dp/9353022797/262-6611992-5872946?psc=1">The Most Important Thing: Uncommon Sense for The Thoughtful Investor&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.in/Your-Money-Life-Transforming-Relationship/dp/0143115766">Your Money or Your Life&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.in/Millionaire-Fastlane-Crack-Wealth-Lifetime/dp/9390085497?sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&amp;amp;psc=1">Millionaire&amp;rsquo;s Fastlane&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.amazon.in/dhandho-investor-book-Team/dp/B0DPTCTYRX?sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&amp;amp;psc=1">Dhandho Investor&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>CodeQL: Eindhoven Quantifier Notation</title><link>http://shivasurya.me/2024/09/10/codeql-eindhoven-quantifier-notation/</link><pubDate>Tue, 10 Sep 2024 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2024/09/10/codeql-eindhoven-quantifier-notation/</guid><description>&lt;h3 id="introduction">Introduction&lt;/h3>
&lt;p>Recently, I have been thinking about aggregate functionality design for &lt;a href="https://codepathfinder.dev/">Code PathFinder&lt;/a>, &lt;a href="https://github.com/shivasurya/code-pathfinder">opensource alternative to GitHub CodeQL&lt;/a>. SQL aggregate functions such as &lt;code>SUM&lt;/code>, &lt;code>AVG&lt;/code>, &lt;code>MIN&lt;/code>, &lt;code>MAX&lt;/code> are combined with &lt;code>WHERE&lt;/code> and &lt;code>GROUP BY&lt;/code> to generate aggregate queries. However, I was wondering if there is a way to generate aggregate queries without using &lt;code>WHERE&lt;/code> and &lt;code>GROUP BY&lt;/code>. While going through &lt;a href="https://codeql.github.com/publications/ql-for-source-code-analysis.pdf">CodeQL design research paper&lt;/a>, I came across Eindhoven Quantifier Notation which is quite interesting, easy to understand and can be used to generate aggregate queries. This blog post will discuss about Eindhoven Quantifier Notation adopted by CodeQL.&lt;/p></description></item><item><title>Sherlock: Automate security code reviews with Cody AI</title><link>http://shivasurya.me/2024/06/27/automate-security-code-reviews-with-cody-ai/</link><pubDate>Thu, 27 Jun 2024 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2024/06/27/automate-security-code-reviews-with-cody-ai/</guid><description>&lt;h3 id="intro">Intro&lt;/h3>
&lt;h3 id="need-for-semi-autonomous-security-code-reviews">Need for semi-autonomous security code reviews&lt;/h3>
&lt;p>My job as a security engineer (application security context) is to read source code and perform security reviews. Most of the time, mainly corelate the source code with frameworks &amp;amp; libraries, understand context where the code executes and enumerate all security risks. While there are lot of second generation SAST scanning tools in the market which is good at identifying patterns, eliminate false positive, executes and brings up results in minutes. I believe,&lt;/p></description></item><item><title>Defining Boundaries &amp; Sinks for Inter-procedural Source Sink Analysis - Part 3</title><link>http://shivasurya.me/2024/03/08/building-inter-procedural-source-sink-analysis-from-scratch-part-3/</link><pubDate>Fri, 08 Mar 2024 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2024/03/08/building-inter-procedural-source-sink-analysis-from-scratch-part-3/</guid><description>&lt;p>This is the third part of the blog post series on building inter-procedural source sink analysis from scratch. In the first part, we have built the &lt;a href="https://shivasurya.me/static-analysis/sast/2023/08/27/building-simple-source-sink-analysis-from-scratch-part-1.html">intra-procedural source sink analysis&lt;/a>. In this blog post, I&amp;rsquo;ll discuss about defining boundaries, configs and sinks for inter-procedural analysis. ✨ This idea of defining boundaries and sinks is inspired from the &lt;a href="https://codeql.github.com/">CodeQL&lt;/a> library and while discussing with my colleague at &lt;a href="https://www.swag.uwaterloo.ca/">SWAG lab @ uwaterloo&lt;/a>.&lt;/p>
&lt;h3 id="plan">Plan&lt;/h3>
&lt;p>While tools like CodeQL has well-defined support for libraries and framework such as &lt;a href="https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/frameworks/android/Android.qll/module.Android.html">Android CodeQL&lt;/a> these libraries has predefined boundaries and sinks. But, start from scratch, we need to define our own boundaries and sinks. The boundaries are the entry points and sinks are the exit points.&lt;/p></description></item><item><title>Deep dive on Android Java / Kotlin Deserialization Code Execution with Semgrep Detection</title><link>http://shivasurya.me/2024/01/24/java-deserialization-rce-android-application-layer/</link><pubDate>Wed, 24 Jan 2024 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2024/01/24/java-deserialization-rce-android-application-layer/</guid><description>&lt;h3 id="overview">Overview&lt;/h3>
&lt;p>In this post, we will explore code execution using Java &amp;amp; Kotlin Deserialization in Android Application. Additionally, We will discuss the Gadget Chain, Detection and Exploitation technique specific to Android. Achieving code execution in server side application via Java deserialization has higher chance of success than in client side android application. This is due to limitation of variety of loaded classes in android application. For instance &lt;code>com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl&lt;/code> is available in openJDK but not in Android JDK (but with modification). These limitation can be a blocker for loading arbitrary classes and executing payload (mostly compiled bytecode) in Android application. Well there are lot of deserialization vulnerabilities is published out there such as&lt;/p></description></item><item><title>2023 Wrap - Year in Review</title><link>http://shivasurya.me/2023/12/27/2023-wrap/</link><pubDate>Wed, 27 Dec 2023 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2023/12/27/2023-wrap/</guid><description>&lt;p>2023: A Year of Unexpected Adventures and Rich Insights. Here&amp;rsquo;s a glimpse into my journey and the accomplishments, lessons I&amp;rsquo;ve gathered along the way. Well this blog doesn&amp;rsquo;t feature lot of stuff, but I&amp;rsquo;m trying to keep it simple.&lt;/p>
&lt;h3 id="trimming-down-weight-loss-journey-">Trimming Down: Weight Loss Journey 🏋️&lt;/h3>
&lt;blockquote>
&lt;p>&amp;ldquo;Psychology for Money shapes your wealth; Noom shapes your health.&amp;rdquo;&lt;/p>&lt;/blockquote>
&lt;p>It&amp;rsquo;s been an inspiring weight loss journey with Noom, shedding 11 lbs since October 2023. My employer&amp;rsquo;s Step Challenge played a significant role. I appreciate Noom&amp;rsquo;s rewarding content and insights into eating psychology. The subscription and personal accountability guidance are truly valuable.&lt;/p></description></item><item><title>Building Inter-procedural Source Sink Analysis from Scratch - Part 2</title><link>http://shivasurya.me/2023/09/01/building-inter-procedural-source-sink-analysis-from-scratch-part-2/</link><pubDate>Fri, 01 Sep 2023 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2023/09/01/building-inter-procedural-source-sink-analysis-from-scratch-part-2/</guid><description>&lt;p>This is the second part of the blog post series on building inter-procedural source sink analysis from scratch. In the first part, we have built the &lt;a href="https://shivasurya.me/static-analysis/sast/2023/08/27/building-simple-source-sink-analysis-from-scratch-part-1.html">intra-procedural source sink analysis&lt;/a>. In this blog post, we will be building the inter-procedural source sink analysis.&lt;/p>
&lt;h3 id="plan">Plan&lt;/h3>
&lt;p>We&amp;rsquo;ll be parsing whole java project source code and generate AST using JavaParser. While traversing the AST, we will be collecting the method declaration and method invocation. We will be using graph theory algorithm to find the path from source to sink. The source is the method declaration and the sink is the method invocation. The method declaration is the node and the method invocation is the edge. While classes may contain duplicate method names with different signatures, we will be using the fully qualified method name to uniquely identify the method. The fully qualified method name is the class name + method name + method arguments. The method arguments are used to differentiate the method overloading. The method declaration is the key and method invocation is the value in the hashmap. The hashmap is used to build the graph and find the path from source to sink.&lt;/p></description></item><item><title>Building A Simple Source-Sink Analysis in Java from Scratch - Part 1</title><link>http://shivasurya.me/2023/08/27/building-simple-source-sink-analysis-from-scratch-part-1/</link><pubDate>Sun, 27 Aug 2023 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2023/08/27/building-simple-source-sink-analysis-from-scratch-part-1/</guid><description>&lt;h3 id="overview-of-source-sink-analysis">Overview of Source Sink Analysis&lt;/h3>
&lt;p>Source Sink Analysis is a type of basic static analysis that detects the flow of information from a source to a sink. A source is a place where the information is coming from and a sink is a place where the information is going to. For example, a source can be a user input and a sink can be a database query. If the user input is not sanitized, it can lead to SQL Injection. Apart from source sink techniques, there are other techniques like taint analysis, control flow graph, data flow analysis, etc. which are used to detect vulnerabilities in the code. In this blog post, we will be building a simple source sink analysis in Java from scratch.&lt;/p></description></item><item><title>From ArcGIS to Mapbox: How Cody AI Made My Web App Shine</title><link>http://shivasurya.me/2023/07/02/sourcegraph-cody/</link><pubDate>Sun, 02 Jul 2023 00:00:00 +0000</pubDate><guid>http://shivasurya.me/2023/07/02/sourcegraph-cody/</guid><description>&lt;p>Imagine being a newcomer to Canada around 2019, relying on public transit to navigate the Waterloo region. Like many others, I found myself frustrated with the occasional unreliability of Google Maps when searching for public transit options. However, my luck changed when I stumbled upon a cool command line tool developed by a UWaterloo student that predicted the next bus or LRT arrival time within seconds. This discovery led me to GRT.ca, a website providing real-time transit feed updates, allowing me to track the exact location of buses and LRTs. Inspired by this newfound resource, I created a naive map using ArcGIS ESRI Maps, loading location information from the protobuf feed and deploying it on my domain, livemap.shivasurya.me. This map became my go-to tool for finding the precise location of the next bus or LRT.&lt;/p></description></item></channel></rss>