<?xml version="1.0" encoding="utf-8"?>
    <feed xmlns="http://www.w3.org/2005/Atom">
     <title>NeetoCourse Blog</title>
     <link href="https://www.neeto.com/neetocourse/blog/feed.xml" rel="self"/>
     <link href="https://www.neeto.com/neetocourse/blog"/>
     <updated>2026-06-04T01:10:17Z</updated>
     <id>https://www.neeto.com/neetocourse/blog</id>
     <entry>
       <title><![CDATA[Milestone M37  Minor UI refinements for consistency]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m37-updates"/>
      <updated>2025-06-02T03:46:23Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m37-updates</id>
      <content type="html"><![CDATA[<p>Let’s go through what we got done in milestone M37 (May 19 – Jun 01).</p><h3><strong>New enhancements 🛠️</strong></h3><h4>✅ <strong>UI standardization</strong></h4><p>Continued refining titles, links, and buttons to align with overall Neeto UX guidelines.</p>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M36  reboot begins, simplified course creation & critical bug fixes]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m36-updates"/>
      <updated>2025-05-19T07:06:21Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m36-updates</id>
      <content type="html"><![CDATA[<p>Let’s go through what we got done in Milestone M36 (May05 – May18) for NeetoCourse.</p><h3><strong>New features and enhancements 🚀</strong></h3><h4>✅ <strong>NeetoCourse reboot begins</strong></h4><p>We’ve started streamlining the course-building experience, removing legacy complexity built for BigBinary Academy. Most updates this cycle support this new direction.</p><h4>✅ <strong>UI consistency updates</strong></h4><p>– Improved the empty state when no courses are listed to match other products.<br>– Removed old Lesson/Exercise pills from the course structure dashboard.<br>– Updated various UI texts for clarity.<br>– Renamed “slug” to “URL” across courses, chapters, and pages.</p><h4>✅ <strong>Simplified course creation</strong></h4><p>Manual course creation is now the default. GitHub integration option has been removed.</p><h4>✅ <strong>ActiveRecord cleanup</strong></h4><p>Resolved remaining issues flagged by <code>active_record_doctor</code>.</p><h3><strong>Bug fixes ⚒️</strong></h3><h4>✅ <strong>Judge0 timeout handling</strong></h4><p>Fixed an unhandled timeout error in the Judge0 API for code submissions.</p><h4>✅ <strong>Elasticsearch seeding fix</strong></h4><p>Implemented retry logic to fix occasional failures in Elasticsearch index creation.</p>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M34 - better GitHub integration, Plausible and more bug fixes]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m34-updates"/>
      <updated>2025-04-21T10:44:49Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m34-updates</id>
      <content type="html"><![CDATA[<p>Let's go through what we got done in Milestone M34 (Apr 07 - Apr 20).</p><p></p><p><strong>Enhancements:</strong></p><ul><li><p>We upgraded GitHub integration to have better handling and communication back to the admin when a GitHub app connected to a course is disconnected from GitHub.</p></li><li><p>We added Plausible integration on course pages for Bigbinary Academy to track relevant metrics.</p></li></ul><p><strong>Bug fixes:</strong></p><ul><li><p>We fixed a few more ActiveRecord::InvalidForeignKey errors during incineration introduced into the app when we added all missing foreign keys as part of active_record_doctor audit.</p></li></ul>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M33 - embed fix, timeout fix and more]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m33-updates"/>
      <updated>2025-04-07T14:20:45Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m33-updates</id>
      <content type="html"><![CDATA[<p>Let's go through what we got done in Milestone M33 (Mar 24 - Apr 06).</p><p></p><p><strong>Bug fixes:</strong></p><ul><li><p>The /progresses client side API endpoint for courses was giving timeouts every now and then. We made a conditional query optimization in result generation when students are logged in and fixed it.</p></li><li><p>NeetoQuiz embeds were not working as page component blocks on newly created pages because of an issue with parsing that got introduced into the system when we moved to block based UI. We fixed this issue.</p></li><li><p>Since adding a bunch of missing foreign keys to fix active_record_doctor issues from M32, a few issues sprung up where the cascaded destroys started failing when trying to incinerate/destroy some of the resources. We manually added an <code>on cascade: delete</code> for such foreign key relations.</p></li><li><p>A few other minor issues came up because of added foreign keys, that required specific exception handling in places where duplicates records creation was not considered earlier. These instances were fixed.</p></li></ul>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M32 - brakeman warnings, db refactoring and bug fixes]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m32-updates"/>
      <updated>2025-03-24T13:10:19Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m32-updates</id>
      <content type="html"><![CDATA[<p>Let's go through what we got done in Milestone M32 (Mar 10 - Mar 23).</p><p></p><p><strong>Enhancements:</strong></p><ul><li><p>Dealt with all brakeman warnings present in the app.</p></li><li><p>Fixed all issues reported by active_record_doctor.</p></li></ul><p><strong>Bug fixes:</strong></p><ul><li><p>Fixed issues with GitHub integration not working correctly in staging.</p></li><li><p>Fixed issues that came after upgrading dompurify without having updated its usage. This included fixing a frontend error which was causing internal links on pages to not work on fresh loads.</p></li></ul>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M31 - health check bug fix]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m31-updates"/>
      <updated>2025-03-10T07:11:14Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m31-updates</id>
      <content type="html"><![CDATA[<p>Let's go through what we got done in Milestone M31 (Feb 24 - Mar 09).</p><h3>Bug fixes:</h3><ul><li><p>We found the <code>/services_health_check</code> Endpoint giving timeout errors again despite fixes last time. We debugged and found that for the EUI check, if the EUI is down, it might take 60 seconds before returning a timeout. In general, we decided to fix this for all the apps, and we added an option to add a timeout for such additional services API checks in neeto-commons-backend. Now, any app with an additional service to check can add a timeout; failing that, the API request will fail fast, not triggering NeetoCommonsBackend::Failures.</p></li></ul><h3>Upgrades:</h3><ul><li><p>We migrated the packages-upgrade script in neeto-course-site to NeetoCI from github-actions.</p></li></ul>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M30 - fixed issues with 404, evaluation of promises and more]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m30-updates"/>
      <updated>2025-02-24T04:34:39Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m30-updates</id>
      <content type="html"><![CDATA[<p>Let's go through what we got done in Milestone M30 (Feb 10 - Feb 23).</p><p></p><ul><li><p>We fixed final set of issues with 404 URLs from academy.bigbinary.com, by setting up the right redirection logic trickling down to chapters and pages, for the courses that don't exist anymore.</p></li><li><p>We fixed an issue with evaluation of Promises in JavaScript where despite the user getting the right output, the code was judged not passed. We fixed some edge cases in our evaluation logic to fix this.</p></li><li><p>Multiple issues over the last few weeks, related to students not seeing their progress correctly tracked in courses were resolved this week after a little observation. We fixed it by adding an index to avoid possible duplicates, and also by considering the logic that some progress records may be outdated because of the pages/chapters themselves having been unpublished/removed from the content.</p></li><li><p>We made the code diffs that get displayed when a student's code doesn't pass the evaluation, a little more informative and highlighting what needs to be fixed.</p></li><li><p>We had been observing the <code>/services_health_check</code> endpoint itself timing out and causing honeybadger issues over the last few weeks. On observation, we found that if Elasticsearch is unresponsive, the underlying health check command waits for a long time and causes the entire health check itself to throw a timeout error. We fixed it by adding a timeout to Elasticsearch check at neeto-commons-backend level, so it fails fast if its not responding. This would also work for all other apps that have Elasticsearch in their stack.</p></li></ul><p></p>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M29 - SITE API and bug fixes]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m29-updates"/>
      <updated>2025-02-10T10:43:54Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m29-updates</id>
      <content type="html"><![CDATA[<p>Let's go through what we got done in Milestone M29 (Jan 27 - Feb 09).</p><p></p><ul><li><p>This milestone mostly went into Honeybadger bug fixes. Also, a minor bug in React codeblocks, related to preview failing when an onChange function is added in student code, was fixed.</p></li><li><p>We did one final attempt to fix timeout-related Honeybadger issues on the SITE API. However, some of them were re-opened by Honeybadger later. This led us to believe that the issue is not on the app/query level, but something else. On debugging we found that Postgres memory is hogged up almost all the time. We increased the PG memory and have been observing it over the last few days. What we observe, will decide our course of action.</p></li></ul>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M28 - exercise migrations, async code evaluation edge cases and more]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m28-updates"/>
      <updated>2025-01-27T05:49:41Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m28-updates</id>
      <content type="html"><![CDATA[<p></p><p>Let's go through what we got done in Milestone M28 (Jan 13 - Jan 26).</p><p></p><ul><li><p>We have had migrations from exercise to challenge and then back to exercise over the last year in the page slugs of exercises for Bigbinary Academy. However, each such change had come with adding redirections to not let existing links break or SEO fail. When we reverted to exercise recently, although the github integration sync took care of adding redirections, older redirections don't make sense anymore. We wrote a script to cleanup the redirections and ensure new ones are in place, and we ran it.</p></li><li><p>We found more edge cases in async code evaluation in Javascript and added a fix for one of the edge cases using our existing AST based solution.</p></li><li><p>We also had issues with learners tampering with the fixed JS objects (like Array, Number etc) in code and evaluation breaking because of it. A relevant fix that prevents against it was added.</p></li></ul><p></p>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M27 - evaluation of async code, mobile responsiveness and more]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m27-updates"/>
      <updated>2025-01-13T04:35:11Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m27-updates</id>
      <content type="html"><![CDATA[<p>Let's go through what we got done in Milestone M27 (Dec 30 - Jan 12).</p><p></p><ul><li><p>Earlier, for test cases based JavaScript exercises, we did not support evaluation of async code. This feature was shipped.</p></li><li><p>Minor refactoring across the codebase against the ruby best practices audit done earlier, was shipped.</p></li><li><p>Long running courses homepage revamp was finalized and shipped this milestone. Course homepage now shows data like number of chapters, hours to complete, projects and prerequisites</p></li><li><p>A weird bug where the progress percentage for non-signed in folks sometimes showed over 100%, was fixed. This was because of changing chapters data on the backend but no updates to progress stored in localstorage for non-signed in users. We have a refresh progress button now which does the cleanup.</p></li><li><p>Mobile responsiveness for the solution modal in exercises was improved.</p></li><li><p>There was a need of removing the run code button on subjective exercises in HTML/CSS/JS challenges on case-by-case basis. We shipped a hideRunCodeButton config on codeblock to support it.</p></li></ul>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M26 - DB queries analysis, EUI upgrade and more]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m26-updates"/>
      <updated>2024-12-30T05:49:37Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m26-updates</id>
      <content type="html"><![CDATA[<p></p><p>Refactoring/upgrades:</p><ul><li><p>DB/DB queries analysis done using <code>ruby-pg-extras</code> gem and action items created.</p></li><li><p>Refactored some backend code to match Rails best practices standards we follow.</p></li><li><p>NextJs on EUI upgraded from 14.2.13 to 14.2.15</p></li><li><p>Header component on the EUI was extracted from multiple pages and made standard.</p></li></ul><p></p><p></p>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M25 - dark mode on EUI, react editor configuration and more]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m25-updates"/>
      <updated>2024-12-16T06:42:44Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m25-updates</id>
      <content type="html"><![CDATA[<ul><li><p>Shipped a feature that stops browser extensions to modify/correct input tags in the code editor used in HTML. This was in response to bugs reported by users that were using such extensions.</p></li><li><p>The dark mode on the EUI was updated to be more in line with common tools, like Google calendar, to be more easy on the eyes.</p></li><li><p>The react editor configuration was updated to more simplistic and focused on code. Removed extra stuff like minimaps and wider gutter which were not useful right now.</p></li><li><p>Other minor bug fixes on the EUI side.</p></li></ul><p></p>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M24 - Migrated tests]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m24-updates"/>
      <updated>2024-12-03T06:36:20Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m24-updates</id>
      <content type="html"><![CDATA[<p>Migrated tests with Sidekiq.inline to Sidekiq.fake.</p>]]></content>
    </entry><entry>
       <title><![CDATA[Milestone M23 - Landing page, evaluation of inline style and more]]></title>
       <author><name>Akash Srivastava</name></author>
      <link href="https://www.neeto.com/neetocourse/blog/milestone-m23-updates"/>
      <updated>2024-12-03T06:34:49Z</updated>
      <id>https://www.neeto.com/neetocourse/blog/milestone-m23-updates</id>
      <content type="html"><![CDATA[<ul><li><p>UI: Landing page UI was revamped. </p></li><li><p>Bug fix: related to title on the course structure page not updating when updated through github integration, was done. </p></li><li><p>Bug fix: related to a chapter completion tick not showing up for a student who had completed all chapter pages, was done. </p></li><li><p>Feature: Evaluation of inline styles in HTML code which was not supported earlier was shipped.</p></li><li><p>Cleanup: of a few env variables and dead code related to Typesense and Cloudinary. </p></li></ul>]]></content>
    </entry>
    </feed>