<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en_US"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://akshatkarani.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://akshatkarani.github.io/" rel="alternate" type="text/html" hreflang="en_US" /><updated>2026-11-06T14:00:57+00:00</updated><id>https://akshatkarani.github.io/feed.xml</id><title type="html">Akshat Karani</title><subtitle>Akshat Karani is a Senior ML Engineer at Needl.ai, where he builds and owns the agent platform and the LLM layer behind AskNeedl. Writing on LLM agents, open source and Google Summer of Code.</subtitle><author><name>Akshat Karani</name></author><entry><title type="html">GSoC: The End</title><link href="https://akshatkarani.github.io/2019/08/18/phase3-part2/" rel="alternate" type="text/html" title="GSoC: The End" /><published>2019-08-18T00:00:00+00:00</published><updated>2019-08-18T00:00:00+00:00</updated><id>https://akshatkarani.github.io/2019/08/18/phase3-part2</id><content type="html" xml:base="https://akshatkarani.github.io/2019/08/18/phase3-part2/"><![CDATA[<p>So it’s the final week of GSoC, finally this dream (it’s feels like it!) of 3 months is coming to and end. Final code submission and evaluations start from tommorrow, so a update on my progress:</p>

<ul>
  <li>
    <p>I successfully implemented a new action for <code class="language-plaintext highlighter-rouge">DuplicateFileBear</code> - <code class="language-plaintext highlighter-rouge">DeleteFileAction</code>. Two instances of <code class="language-plaintext highlighter-rouge">DeleteFileAction</code> are passed when Result is yielded, one for each duplicate file. On applying first action it will delete first file and on applying the second action it will delete the second file.</p>

    <p>Click below to see a little demo
  <a href="https://asciinema.org/a/7focLNMjBEHz76TjnMi9FyHzb"><img src="https://asciinema.org/a/7focLNMjBEHz76TjnMi9FyHzb.svg" alt="Sorry couldn't display" /></a></p>
  </li>
  <li>
    <p>I finally put what I did in Phase 2 (Support for bears to provide multiple patches) to use. Initially I had thought of implementing a new bear which will provide multiple patches but couldn’t find a good idea for it. Then when I was playing around with some bears to look for some custom actions which will be helpful, I realised that <code class="language-plaintext highlighter-rouge">FilenameBear</code> might just be what I was looking for. So user can specify what type of naming convention (camelCase, snake_case, ..) should all the filenames follow, and if any file doesn’t follow this convention then coala will change it for you. But if user doesn’t specify what naming convention to follow and uses the bear then coala tries to guess the convention depending on the language, and if it cannot guess the <code class="language-plaintext highlighter-rouge">snake_case</code> is used. But now if coala cannot guess naming convention then multiple patches are provided - <code class="language-plaintext highlighter-rouge">snake_case</code> is the original patch, and <code class="language-plaintext highlighter-rouge">camelCase</code>, <code class="language-plaintext highlighter-rouge">Space Case</code>,.. are provided as alternate patches.</p>

    <p>Again click to see a demo of this
  <a href="https://asciinema.org/a/K8ESHZwYpvhmhjjuTwDf5RzBa"><img src="https://asciinema.org/a/K8ESHZwYpvhmhjjuTwDf5RzBa.svg" alt="Sorry couldn't display" /></a></p>

    <p>So you might have noticed one thing in the demo that alternate patches are shown as <code class="language-plaintext highlighter-rouge">Show AlternatePatch 1</code>, it would be better if <code class="language-plaintext highlighter-rouge">Show camelCase</code> or <code class="language-plaintext highlighter-rouge">Show Space Case</code> was displayed. But adding this feature will require initialising with action with a custom description which I plan on doing after GSoC ends.
  Click <a href="https://github.com/coala/coala-bears/pull/29480">here</a> to see the PR implementing this, <code class="language-plaintext highlighter-rouge">travis</code> and <code class="language-plaintext highlighter-rouge">appveyor</code> are passing but <code class="language-plaintext highlighter-rouge">coverage</code> is still not 100%. That needs to be done.</p>
  </li>
  <li>
    <p>I also have to write a tutorial which describes how to write bears which can suggest multiple patches. Also I have to write my final GSoC report. I will try to finish all the work today itself (hopefully).</p>
  </li>
</ul>

<p>So this most probably my last blog on GSoC and I have grown to like writing them. These three months having been a very good experience and I would like to thank <code class="language-plaintext highlighter-rouge">coala</code> for giving me this opportunity. I learned many things across this three months and also I have really liked contributing to open source. I hope I pass the final evaluations as well and get all of my code merged. Also thanks to my mentor <a href="https://github.com/abhishalya">Abhinav Kaushlya</a> who has been super active and replies almost immediately.
Goodbye!!</p>]]></content><author><name>Akshat Karani</name></author><category term="GSoC" /><category term="open-source" /><summary type="html"><![CDATA[So it’s the final week of GSoC, finally this dream (it’s feels like it!) of 3 months is coming to and end. Final code submission and evaluations start from tommorrow, so a update on my progress:]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://akshatkarani.github.io/assets/img/avatar.jpg" /><media:content medium="image" url="https://akshatkarani.github.io/assets/img/avatar.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Coding Phase 3 - Part 1</title><link href="https://akshatkarani.github.io/2019/08/08/phase3-part1/" rel="alternate" type="text/html" title="Coding Phase 3 - Part 1" /><published>2019-08-08T00:00:00+00:00</published><updated>2019-08-08T00:00:00+00:00</updated><id>https://akshatkarani.github.io/2019/08/08/phase3-part1</id><content type="html" xml:base="https://akshatkarani.github.io/2019/08/08/phase3-part1/"><![CDATA[<p>So I successfully completed Phase 2 of GSoC. It has not been a smooth ride, mainly because one of my mentor backed out of the project and one has not been active in forever. So I have not been getting many reviews on my work.</p>

<p>Anyways, I had completed most of my work in the first two phases, or so I thought. But I ran into a problem while work on a custom action for <code class="language-plaintext highlighter-rouge">DuplicateFileBear</code>. The action is <code class="language-plaintext highlighter-rouge">DeleteFileAction</code>, on applying it deletes a file. But that is not the problem, the problem arised when two instances of <code class="language-plaintext highlighter-rouge">DeleteFileAction</code> were passed by the bear. It was giving unexpected results, and the problem turned out that coala forms and <code class="language-plaintext highlighter-rouge">action_dict</code>, a dictionary with key as the name of the class of action object and value as the action object. Naturally key should be unique, and so the problem arised. I did face an similar problem in Phase 2, when more that one instances of <code class="language-plaintext highlighter-rouge">AlternatePatchAction</code> was added to the list of actions. That time I had added a custom <code class="language-plaintext highlighter-rouge">get_metadata</code> function to <code class="language-plaintext highlighter-rouge">AlternatePatchAction</code> class, but now this was not feasible. I needed a generic solution, first thought that came to my mind was to use a key which was unique to an object. After discussing with <code class="language-plaintext highlighter-rouge">@abhishalya</code> and <code class="language-plaintext highlighter-rouge">@Makman2</code>, I decided to change the key of <code class="language-plaintext highlighter-rouge">action_dict</code> to <code class="language-plaintext highlighter-rouge">id</code> of action object.</p>

<p>I spent most of my time doing this and fixing tests that were broken because of this. One of the change that was made was to remove <code class="language-plaintext highlighter-rouge">staticmethod</code> from <code class="language-plaintext highlighter-rouge">get_metadata</code> function. This led to some other changes in <code class="language-plaintext highlighter-rouge">Processing</code> module and one the tests in <code class="language-plaintext highlighter-rouge">Processing</code> module was breaking. I faced this issue in Phase 1 as well, but I could figure out the cause for this, so <code class="language-plaintext highlighter-rouge">@abhishalya</code> suggested a workaround for this. It worked that time, but now those changes had to be made, and I still couldn’t figure out why the test was failing.</p>

<p>To provide some context the test which was failing was this.</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    <span class="k">def</span> <span class="nf">test_without_default_action_and_unapplicable</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
        <span class="c1"># Use a result where no default action is supplied for and another one
</span>        <span class="c1"># where the action is not applicable.
</span>        <span class="n">old_is_applicable</span> <span class="o">=</span> <span class="n">ApplyPatchAction</span><span class="p">.</span><span class="n">is_applicable</span>
        <span class="n">ApplyPatchAction</span><span class="p">.</span><span class="n">is_applicable</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span>
            <span class="k">lambda</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="s">'The ApplyPatchAction cannot be applied'</span>
        <span class="p">)</span>

        <span class="bp">self</span><span class="p">.</span><span class="n">section</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">Setting</span><span class="p">(</span>
            <span class="s">'default_actions'</span><span class="p">,</span>
            <span class="s">'NoBear: ApplyPatchAction, YBear: ApplyPatchAction'</span><span class="p">))</span>
        <span class="k">with</span> <span class="n">LogCapture</span><span class="p">()</span> <span class="k">as</span> <span class="n">capture</span><span class="p">:</span>
            <span class="n">ret</span> <span class="o">=</span> <span class="n">autoapply_actions</span><span class="p">(</span><span class="bp">self</span><span class="p">.</span><span class="n">results</span><span class="p">,</span>
                                    <span class="p">{},</span>
                                    <span class="p">{},</span>
                                    <span class="bp">self</span><span class="p">.</span><span class="n">section</span><span class="p">,</span>
                                    <span class="bp">self</span><span class="p">.</span><span class="n">log_printer</span><span class="p">)</span>
        <span class="bp">self</span><span class="p">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">ret</span><span class="p">,</span> <span class="bp">self</span><span class="p">.</span><span class="n">results</span><span class="p">)</span>
        <span class="n">capture</span><span class="p">.</span><span class="n">check</span><span class="p">(</span>
            <span class="p">(</span><span class="s">'root'</span><span class="p">,</span> <span class="s">'WARNING'</span><span class="p">,</span> <span class="s">'YBear: The ApplyPatchAction cannot be applied'</span><span class="p">)</span>
        <span class="p">)</span>

        <span class="n">ApplyPatchAction</span><span class="p">.</span><span class="n">is_applicable</span> <span class="o">=</span> <span class="n">old_is_applicable</span>

        <span class="bp">self</span><span class="p">.</span><span class="n">section</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">Setting</span><span class="p">(</span>
            <span class="s">'no_autoapply_warn'</span><span class="p">,</span> <span class="bp">True</span><span class="p">))</span>
        <span class="k">with</span> <span class="n">LogCapture</span><span class="p">()</span> <span class="k">as</span> <span class="n">capture</span><span class="p">:</span>
            <span class="n">autoapply_actions</span><span class="p">(</span><span class="bp">self</span><span class="p">.</span><span class="n">results</span><span class="p">,</span>
                              <span class="p">{},</span>
                              <span class="p">{},</span>
                              <span class="bp">self</span><span class="p">.</span><span class="n">section</span><span class="p">,</span>
                              <span class="bp">self</span><span class="p">.</span><span class="n">log_printer</span><span class="p">)</span>
        <span class="n">capture</span><span class="p">.</span><span class="n">check</span><span class="p">()</span>

</code></pre></div></div>
<p>(Wow, the colour scheme sucks)
And the solution was adding one word:</p>
<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">ApplyPatchAction</span><span class="p">.</span><span class="n">is_applicable</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">old_is_applicable</span><span class="p">)</span>
</code></pre></div></div>

<p>You wouldn’t believe how many hours I wasted debugging this, and the cause turned out to be so silly. I knew that <code class="language-plaintext highlighter-rouge">is_applicable</code> was a <code class="language-plaintext highlighter-rouge">staticmethod</code> but never realised that reference to it, <code class="language-plaintext highlighter-rouge">old_is_applicable</code> was not.</p>

<p>Now there is only one and half week till Phase 3 evalutions start and I plan to finish all my work is this week itself. This will give me some time to get reviews on my PR and hopefully get them merged.</p>]]></content><author><name>Akshat Karani</name></author><category term="GSoC" /><category term="open-source" /><summary type="html"><![CDATA[So I successfully completed Phase 2 of GSoC. It has not been a smooth ride, mainly because one of my mentor backed out of the project and one has not been active in forever. So I have not been getting many reviews on my work.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://akshatkarani.github.io/assets/img/avatar.jpg" /><media:content medium="image" url="https://akshatkarani.github.io/assets/img/avatar.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Coding Phase 2 - Part 2</title><link href="https://akshatkarani.github.io/2019/07/19/phase2-part2/" rel="alternate" type="text/html" title="Coding Phase 2 - Part 2" /><published>2019-07-19T00:00:00+00:00</published><updated>2019-07-19T00:00:00+00:00</updated><id>https://akshatkarani.github.io/2019/07/19/phase2-part2</id><content type="html" xml:base="https://akshatkarani.github.io/2019/07/19/phase2-part2/"><![CDATA[<p>Evaluations for Phase start on 22nd July and I have pretty much completed all my milestones for Phase 2. I have successfully provided support for bears to suggest mulitple patches. It took me lot of time to think about how to implement this because there were many possibilities about how some little things could have been done. Some of them didn’t work out and others were not very good. Finally I had an epiphany of sorts and came up with a pretty good solution actually.</p>

<p>The plan was to add a new attribute to the <code class="language-plaintext highlighter-rouge">Result</code> class called <code class="language-plaintext highlighter-rouge">alternate_diffs</code>. Bears can pass a list of alternate patches and they are stored in <code class="language-plaintext highlighter-rouge">alternate_diffs</code>. Later in <code class="language-plaintext highlighter-rouge">ConsoleInteraction</code> for each <code class="language-plaintext highlighter-rouge">alternate_diff</code> in <code class="language-plaintext highlighter-rouge">alternate_diffs</code> a instance of <code class="language-plaintext highlighter-rouge">AlternatePatchAction</code> was added. The idea is very similiar to adding mulitple instances of <code class="language-plaintext highlighter-rouge">ShowPatchAction</code> but since there is no <code class="language-plaintext highlighter-rouge">diffs</code> associated with an instance of <code class="language-plaintext highlighter-rouge">ShowPathAction</code>, <code class="language-plaintext highlighter-rouge">AlternatePatchAction</code> acts kind of like a wrapper and helps manipulate between the original patch and alternate patches. When an <code class="language-plaintext highlighter-rouge">AlternatePatchAction</code> is applied it swaps the value of <code class="language-plaintext highlighter-rouge">result.diffs</code> and <code class="language-plaintext highlighter-rouge">self.diffs</code> and calls <code class="language-plaintext highlighter-rouge">ShowPatchAction</code> with updated result.</p>

<p>This all sounded good but there were couple of small hiccups, coala creates a dictionary of all the actions with key as the name of the class. So with mutiple instances of <code class="language-plaintext highlighter-rouge">AlternatePatchAction</code> this was a bit of a problem as keys have to unique. When user is asked for an action to use, what gets printed on the screen as action description is whatever is the docstring of apply function of that action class. It don’t understand the choice of this but since docstring is same for all the instances, this was another problem. Finding a solution for this was not very difficult and you can check out the whole PR <a href="https://github.com/akshatkarani/coala/pull/5">here</a>.</p>]]></content><author><name>Akshat Karani</name></author><category term="GSoC" /><category term="open-source" /><summary type="html"><![CDATA[Evaluations for Phase start on 22nd July and I have pretty much completed all my milestones for Phase 2. I have successfully provided support for bears to suggest mulitple patches. It took me lot of time to think about how to implement this because there were many possibilities about how some little things could have been done. Some of them didn’t work out and others were not very good. Finally I had an epiphany of sorts and came up with a pretty good solution actually.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://akshatkarani.github.io/assets/img/avatar.jpg" /><media:content medium="image" url="https://akshatkarani.github.io/assets/img/avatar.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Coding Phase 2 - Part 1</title><link href="https://akshatkarani.github.io/2019/07/12/phase2-part1/" rel="alternate" type="text/html" title="Coding Phase 2 - Part 1" /><published>2019-07-12T00:00:00+00:00</published><updated>2019-07-12T00:00:00+00:00</updated><id>https://akshatkarani.github.io/2019/07/12/phase2-part1</id><content type="html" xml:base="https://akshatkarani.github.io/2019/07/12/phase2-part1/"><![CDATA[<p>I spent the whole day removing a component which I shouldn’t have been doing,
so left annoyed I thought might as well write the blog, so here I am.</p>

<h2 id="progress-till-now">Progress till now</h2>

<p>In Phase 1, I sucessfully completed providing support for bears to define their
actions and also implemented two actions for <code class="language-plaintext highlighter-rouge">GitCommitBear</code>: <code class="language-plaintext highlighter-rouge">AddNewlineAction</code> and
<code class="language-plaintext highlighter-rouge">EditCommitMessageAction</code>. Here’s a little demo of them in action (pun not intended).</p>

<p>Beware, clicking on this will redirect you. I couldn’t figure out how to play it here itself.
If you know how to do it, <a href="https://gitter.im/akshatkarani">tell me</a>.
<a href="https://asciinema.org/a/xlEM7G0jRZPBKG9E0KdsEyCJk"><img src="https://asciinema.org/a/xlEM7G0jRZPBKG9E0KdsEyCJk.svg" alt="what" /></a></p>

<p>While working on this I came across an interesting bug in <code class="language-plaintext highlighter-rouge">color_letter</code> function in <code class="language-plaintext highlighter-rouge">ConsoleInteraction</code> module.
This function basically beautifies action names when they get printed on screen. The interesting thing about this was its implementation choice and the fact that no one caught this bug before. Explaining this bug will take a lot of time, if interested have a look <a href="https://github.com/coala/coala/issues/6034">here</a>.</p>

<p>After this I also wrote a tutorial which will help write bear specific actions.</p>

<h2 id="whats-next">What’s next?</h2>

<p>I have been working on next part of the project which is providing support for bears to suggest multiple patches. For this I have added a new attribute to <code class="language-plaintext highlighter-rouge">Result</code> class, <code class="language-plaintext highlighter-rouge">alternated_diffs</code>. It is a list of dictionary, where each element is a alternate patch. And for each of these alternate patch an instance of <code class="language-plaintext highlighter-rouge">AlternatePatchAction</code> is added. This solution is a little hackish but it works, and I don’t think there is any other way to do this without making huge changes to the core which is not worth it. I still have to test this and make some minor changes, and I also need content to write for the second blog so see you there.</p>]]></content><author><name>Akshat Karani</name></author><category term="GSoC" /><category term="open-source" /><summary type="html"><![CDATA[I spent the whole day removing a component which I shouldn’t have been doing, so left annoyed I thought might as well write the blog, so here I am.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://akshatkarani.github.io/assets/img/avatar.jpg" /><media:content medium="image" url="https://akshatkarani.github.io/assets/img/avatar.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Coding Phase 1</title><link href="https://akshatkarani.github.io/2019/06/16/phase1-part2/" rel="alternate" type="text/html" title="Coding Phase 1" /><published>2019-06-16T00:00:00+00:00</published><updated>2019-06-16T00:00:00+00:00</updated><id>https://akshatkarani.github.io/2019/06/16/phase1-part2</id><content type="html" xml:base="https://akshatkarani.github.io/2019/06/16/phase1-part2/"><![CDATA[<p>It’s IND vs PAK but it started raining so I thought I would write. Submissions for Phase 1 will start in a week and I have made considerable progress so far.</p>

<h2 id="whats-the-new-plan">What’s the new plan?</h2>

<p>Till now I was planning on having all the actions - default actions and actions defined by bears in <code class="language-plaintext highlighter-rouge">result.actions</code>. This required me to change all the existing actions which had problems of it own. The new plan was to only store actions defined by bears in <code class="language-plaintext highlighter-rouge">result.actions</code>. Changes to existing action classes were no longer necessary and changes in ConsoleInteraction and Processing modules were very few.</p>

<h2 id="todo-before-phase-1-ends">TODO before Phase 1 ends</h2>

<p>There only thing remaining is writing tests. TBH I don’t quite enjoy writing tests but they are very important part also because people can come up with any actions and new system should ideally work for everything. I have written some tests testing auto-application of bear actions. I also have to write some tests for the new action which I had implemented for GitCommitBear. Currently when there is no newline between shortlog and body of commit message, running coala will only give a message saying so. But with new action, <code class="language-plaintext highlighter-rouge">AddNewlineAction</code> coala will provide you with a option to add a newline. This project is all about providing support so actions like these which are only specific to certain bears work. This open up doors for contributors to get more creative with bear writing.</p>

<h2 id="plan-for-phase-2">Plan for Phase 2</h2>

<p>I have no plan.</p>

<p>That’s not entirely true. I have to write a tutorial on how to write new actions and maybe update some documentation. Also add support for multiple patches. Rain stopped long time ago and match is getting interesting so I will continue in the next one.</p>]]></content><author><name>Akshat Karani</name></author><category term="GSoC" /><category term="open-source" /><summary type="html"><![CDATA[It’s IND vs PAK but it started raining so I thought I would write. Submissions for Phase 1 will start in a week and I have made considerable progress so far.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://akshatkarani.github.io/assets/img/avatar.jpg" /><media:content medium="image" url="https://akshatkarani.github.io/assets/img/avatar.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">GSoC: Officially begins!</title><link href="https://akshatkarani.github.io/2019/06/13/phase1-part1/" rel="alternate" type="text/html" title="GSoC: Officially begins!" /><published>2019-06-13T00:00:00+00:00</published><updated>2019-06-13T00:00:00+00:00</updated><id>https://akshatkarani.github.io/2019/06/13/phase1-part1</id><content type="html" xml:base="https://akshatkarani.github.io/2019/06/13/phase1-part1/"><![CDATA[<p>It’s been over 2 weeks since Coding Phase 1 began and 10 days remaining for evaluations of Phase 1 to start, and I am not very happy with the progress I have made so far. To be fair I did take a 5 day holiday. I still have to write two blogs for this phase and I thought I will write one today while enjoying IND vs NZ, but stupid rains!</p>

<h2 id="what-was-my-plan">What was my plan?</h2>

<p>So my idea was add a new attribute <code class="language-plaintext highlighter-rouge">actions</code> to <code class="language-plaintext highlighter-rouge">Result</code> class. This is a list of all the action instances. To allow this I had to revamp all the other existing actions. Currently, Result object is passed as an arugment to methods of action classes. But now actions instances were inside Result object and I had to pass that Result object to the action. Confusing right?
 I spent several minutes thinking about this and came up with a genius plan to pass necessary arguements to action objects when they are instantiated in a Result. I had started implementing this at the end of bonding period, made changes to Result and all the existing actions classes. Also wrote a new action(AddNewLineAction) for GitCommitBear, it adds a new line between shortlog and body of the commit message if it is not there. Also made all the changes <code class="language-plaintext highlighter-rouge">ConsoleInteraction</code> and <code class="language-plaintext highlighter-rouge">Processing</code> modules to incorporate the changes to result and action class. If you want to see them click <a href="https://github.com/akshatkarani/coala/pull/2">here</a>. Remember in the last blog I had written that I had this part figured I out, well guess what, I was wrong.</p>

<h2 id="so-what-went-wrong">So what went wrong?</h2>

<p>Till now I hadn’t noticed that when <code class="language-plaintext highlighter-rouge">ShowPatchAction</code> is applied, a result object is passed a parameter to a function call. But ShowPatchAction is a element of result.actions. And it’s just not worth to change the function.</p>

<h2 id="whats-the-plan-now">What’s the plan now?</h2>

<p>After I realised this I again spent several more minutes thinking and came up with another genius plan but I have been told to write two blog for each phase and I think this blog is long enough.</p>]]></content><author><name>Akshat Karani</name></author><category term="GSoC" /><category term="open-source" /><summary type="html"><![CDATA[It’s been over 2 weeks since Coding Phase 1 began and 10 days remaining for evaluations of Phase 1 to start, and I am not very happy with the progress I have made so far. To be fair I did take a 5 day holiday. I still have to write two blogs for this phase and I thought I will write one today while enjoying IND vs NZ, but stupid rains!]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://akshatkarani.github.io/assets/img/avatar.jpg" /><media:content medium="image" url="https://akshatkarani.github.io/assets/img/avatar.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Community Bonding Period</title><link href="https://akshatkarani.github.io/2019/05/25/bonding/" rel="alternate" type="text/html" title="Community Bonding Period" /><published>2019-05-25T00:00:00+00:00</published><updated>2019-05-25T00:00:00+00:00</updated><id>https://akshatkarani.github.io/2019/05/25/bonding</id><content type="html" xml:base="https://akshatkarani.github.io/2019/05/25/bonding/"><![CDATA[<p>Bonding period, as the name suggests is the time for the students to bond with the organisation and mentors. Having contributed since quite a few months I was already familiar with the working of coala as an organization, so I didn’t have much to do during this period.
I spent most of my time planning, creating milestones and writing a <a href="https://github.com/coala/cEPs/pull/182">cEP</a>. cEP-coala Enhancement Proposal, where I basically had to write whatever I had written in my proposal. I was not fun.</p>

<p>Ideally I would have liked to have <a href="https://github.com/Makman2">@Makman2</a> as my mentor but so would have all the other students. But sadly he does not have any time to mentor a project. My project has three mentors <a href="https://github.com/Vamshi99">@Vamshi99</a>, <a href="https://github.com/kriti21">@kriti21</a> and <a href="https://github.com/abhishalya">@abhishalya</a>. Vamshi and kriti are previous year GSoC students, and abhishalya is a GCI student.</p>

<h2 id="what-do-i-have-to-do">What do I have to do?</h2>

<p>So basically my project is about changing how actions work in coala. What are actions you ask? Action basically means the action to be taken on a result. What is result now? Result is nothing but the “result” of the analysis that coala performs. Currently there are only a set of actions that can be taken on a result. I have to change the action system so that people can define their own actions to be taken on a result. This part, I have figured out. I have to change existing result and action classes, write tests and update documentation for this.</p>

<p>Second part involves providing supporting bears which can give multiple fixes for a problem, which is currently not supported. This part might turn out to be little tricky, only because I don’t have a detailed plan for it. Bonding periods ends in couple of days, and I have to come up with a detailed implementation for this. So I will stop writing now and try to figure this thing out.</p>]]></content><author><name>Akshat Karani</name></author><category term="GSoC" /><category term="open-source" /><summary type="html"><![CDATA[Bonding period, as the name suggests is the time for the students to bond with the organisation and mentors. Having contributed since quite a few months I was already familiar with the working of coala as an organization, so I didn’t have much to do during this period. I spent most of my time planning, creating milestones and writing a cEP. cEP-coala Enhancement Proposal, where I basically had to write whatever I had written in my proposal. I was not fun.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://akshatkarani.github.io/assets/img/avatar.jpg" /><media:content medium="image" url="https://akshatkarani.github.io/assets/img/avatar.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">How I got into GSoC?</title><link href="https://akshatkarani.github.io/2019/05/11/gsoc/" rel="alternate" type="text/html" title="How I got into GSoC?" /><published>2019-05-11T00:00:00+00:00</published><updated>2019-05-11T00:00:00+00:00</updated><id>https://akshatkarani.github.io/2019/05/11/gsoc</id><content type="html" xml:base="https://akshatkarani.github.io/2019/05/11/gsoc/"><![CDATA[<p>I will be honest, I did not want to set up this blog, because I am not good with writing down my thoughts. I will most probably try to come up with funny, sarcastic remarks and miserably fail at it. Or maybe everyone else fails to get my sense of humour. The only reason that I set up this blog is that I have been accepted in Google Summer of Code 2019 at coala and was told that it is necessary to write blog posts. The $3000 does provide a little motivation to write, but I am pretty sure this will be turn out to be more bothersome that actual coding.</p>

<p>So anyways, let me start with my blog. I got to know about Google Summer of Code almost about one year ago when a student from my university <a href="https://github.com/ishanSrt">Ishan Srivastava</a> got selected into GSoC 2018 with coala. At that time I heard Google and thought “woah this seems 🔥”, but never actually tried to find out what is actually was because I was busy doing nothing.
Then around November 2018, seeing a couple of my friends, out of sheer boredom I started contributing to coala. At the beginning trying to fix my commit message was not fun, but as soon as I picked up my <a href="https://github.com/coala/coala/issues/5044">first real issue</a> I started enjoying the whole process. Just the thought of people sitting in different parts of the world working together on building something is unbelievable.</p>

<p>But I was soon left frustrated because there was much to change to solve that issue and <a href="https://github.com/jayvdb">John Vandenberg</a> who is a maintainer of coala and was helping me solve this issue went MIA. I think he has not been active since a couple of months now and suddenly all the development in coala slowed down. At this point, I thought about not applying for GSoC and maybe doing an internship but just the thought of developing a website from some startup makes me nauseous.</p>

<p>One week before proposals were being submitted, I started working on my proposal, but the mentors for both of the projects I was interested were not active 😓. Then I got in touch with <a href="https://github.com/Makman2">Mischa Krüger</a>, who helped me throughout until the deadline. Honestly, without him, I don’t think my proposal would have been accepted.</p>

<p>Now that my proposal has been accepted I hope these 3 months are amazing. Also being active in open source community these few months has made me appreciate FOSS, and I have realized that getting accepted GSoC is cool not because of “Google” but because of contributing to open source is cool and everyone should try it.</p>]]></content><author><name>Akshat Karani</name></author><category term="GSoC" /><category term="open-source" /><summary type="html"><![CDATA[I will be honest, I did not want to set up this blog, because I am not good with writing down my thoughts. I will most probably try to come up with funny, sarcastic remarks and miserably fail at it. Or maybe everyone else fails to get my sense of humour. The only reason that I set up this blog is that I have been accepted in Google Summer of Code 2019 at coala and was told that it is necessary to write blog posts. The $3000 does provide a little motivation to write, but I am pretty sure this will be turn out to be more bothersome that actual coding.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://akshatkarani.github.io/assets/img/avatar.jpg" /><media:content medium="image" url="https://akshatkarani.github.io/assets/img/avatar.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>