<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: Puchaczov</title><link>https://news.ycombinator.com/user?id=Puchaczov</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 04 Jul 2026 10:58:49 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=Puchaczov" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by Puchaczov in "Ask HN: What are you working on? (May 2026)"]]></title><description><![CDATA[
<p>interesting idea!</p>
]]></description><pubDate>Sun, 10 May 2026 19:31:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48087033</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=48087033</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48087033</guid></item><item><title><![CDATA[New comment by Puchaczov in "Show HN: Musoq – Query Anything with SQL Syntax (Git, C#, CSV, Can DBC)"]]></title><description><![CDATA[
<p>Thanks! Would love to hear about your specific support scenarios :)</p>
]]></description><pubDate>Sun, 22 Dec 2024 12:24:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=42485919</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=42485919</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42485919</guid></item><item><title><![CDATA[New comment by Puchaczov in "Show HN: Musoq – Query Anything with SQL Syntax (Git, C#, CSV, Can DBC)"]]></title><description><![CDATA[
<p>You actually don't need any special type system or complex infrastructure for this. Each data source can handle its own data representation and operations.
For GIS data, you could create a plugin that naturally handles spatial operations. Here's how it could work:<p>select 
    Id,
    DistanceBetween(s.FromPoint(-73.935242, 40.730610)) as Distance,
    s.IsBetween(s.FromPoint(-73.935242, 40.730610)) as IsInArea
from #gis.shapefile('map.shp') s<p>You could even combine it with other data sources. For example, if you have geometry data in a CSV:<p>select 
    sfg.DistanceBetween(sfg.FromPoint(..., ...)) 
from #csv.file(...) c 
cross apply #gis.ShapeFromGeometry(c.Geometry) sfg</p>
]]></description><pubDate>Fri, 20 Dec 2024 07:11:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=42468943</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=42468943</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42468943</guid></item><item><title><![CDATA[New comment by Puchaczov in "Show HN: Musoq – Query Anything with SQL Syntax (Git, C#, CSV, Can DBC)"]]></title><description><![CDATA[
<p>I see it a bit that way: while osquery focuses on OS-level queries and steampipe on cloud services, Musoq is more developer-centric, I'm using it like swiss army knife for various thing, something like sed or grep. You can ofcourse create plugins that covers what mentioned tools do or even, use that tools as a plugin for musoq but in general - I'm not going to compete with any of them, I'm filling my own niche - flexible developer tool.</p>
]]></description><pubDate>Thu, 19 Dec 2024 07:02:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=42459128</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=42459128</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42459128</guid></item><item><title><![CDATA[New comment by Puchaczov in "Show HN: Musoq – Query Anything with SQL Syntax (Git, C#, CSV, Can DBC)"]]></title><description><![CDATA[
<p>Thanks!
It would be great to ask what kind of usage you have in mind? I've currently been using the Roslyn plugin mainly with the engine repository itself because it helps me extract queries from tests, I use it in combination with GPT, which helps me create documentation. In the longer term, I would like this plugin to help me refactor some problematic code fragments, but for that I will need to further develop the Roslyn integration itself.</p>
]]></description><pubDate>Thu, 19 Dec 2024 06:23:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=42458929</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=42458929</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42458929</guid></item><item><title><![CDATA[New comment by Puchaczov in "Show HN: Musoq – Query Anything with SQL Syntax (Git, C#, CSV, Can DBC)"]]></title><description><![CDATA[
<p>You can query with --format [raw|csv|json|interpreted_json]<p>This will output pure json or csv. This way you can use other tools like jq, grep, csvtoolkit or whatever you need further process your data.<p>to dig deeper, just look at: <a href="https://github.com/Puchaczov/Musoq.CLI">https://github.com/Puchaczov/Musoq.CLI</a><p>After some thought: you could have also asked whether it's possible to add new data sources that you need to query, and the answer is of course yes! It's actually quite simple and there are many examples. Each data source tool is just a plugin implementing the appropriate interfaces. You can look at some example projects and see how they implement their data source here:
<a href="https://github.com/Puchaczov/Musoq.DataSources">https://github.com/Puchaczov/Musoq.DataSources</a></p>
]]></description><pubDate>Thu, 19 Dec 2024 06:09:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=42458866</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=42458866</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42458866</guid></item><item><title><![CDATA[New comment by Puchaczov in "Show HN: Musoq – Query Anything with SQL Syntax (Git, C#, CSV, Can DBC)"]]></title><description><![CDATA[
<p>Do you have something specific in your mind? I would love to hear that! Unexpected approach is what driving me usually</p>
]]></description><pubDate>Thu, 19 Dec 2024 06:03:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=42458847</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=42458847</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42458847</guid></item><item><title><![CDATA[Show HN: Musoq – Query Anything with SQL Syntax (Git, C#, CSV, Can DBC)]]></title><description><![CDATA[
<p>Hey, For those of you who don't know my little tool Musoq, I wanted to introduce it as a small tool that allows you to query with SQL-like syntax without any database.<p>It allows you to query various things from niche ones like CAN DBC files, weird ones like C# code, interesting ones with Git querying to regular stuff like CSV, TSV and various others.<p>I am quite a bit experimenting with various things so I'm hybridizing the engine with LLMs or doing other weird stuff that are more or less practical :-)<p>I wanted also to share some recent developments in this little project as I hope it might be interesting to some of you.<p>New Experimental Plugins:
* <i>Git Plugin (Beta)</i>: I've been working on Git repository querying - managed to test it on the EF Core repo (16k commits) and it seems to work okay
* <i>Roslyn Plugin (Beta)</i>: Added basic C# code analysis capabilities<p>For the very first time:
I've extended CROSS APPLY to use computed results as arguments! Now the operator can use values from the current row as inputs. Here's an example:<p><pre><code>  SELECT
    f.DirectoryName,
    f.FileName
  FROM #os.directories('/some/path', false) d
  CROSS APPLY #os.files(d.FullName, true) f
  WHERE d.Name IN ('Folder1', 'Folder2')
</code></pre>
After another pack of fixes I'm finally able to query multiple git repositories AT ONCE!<p><pre><code>  with ProjectsToAnalyze as (
    select
        dir2.FullName as FullName
    from #os.directories('D:\repos', false) dir1
    cross apply #os.directories(dir1.FullName, false) dir2
    where
        dir2.Name = '.git'
  )
  select
    c.Message,
    c.Author,
    c.CommittedWhen
  from ProjectsToAnalyze p cross apply #git.repository(p.FullName) r 
  cross apply r.Commits c
  where c.AuthorEmail = 'my-email@email.ok'
  order by c.CommittedWhen desc
</code></pre>
Under the Hood:
- Added a <i>Buckets</i> feature for memory management (currently just testing it with the Roslyn plugin)<p>- Moved to <i>.NET 8</i><p>- Added <i>CROSS/OUTER APPLY</i> operators<p>- Made some improvements to error messages and runtime behavior<p>New piping features:
I've been experimenting with piping capabilities:
* <i>Image Analysis with LLMs</i>:<p><pre><code>  ./Musoq.exe image encode "image.jpg" | ./Musoq.exe run query "select s.Shop, s.ProductName, s.Price from ..."
</code></pre>
* <i>Text Data Extraction</i>:<p><pre><code>  Get-Content "ticket.txt" | ./Musoq.exe run query "select t.TicketNumber, t.CustomerName ... from #stdin.text('Ollama', 'llama3.1') t"
</code></pre>
* <i>Data Source Combination</i>:<p><pre><code>  { docker image ls; ./Musoq.exe separator; docker container ls } | ./Musoq.exe run query "..."
</code></pre>
I'm working on comprehensive documentation:
I encourage you especially to look at section "Practical Examples and Applications" and "Data Sources" where you can look at all the tables the tool currently provides. <<a href="https://puchaczov.github.io/Musoq/" rel="nofollow">https://puchaczov.github.io/Musoq/</a>><p>Other Changes:<p>- Made some improvements to OS and Archive data sources (OS can now query metadata like EXIF)<p>- Added a few fields to CAN DBC plugin<p>- Command outputs can now be used as inputs for queries<p>I'm hoping to:<p>- Improve stability and add more tests<p>- Flesh out the documentation<p>- Work on package distribution (Scoop, Ubuntu packages)<p>- Share some examples of source code querying with Roslyn<p>Ideas for later:<p>- WHERE robust analysis and optimizations<p>- DISTINCT operator implementation<p>- PROTOBUF schema support<p>- Performance improvements<p>- Query parallelization<p>- Recursive CTEs<p>- Subqueries<p>I'd really appreciate any thoughts or feedback!<p>The documentation section where I write a short analysis of EF Core with git plugin: <<a href="https://puchaczov.github.io/Musoq/practical-examples-and-applications/analysis-of-the-efcore-repository.html" rel="nofollow">https://puchaczov.github.io/Musoq/practical-examples-and-app...</a>></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42453650">https://news.ycombinator.com/item?id=42453650</a></p>
<p>Points: 56</p>
<p># Comments: 15</p>
]]></description><pubDate>Wed, 18 Dec 2024 19:02:56 +0000</pubDate><link>https://github.com/Puchaczov/Musoq</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=42453650</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42453650</guid></item><item><title><![CDATA[Show HN: Musoq, SQL like language with LLM experimental integrations]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/Puchaczov/Musoq">https://github.com/Puchaczov/Musoq</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=39351418">https://news.ycombinator.com/item?id=39351418</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 12 Feb 2024 22:30:51 +0000</pubDate><link>https://github.com/Puchaczov/Musoq</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=39351418</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39351418</guid></item><item><title><![CDATA[My little articles about tool I'm creating]]></title><description><![CDATA[
<p>Article URL: <a href="https://puchaczov.github.io/Musoq/articles/">https://puchaczov.github.io/Musoq/articles/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=24626272">https://news.ycombinator.com/item?id=24626272</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 29 Sep 2020 11:11:00 +0000</pubDate><link>https://puchaczov.github.io/Musoq/articles/</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=24626272</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24626272</guid></item><item><title><![CDATA[Analyzing space consumption on partition with Windows and SQL]]></title><description><![CDATA[
<p>Article URL: <a href="https://puchaczov.github.io/Musoq/articles/">https://puchaczov.github.io/Musoq/articles/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=21652021">https://news.ycombinator.com/item?id=21652021</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 27 Nov 2019 20:54:20 +0000</pubDate><link>https://puchaczov.github.io/Musoq/articles/</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=21652021</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21652021</guid></item><item><title><![CDATA[Show HN: Musoq – SQL for various data sources]]></title><description><![CDATA[
<p>Article URL: <a href="https://puchaczov.github.io/Musoq/">https://puchaczov.github.io/Musoq/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=21275236">https://news.ycombinator.com/item?id=21275236</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 16 Oct 2019 20:34:35 +0000</pubDate><link>https://puchaczov.github.io/Musoq/</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=21275236</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=21275236</guid></item><item><title><![CDATA[New comment by Puchaczov in "Ask HN: Those making $500+/month on side projects in 2018 – Show and tell"]]></title><description><![CDATA[
<p>Can you say something more? How you earn moneys here? What's your business model?</p>
]]></description><pubDate>Wed, 22 Aug 2018 19:55:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=17821576</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=17821576</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17821576</guid></item><item><title><![CDATA[New comment by Puchaczov in "Show HN: Musoq – Use SQL on various data sources"]]></title><description><![CDATA[
<p>This post will be a bit long, sorry for that :)<p>Mostly, I'm using it for ad-hoc querying as it allows for semi-automatic columns detection. For example, my bank account file I am querying shows how I'm spending my moneys. It looks like below and I have few more advanced queries doing some different calculations on my CSV file.<p>select 
	ExtractFromDate(DataOperacji, 'month') as 'Month',
	ExtractFromDate(DataOperacji, 'year') as 'Year',
	SumIncome(ToDecimal(Kwota, 'pl-PL')) as 'Income',
	SumOutcome(ToDecimal(Kwota, 'pl-PL')) as 'Outcome',
	SumIncome(ToDecimal(Kwota, 'pl-PL')) - Abs(SumOutcome(ToDecimal(Kwota, 'pl-PL'))) as 'Total'
from #csv.file('C:\some\path\my_account.csv', ';', true, 37)
group by 
	ExtractFromDate(DataOperacji, 'month'),
	ExtractFromDate(DataOperacji, 'year')<p>from another point of usage, I'm sometimes using it to find files in folders as I can both query file properties and their content. Also, I was testing it with querying git repository (I was using <a href="https://github.com/libgit2/libgit2sharp" rel="nofollow">https://github.com/libgit2/libgit2sharp</a>), If you are curious about some statistics, then probably it would be usable for you.<p>Another thing I would imagine is that when you have such a huge compressed file that you can't unpack, then you could query such a file and unpack only what you needs. It doesn't have to be a packed file only. It can be such a big log file that most of editors wouldn't be able to open.<p>Another thing, If you are an administrator and have to move buch of files or create yourself a view how the files looks in more aggregated way, then it will be probably good for you (I'm not an administrator and never was so please take into consideration that my point of view may be clearly wrong)<p>Different thing, If you've got a bunch of IOT devices, you would end up writing plugin that gets data from such devices and provides you rich statistics about various things.<p>Another possibility, you need event (for scheduling purposes) that fits some sophisticated time pattern, you can't use CRON becouse it's syntax has some serious limitations, probably it will be better to query time for such a pattern and store it somewhere. Otherwise you would need writing a lot of single CRON expressions that all fits your requirements.<p>I will go right now into some crazy imaginations like:<p>You would end up writing a plugin that extract some statistics from photos (like is the image contains people, how many of them are, what are the color of sky, does it has sun?) and then query some huge photo sets about how many of images contains people and also have a sky as a background). 
It should be really fast as your plugin can use some C++ library to fastly process images. Because you are fully controlling with what and how you feeds evaluator, you can use parallelism to process multiple files at once :)</p>
]]></description><pubDate>Fri, 20 Jul 2018 22:53:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=17579641</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=17579641</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17579641</guid></item><item><title><![CDATA[New comment by Puchaczov in "Show HN: Musoq – Use SQL on various data sources"]]></title><description><![CDATA[
<p>I wasn't aware of that, thank you!<p>I was targeting to be succesor of LogParser more :)</p>
]]></description><pubDate>Fri, 20 Jul 2018 21:24:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=17579066</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=17579066</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17579066</guid></item><item><title><![CDATA[New comment by Puchaczov in "Show HN: Musoq – Use SQL on various data sources"]]></title><description><![CDATA[
<p>look here: <a href="https://github.com/Puchaczov/Musoq/wiki/Plugins" rel="nofollow">https://github.com/Puchaczov/Musoq/wiki/Plugins</a><p>You can also look how implemented are default plugins, especially flat file one, it's pretty easy<p><a href="https://github.com/Puchaczov/Musoq/tree/master/Musoq.Schema.FlatFile" rel="nofollow">https://github.com/Puchaczov/Musoq/tree/master/Musoq.Schema....</a></p>
]]></description><pubDate>Fri, 20 Jul 2018 21:07:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=17578949</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=17578949</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17578949</guid></item><item><title><![CDATA[New comment by Puchaczov in "Show HN: Musoq – Use SQL on various data sources"]]></title><description><![CDATA[
<p>Haven't looked at that, Looks very promising! I was creating Musoq to get rid of scripting such things. Can't find is it possible to parametrize easily the table you are connect into</p>
]]></description><pubDate>Fri, 20 Jul 2018 21:04:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=17578923</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=17578923</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17578923</guid></item><item><title><![CDATA[New comment by Puchaczov in "Show HN: Musoq – Use SQL on various data sources"]]></title><description><![CDATA[
<p>Easily accessible thing you can do is to write a plugin that takes data from database or databases and combine them with the second plugin that gets data from your rest api</p>
]]></description><pubDate>Fri, 20 Jul 2018 20:54:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=17578835</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=17578835</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17578835</guid></item><item><title><![CDATA[Show HN: Musoq – Use SQL on various data sources]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/Puchaczov/Musoq">https://github.com/Puchaczov/Musoq</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=17578355">https://news.ycombinator.com/item?id=17578355</a></p>
<p>Points: 71</p>
<p># Comments: 14</p>
]]></description><pubDate>Fri, 20 Jul 2018 19:53:24 +0000</pubDate><link>https://github.com/Puchaczov/Musoq</link><dc:creator>Puchaczov</dc:creator><comments>https://news.ycombinator.com/item?id=17578355</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17578355</guid></item></channel></rss>