<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aswin M Rajeev </title>
    <description>The latest articles on DEV Community by Aswin M Rajeev  (@aswinmrajeev).</description>
    <link>https://dev.to/aswinmrajeev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4034086%2Ff1624d98-165e-4c85-a59a-2fda9c14a19b.jpg</url>
      <title>DEV Community: Aswin M Rajeev </title>
      <link>https://dev.to/aswinmrajeev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aswinmrajeev"/>
    <language>en</language>
    <item>
      <title>When Should Software Refuse to Continue?</title>
      <dc:creator>Aswin M Rajeev </dc:creator>
      <pubDate>Sat, 29 Aug 2026 14:56:55 +0000</pubDate>
      <link>https://dev.to/aswinmrajeev/when-should-software-refuse-to-continue-1j3f</link>
      <guid>https://dev.to/aswinmrajeev/when-should-software-refuse-to-continue-1j3f</guid>
      <description>&lt;p&gt;A program reaches a state it did not expect. It can still execute instructions. Nothing has crashed yet. &lt;strong&gt;&lt;em&gt;Should it continue?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't think there is a single answer.&lt;/p&gt;

&lt;p&gt;If software knows it is making an assumption, silently guessing what the user intended is questionable. For a reversible operation, continuing may be reasonable if the uncertainty and its cause are clearly shown. Irreversible actions deserve a different threshold. Sometimes confirmation makes sense; sometimes the operation should simply be rejected.&lt;/p&gt;

&lt;p&gt;That logic changes once &lt;strong&gt;&lt;em&gt;the system itself becomes unreliable.&lt;/em&gt;&lt;/strong&gt; Memory corruption, a security compromise, or an undefined internal state creates a different problem. A system in an undefined state cannot confidently decide that an action is reversible, because the mechanism making that judgment may itself be affected. Returning to a known-good state is preferable whenever possible. Otherwise, stopping may prevent corrupted execution from travelling further.&lt;/p&gt;

&lt;p&gt;But &lt;strong&gt;&lt;em&gt;stopping is not automatically the safe option either.&lt;/em&gt;&lt;/strong&gt; In safety-critical systems such as avionics or medical equipment, suddenly removing a function can itself create danger. The design may need redundancy, isolation, degraded operation, failover, or another predefined recovery path that keeps essential functions available rather than simply terminating everything.&lt;/p&gt;

&lt;p&gt;Asking the user isn't an escape from every decision. Waiting for an answer can leave an application blocked or preserve a dangerous state. Some decisions must happen before a user could reasonably intervene. Even an application that wants to continue exists under a larger authority; if the operating system terminates it to protect the machine, it cannot simply override that decision.&lt;/p&gt;

&lt;p&gt;So I don't see &lt;strong&gt;&lt;em&gt;"always continue"&lt;/em&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;em&gt;"always stop"&lt;/em&gt;&lt;/strong&gt; as useful absolute rules. Predicting the next state is itself a probability problem.&lt;/p&gt;

&lt;p&gt;The harder engineering question is deciding &lt;strong&gt;&lt;em&gt;what we are protecting&lt;/em&gt;&lt;/strong&gt;—the current work, the data, the application, the wider system, or continued operation itself—and whether the system is still trustworthy enough to make that choice.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>programming</category>
      <category>computerscience</category>
      <category>software</category>
    </item>
    <item>
      <title>Engineering Isn’t About Building More. It’s About Finding the Best Path.</title>
      <dc:creator>Aswin M Rajeev </dc:creator>
      <pubDate>Wed, 26 Aug 2026 16:59:55 +0000</pubDate>
      <link>https://dev.to/aswinmrajeev/engineering-isnt-about-building-more-its-about-finding-the-best-path-f97</link>
      <guid>https://dev.to/aswinmrajeev/engineering-isnt-about-building-more-its-about-finding-the-best-path-f97</guid>
      <description>&lt;p&gt;Engineering, in my view, is not simply about building a solution. It is about finding the best path to accomplish a task while thinking about what that solution will cause in the long term.&lt;/p&gt;

&lt;p&gt;A good product should be highly reliable without unnecessarily consuming the customer's resources. If two solutions achieve the same purpose, I would choose the one that saves resources rather than choosing something simply because it uses more sophisticated technology.&lt;/p&gt;

&lt;p&gt;But reliability alone cannot define a good product. A combustion engine might run throughout its entire life, but if it continuously produces harmful emissions, what meaning does reliability have? Engineering should always uphold sustainable development and give importance to the environment.&lt;/p&gt;

&lt;p&gt;I also believe an engineer's vision should extend beyond a small request from a user. The responsibility begins when the product is created, while different engineering fields and services take responsibility for other parts of its life.&lt;/p&gt;

&lt;p&gt;Engineering is also not a journey without failure. Failure can be part of the engineering journey, because it can expand what we discover. Even solving a problem that wasn't originally intended can open a completely different direction.&lt;/p&gt;

&lt;p&gt;Ultimately, engineering is not about asking &lt;strong&gt;"Can we build this?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is about asking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"What will happen because we built it?"&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>watercooler</category>
      <category>softwareengineering</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Beyond Syntax: What Really Makes a Programming Language?</title>
      <dc:creator>Aswin M Rajeev </dc:creator>
      <pubDate>Sat, 01 Aug 2026 18:28:52 +0000</pubDate>
      <link>https://dev.to/aswinmrajeev/beyond-syntax-what-really-makes-a-programming-language-43b8</link>
      <guid>https://dev.to/aswinmrajeev/beyond-syntax-what-really-makes-a-programming-language-43b8</guid>
      <description>&lt;p&gt;In this post, I want to explain how I approached the design of my own programming language, &lt;strong&gt;Light&lt;/strong&gt;, and why some of its rules were designed the way they are.&lt;/p&gt;

&lt;p&gt;When designing Light, I was not only deciding how programs should be written. I also had to define how those programs should behave, how different features should interact, and what rules should remain consistent throughout the language.&lt;/p&gt;

&lt;p&gt;One question guided many of these decisions:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What rule should govern this, and how should it interact with the rest of the language?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This led to a design centered around &lt;strong&gt;explicit structure and dynamic flexibility&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Light defines structural rules for program entry, control flow, data access, and reusable program units. At runtime, variables remain dynamically typed while operations such as array access, expression evaluation, and type conversion follow defined rules.&lt;/p&gt;

&lt;p&gt;The same principle applies to &lt;code&gt;Purpose&lt;/code&gt; blocks and libraries. They are not isolated features; their behavior is designed to fit into the language's existing execution and data model.&lt;/p&gt;

&lt;p&gt;A feature is not complete simply because its syntax works. Its behavior must remain predictable when combined with everything around it.&lt;/p&gt;

&lt;p&gt;That is why I focus not only on &lt;strong&gt;what a feature can do&lt;/strong&gt;, but also on &lt;strong&gt;where it belongs, what rules govern it, and how it interacts with existing constructs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For me, this is the foundation of Light's design philosophy:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;explicit rules, structured execution, and dynamic flexibility without sacrificing consistency.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Light is still under active development, including its standard libraries, so its design will continue to evolve as the language grows.&lt;/p&gt;

&lt;p&gt;Your thoughts and feedback are appreciated.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href="https://dev.to/aswinmrajeev/building-light-what-i-learned-after-9-months-10bn"&gt;Building Light Programming Language — What I Learned After 9 Months&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore Light on GitHub:&lt;/strong&gt; &lt;a href="https://github.com/aswinmrajeev/light" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>architecture</category>
      <category>showdev</category>
      <category>software</category>
    </item>
    <item>
      <title>Building the Light Programming Language: What I Learned After 9 Months</title>
      <dc:creator>Aswin M Rajeev </dc:creator>
      <pubDate>Sun, 26 Jul 2026 07:45:28 +0000</pubDate>
      <link>https://dev.to/aswinmrajeev/building-light-what-i-learned-after-9-months-10bn</link>
      <guid>https://dev.to/aswinmrajeev/building-light-what-i-learned-after-9-months-10bn</guid>
      <description>&lt;p&gt;A few days ago, I shared the first public release of &lt;strong&gt;Light&lt;/strong&gt;, a programming language I've been designing and developing over the past nine months.&lt;/p&gt;

&lt;p&gt;Rather than introducing the language again, I wanted to share one of the biggest lessons I learned while building it.&lt;/p&gt;

&lt;p&gt;Before diving into that, here's a small example written in &lt;strong&gt;Light&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user

Purpose Add[a,b]
{
    sum = a + b
    out:sum
    stop
}

x = 23
y = 34

out="'Add{x,y}'"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before implementing the first working version of &lt;strong&gt;Light&lt;/strong&gt;, I documented the core concepts, language rules, and the initial specification. At that stage, I believed the primary challenge would be transforming those ideas into a working implementation.&lt;/p&gt;

&lt;p&gt;Development reinforced just how inherently iterative language design is.&lt;/p&gt;

&lt;p&gt;As implementation progressed, practical experimentation exposed interactions that weren't immediately apparent during the initial design. Some features evolved, certain language rules were refined, and additional capabilities were introduced as the language matured. At the same time, performance, error reporting, and the implementation itself were continuously improved through repeated testing and refinement.&lt;/p&gt;

&lt;p&gt;One observation became increasingly clear throughout the project:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The specification shapes the implementation, but the implementation also helps refine the specification.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Looking back, building a programming language has been as much about evaluating and refining design decisions as it has been about writing code. Every iteration strengthened the language, improved its consistency, and reinforced the foundation established by the current public release.&lt;/p&gt;

&lt;p&gt;This release represents an important milestone in the development of Light. While there is still much to explore and refine, it establishes the foundation on which the language will continue to evolve.&lt;/p&gt;




&lt;p&gt;Your feedback and insights are always appreciated.&lt;/p&gt;

&lt;p&gt;If you're new to &lt;strong&gt;Light&lt;/strong&gt;, you can read the introduction to the project here:&lt;br&gt;
&lt;strong&gt;Introducing Light — A New Programming Language:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://dev.to/aswinmrajeev/introducing-light-a-new-programming-language-ghd"&gt;https://dev.to/aswinmrajeev/introducing-light-a-new-programming-language-ghd&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To learn more about &lt;strong&gt;Light&lt;/strong&gt; and explore its documentation, visit the official GitHub repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Official GitHub Repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/aswinmrajeev/light" rel="noopener noreferrer"&gt;https://github.com/aswinmrajeev/light&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>programming</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Introducing Light — A New Programming Language</title>
      <dc:creator>Aswin M Rajeev </dc:creator>
      <pubDate>Sat, 18 Jul 2026 16:39:04 +0000</pubDate>
      <link>https://dev.to/aswinmrajeev/introducing-light-a-new-programming-language-ghd</link>
      <guid>https://dev.to/aswinmrajeev/introducing-light-a-new-programming-language-ghd</guid>
      <description>&lt;p&gt;Over the past &lt;strong&gt;9 months&lt;/strong&gt;, I've been designing and developing &lt;strong&gt;Light&lt;/strong&gt;, a programming language with the long-term vision of making script automation more structured, consistent, and easier to build and maintain.&lt;/p&gt;

&lt;p&gt;The idea behind Light began with a simple question: &lt;strong&gt;what would a programming language designed around structured program organization and predictable execution look like?&lt;/strong&gt; That question evolved into designing the language specification, defining its syntax and execution model, implementing the interpreter, and building the foundation of its ecosystem.&lt;/p&gt;

&lt;p&gt;This first public release marks an important milestone. It includes the core language and &lt;strong&gt;two standard libraries&lt;/strong&gt;, establishing the initial foundation of the project. &lt;strong&gt;Light is under active development&lt;/strong&gt;, with additional language features, standard libraries, and developer tooling planned for future releases.&lt;/p&gt;

&lt;p&gt;I'm sharing this first public release to introduce the project and gather feedback from the developer community. I'd appreciate your thoughts on the language design, syntax, documentation, and overall developer experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hello Light
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user

name = _Light_

out="Hello 'name'"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  GitHub
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/aswinmrajeev/light" rel="noopener noreferrer"&gt;https://github.com/aswinmrajeev/light&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
    </item>
  </channel>
</rss>
