<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <generator uri="http://jekyllrb.com" version="4.3.3">Jekyll</generator>
  
  
  <link href="https://vanja.oljaca.me/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://vanja.oljaca.me/" rel="alternate" type="text/html" />
  <updated>2024-01-25T04:16:04+00:00</updated>
  <id>https://vanja.oljaca.me//</id>

  
    <title type="html">Vanja Oljaca</title>
  

  
    <subtitle>Personal professional blog.</subtitle>
  

  

  
  
    <entry>
      
      <title type="html">Autosummarize Autocommit</title>
      
      
      <link href="https://vanja.oljaca.me/posts/autosummarize-autocommit.html" rel="alternate" type="text/html" title="Autosummarize Autocommit" />
      
      <published>2024-01-18T00:00:00+00:00</published>
      <updated>2024-01-18T00:00:00+00:00</updated>
      <id>https://vanja.oljaca.me/posts/autosummarize-autocommit</id>
      <content type="html" xml:base="https://vanja.oljaca.me/posts/autosummarize-autocommit.html">&lt;p&gt;In my quest to automate as much of life process as possible I have decided to stop wasting mental energy on git commit messages. I will likely not read them anyway, and decision fatigue is a flow killer.&lt;/p&gt;

&lt;p&gt;I know I’ve seen people discuss this sort of thing before, but a quick search didn’t find any easy-to-use implementations, and since I wanted to extend my personal platform to implement this anyway, I built my own.&lt;/p&gt;

&lt;p&gt;The high-level implementation was easy and simple:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-pseudocode&quot;&gt;Every ~24 hours:
	Go to each folder that I write code in
	Collect changes into a diff
	Send diff to ChatGPT for a summary
	Commit changes
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Of course the implementation always ends up a little hairier than expected: &lt;a href=&quot;https://github.com/vanjaoljaca/vanjacloud.local/blob/1585b4225fe6d8687fe55de6265c4fae50d0ba1f/handlers/autocommit.ts#L86&quot;&gt;implementation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this situation I had to do some back and forth with git commands - I trusted copilot to write a little too much code for me which created some holes. Specifically, the method to stage changes and the method to check for changes were using different sources which caused some awkwardness.&lt;/p&gt;

&lt;p&gt;But, we made it through that and achieved a good result:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://pbs.twimg.com/media/GEGC9FzbAAAuWeW?format=png&amp;amp;name=medium&quot; alt=&quot;Image&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is where the autosummarizing autocommitter summarized and committed itself.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I find it a little verbose, but I haven’t been able to mute it yet. I will tweak that over time and see how it goes. In the meanwhile you might be interested in the summarizer implementation: &lt;a href=&quot;https://github.com/vanjaoljaca/vanjacloud.local/blob/1585b4225fe6d8687fe55de6265c4fae50d0ba1f/util/gitsummarize.ts#L15&quot;&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next up I think I’ll get it auto-updating the readme.md &amp;amp; protecting me from committing keys. Originally my idea was to have incremental commit every minute, and have an LLM backed agent which ‘squashes’ commits into neat packages. I think that will be more work than I’m ready to commit at the moment though.&lt;/p&gt;

&lt;p&gt;The real long term goal is to commit every character as it goes in, including the backspaces and rewrites. Then we use that as additional context for the commit message, similar to this tweet:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;assets/2024-01-18-autosummarize-autocommit/image-20240121091805695.png&quot; alt=&quot;image-20240121091805695&quot; /&gt;&lt;/p&gt;

&lt;p&gt;https://twitter.com/karpathy/status/1748784260318990496&lt;/p&gt;

&lt;p&gt;You can imagine a future work environment that automatically commits every keystroke &amp;amp; records your verbalized through process as you code. From that it can generate a commit messages and documentation that highlight important pitfalls and design decisions. It could even bring up relevent reminders you left yourself as you work! Someday, for a brief period, we will be coding in a blissful flow state &amp;amp; everything will be perfect.&lt;/p&gt;

&lt;p&gt;Then it will all be automated away.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Join the conversation &amp;amp; leave comments on &lt;a href=&quot;https://twitter.com/vanjaoljaca/status/1750359806974775452&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;</content>

      
      
      
      
      

      

      

      

      
        <summary type="html">In my quest to automate as much of life process as possible I have decided to stop wasting mental energy on git commit messages. I will likely not read them anyway, and decision fatigue is a flow killer.</summary>
      

      
      
    </entry>
  
  
  
    <entry>
      
      <title type="html">Brainstorming</title>
      
      
      <link href="https://vanja.oljaca.me/posts/b.html" rel="alternate" type="text/html" title="Brainstorming" />
      
      <published>2023-06-18T00:00:00+00:00</published>
      <updated>2023-06-18T00:00:00+00:00</updated>
      <id>https://vanja.oljaca.me/posts/b</id>
      <content type="html" xml:base="https://vanja.oljaca.me/posts/b.html">&lt;p&gt;Today I am brainstorming things I want to have the ability to do (muscle memory style) at some recent point in the future.&lt;/p&gt;

&lt;h3 id=&quot;video&quot;&gt;Video&lt;/h3&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; checked=&quot;checked&quot; /&gt;Move a video from phone to laptop&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;chatgpt&quot;&gt;ChatGPT&lt;/h3&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; checked=&quot;checked&quot; /&gt;Write a plugin&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; checked=&quot;checked&quot; /&gt;Merge API &amp;amp; web domains (evaluate domains)&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; checked=&quot;checked&quot; /&gt;Invoke a direct json function&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; checked=&quot;checked&quot; /&gt;Use GPT-Engineer to make something [Attempted, Need GPT4]&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;Auto export conversations / import to vanjacloud =&amp;gt; generative&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;Text based agent environment (multi agent interaction)&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; checked=&quot;checked&quot; /&gt;Fine-tune a model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;assets/2023-06-18-b/image-20230622224234311.png&quot; alt=&quot;image-20230622224234311&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;vanja-cloud-endpoints&quot;&gt;Vanja Cloud Endpoints&lt;/h3&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; checked=&quot;checked&quot; /&gt;WhatsApp&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; checked=&quot;checked&quot; /&gt;Browser&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; checked=&quot;checked&quot; /&gt;ChatGPT (chat)&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;Google Auth&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;ChatGPT (import)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;social&quot;&gt;Social&lt;/h3&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;
    &lt;p&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; checked=&quot;checked&quot; /&gt;Somewhere to post technical plans&lt;/p&gt;
  &lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;
    &lt;p&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;try llama locally&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;ai&quot;&gt;AI&lt;/h3&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;Spaced repetition learning&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; checked=&quot;checked&quot; /&gt;Play with aider&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What if the blog was a short intro / description, and the rest of the blog was a chatgpt discussion?&lt;/p&gt;

&lt;p&gt;An LLM front end web browser. Browse through an LLM&lt;/p&gt;

&lt;p&gt;Talk about goals:&lt;/p&gt;

&lt;p&gt;First 3-5 small projects for attention&lt;/p&gt;

&lt;p&gt;Then commit to something medium (expose something I find of value)&lt;/p&gt;

&lt;p&gt;Then maybe another attention project to redirect attention on main project&lt;/p&gt;

&lt;p&gt;Attention is good for motivation and enforcing progress&lt;/p&gt;

&lt;p&gt;Build in public helps motivate with carrot &amp;amp; stick&lt;/p&gt;</content>

      
      
      
      
      

      

      

      

      
        <summary type="html">Some tasks I want to be able to execute on a whim.</summary>
      

      
      
    </entry>
  
  
  
    <entry>
      
      <title type="html">A First Post</title>
      
      
      <link href="https://vanja.oljaca.me/posts/a-first-post.html" rel="alternate" type="text/html" title="A First Post" />
      
      <published>2023-06-18T00:00:00+00:00</published>
      <updated>2023-06-18T00:00:00+00:00</updated>
      <id>https://vanja.oljaca.me/posts/a-first-post</id>
      <content type="html" xml:base="https://vanja.oljaca.me/posts/a-first-post.html">&lt;div class=&quot;language-typescript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;c1&quot;&gt;// do stuff&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;How I’m making the blog:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Hugo? https://gohugo.io/getting-started/quick-start/&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;edit/update: using jekyll. I really dislike how this mixes the site build files with the blog text content, but it will do for now.&lt;/p&gt;</content>

      
      
      
      
      

      

      

      

      
        <summary type="html">Just a little test...</summary>
      

      
      
    </entry>
  
  
</feed>
