<story><title>The Database Inside Your Codebase</title><url>https://feifan.blog/posts/the-database-inside-your-codebase</url></story><parent_chain></parent_chain><comment><author>erichanson</author><text>Check out Aquameta, a web dev stack built entirely in PostgreSQL (self-plug):  &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;aquametalabs&amp;#x2F;aquameta&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;aquametalabs&amp;#x2F;aquameta&lt;/a&gt;&lt;p&gt;There&amp;#x27;s a ton down this rabbit hole.  One of the great anomalies of our industry is that we&amp;#x27;ve used the database to bring coherence to countless &amp;quot;user domains&amp;quot;, but never applied the same principles to our own stack.  The benefits of doing so compound exponentially.</text></comment>
<story><title>The Database Inside Your Codebase</title><url>https://feifan.blog/posts/the-database-inside-your-codebase</url></story><parent_chain></parent_chain><comment><author>simonw</author><text>I&amp;#x27;ve been playing with some ideas for creating a SQLite database of classes, functions and suchlike found in Python code, so I can analyze my codebases with SQL queries.&lt;p&gt;I&amp;#x27;ve had some good initial results with &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;davidhalter&amp;#x2F;jedi&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;davidhalter&amp;#x2F;jedi&lt;/a&gt; - which is the Python introspection library that powers various editor autocomplete implementations. I have a prototype which uses that to create a SQL database of functions, classes and places that they are used.&lt;p&gt;I&amp;#x27;ve also been playing with &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;github&amp;#x2F;semantic&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;github&amp;#x2F;semantic&lt;/a&gt; - it can parse Python, JavaScript and other languages and offers a --json-symbols option which dumps out a JSON object showing the symbols (functions, variables etc) found in the code.</text></comment>