<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>jozef-rudy</title>
    <subtitle>Posts on programming, trading and analytics.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://jozefrudy.com/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://jozefrudy.com"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2025-06-03T00:00:00+00:00</updated>
    <id>https://jozefrudy.com/atom.xml</id>
    <entry xml:lang="en">
        <title>Building Server Driven Smart Filter With Syntax Highlighting and Intellisense</title>
        <published>2025-06-03T00:00:00+00:00</published>
        <updated>2025-06-03T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jozefrudy.com/intellisense-search-codemirror/"/>
        <id>https://jozefrudy.com/intellisense-search-codemirror/</id>
        
        <summary type="html">&lt;p&gt;If you are reading this then most probably you are a developer and most probably you have experience with IDEs. IDEs have become indispensible for developers, where smart intellisense suggestions simplify your life. I wanted that same magic for my web app’s search functionality. Here’s how I built an intelligent search system using CodeMirror on the frontend and F# doing the heavy lifting on the backend.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-problem&quot;&gt;The Problem&lt;&#x2F;h2&gt;
&lt;p&gt;I wanted users to filter cryptocurrencies using natural language like &lt;code&gt;name:Bitcoin marketCap&amp;gt;1B OR ticker:ETH&lt;&#x2F;code&gt;. I wanted search to be smart enough to suggest completions, highlight syntax errors, and handle complex queries without breaking.&lt;&#x2F;p&gt;
&lt;p&gt;After few iterations I arrived at the reasonable model. Keep minimal logic with syntax highlighting based on codemirror on frontend, and use F# where it shines, for both intellisense and expression translation into AST.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;Codemirror&lt;&#x2F;code&gt; is my favourite go-to editor, which is heavily customizable and browser-based. You could compare it to &lt;code&gt;vscode&lt;&#x2F;code&gt;, which is very heavy and you would have a hard time customizing it into a single line text-like field.&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>How I Finally Embraced Text Mode (or How I Use F# in Helix)</title>
        <published>2025-04-29T00:00:00+00:00</published>
        <updated>2025-04-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jozefrudy.com/helix/"/>
        <id>https://jozefrudy.com/helix/</id>
        
        <summary type="html">&lt;p&gt;I had been using &lt;code&gt;helix&lt;&#x2F;code&gt; for around a year before I finally switched from &lt;code&gt;rider&lt;&#x2F;code&gt; to &lt;code&gt;helix&lt;&#x2F;code&gt; for F# programming. Initially, I used &lt;code&gt;helix&lt;&#x2F;code&gt; only for editing custom text files without any Language Server Protocols (LSPs).&lt;&#x2F;p&gt;
&lt;p&gt;Then I discovered how easy it is to set up LSP for virtually any text format you can think of, such as &lt;code&gt;docker compose&lt;&#x2F;code&gt;, &lt;code&gt;json&lt;&#x2F;code&gt;, &lt;code&gt;yaml&lt;&#x2F;code&gt;, &lt;code&gt;markdown&lt;&#x2F;code&gt;, or even &lt;code&gt;english grammar&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;And that’s not even mentioning LSPs for programming languages—I now wonder how I could have lived without them before.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;jozefrudy.com&#x2F;helix&#x2F;helix.webp&quot; alt=&quot;helix&quot; &#x2F;&gt;&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Why log returns matter</title>
        <published>2025-04-02T00:00:00+00:00</published>
        <updated>2025-04-02T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jozefrudy.com/return-aggregation/"/>
        <id>https://jozefrudy.com/return-aggregation/</id>
        
        <summary type="html">&lt;p&gt;Log returns are a very useful concept when working with timeseries. It turns out given statement is even more true when working with time-series database and materialized views in &lt;strong&gt;clickhouse&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;jozefrudy.com&#x2F;return-aggregation&#x2F;log_returns.webp&quot; alt=&quot;log_returns&quot; &#x2F;&gt;&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>Parsing trading rules</title>
        <published>2025-03-12T00:00:00+00:00</published>
        <updated>2025-03-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jozefrudy.com/parsing/"/>
        <id>https://jozefrudy.com/parsing/</id>
        
        <summary type="html">&lt;p&gt;I will describe here how in &lt;strong&gt;CryptoQuant&lt;&#x2F;strong&gt; I architected parsing user-input trading rules into a machine runnable AST. Parser source is available at &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;jozefRudy&#x2F;trading-rule-parser&quot;&gt;github.com&#x2F;jozefRudy&#x2F;trading-rule-parser&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;This parsing system forms the critical bridge between human-readable trading strategies and executable code that can efficiently process market data - ultimately allowing our users to automate sophisticated trading strategies without requiring deep programming expertise.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;jozefrudy.com&#x2F;parsing&#x2F;parsing.webp&quot; alt=&quot;parsing&quot; &#x2F;&gt;&lt;&#x2F;p&gt;</summary>
        
    </entry>
    <entry xml:lang="en">
        <title>How CryptoQuant is built</title>
        <published>2025-02-22T00:00:00+00:00</published>
        <updated>2025-02-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jozefrudy.com/architecture/"/>
        <id>https://jozefrudy.com/architecture/</id>
        
        <summary type="html">&lt;p&gt;&lt;strong&gt;CryptoQuant&lt;&#x2F;strong&gt; is basically one person startup, hence, the architectural choices made need to be pragmatic.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;jozefrudy.com&#x2F;architecture&#x2F;builder.webp&quot; alt=&quot;builder&quot; &#x2F;&gt;&lt;&#x2F;p&gt;</summary>
        
    </entry>
</feed>
