<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[SuryaWrites]]></title><description><![CDATA[SuryaWrites]]></description><link>https://blogs.msurya.in</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Apr 2026 13:43:57 GMT</lastBuildDate><atom:link href="https://blogs.msurya.in/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Tech Story: From Tinkering to Code]]></title><description><![CDATA[Hello there,
I’m Surya, a software engineer with about 1.5 years of experience in the IT industry and am currently on the lookout for the next opportunity.
Today, I want to share my journey, from a curious kid playing with tech to where I am today, f...]]></description><link>https://blogs.msurya.in/tech-story</link><guid isPermaLink="true">https://blogs.msurya.in/tech-story</guid><category><![CDATA[technology]]></category><category><![CDATA[coding]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[journey into tech]]></category><category><![CDATA[webdev]]></category><category><![CDATA[HTML5]]></category><category><![CDATA[CSS]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Java]]></category><category><![CDATA[Docker]]></category><category><![CDATA[kafka]]></category><category><![CDATA[Android]]></category><dc:creator><![CDATA[Surya Madhavan]]></dc:creator><pubDate>Thu, 05 Sep 2024 19:56:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1725565497000/e4f92ceb-f6de-4041-b57d-268e00df8c1e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello there,</p>
<p>I’m Surya, a software engineer with about 1.5 years of experience in the IT industry and am currently on the lookout for the next opportunity.</p>
<p>Today, I want to share my journey, from a curious kid playing with tech to where I am today, figuring things out as I go.</p>
<h3 id="heading-first-spark"><strong>First Spark</strong></h3>
<p>I first got to use a PC back in 2006-2007. I was too young to understand much, but I remember how a beige box with chunky wires seemed to do magical stuff. Like any teen, I mostly browsed the internet at first, but soon grew curious about Computers as I progressed in school. It was 2012, and I still remember rushing madly to the computer lab like we rush to catch the Mumbai locals today.</p>
<p>My first moment of realizing that I could build something was when I changed the color of an <code>&lt;h1&gt;</code> tag to red. That simple action unlocked the world of possibilities, and suddenly, the web wasn’t just something I consumed - it was something I could create. HTML and CSS became my playground, though it wasn’t easy transitioning from school-level projects to something more advanced.</p>
<h3 id="heading-exploration"><strong>Exploration</strong></h3>
<p>After gaining confidence by troubleshooting Windows, I turned to smartphones and began tinkering with their operating systems. I experimented with custom ROMs on my Asus phone—Lineage OS, R Remix, AOSP - you name it! I spent countless days exploring &amp; testing features, hoping that my phone would survive.</p>
<p>These formative experiences with hardware and software shaped my curiosity. When I entered college, it became clear that Software Engineering was where my love for tech could take root and grow. Alongside my best friends, Kasi and Soumya, we embarked on our first project—a website for quotes similar to BrainyQuote.</p>
<h3 id="heading-pivot"><strong>Pivot</strong></h3>
<p>While we didn’t finish it, the excitement of web development reignited my passion. In 2019, I joined a technical club at our college, SIESGSTarena. It felt like a small startup hidden inside a Codechef club. They were working on a coding platform, problem sets, and even machine learning.</p>
<p>Getting exposure to such collaborative environment felt crucial and it turned out to be one of the highlights of my undergrad years.</p>
<p>I worked on the frontend of the coding platform (Arena), landing pages for flagship contests, and learned a bit about marketing - taking the product to its audience.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1725484713879/4f1ecfa3-5990-40cd-8352-14fe7e4ec467.png" alt="Collage of my experience (yes, I did make posters, reels apart from coding :))" class="image--center mx-auto" /></p>
<p>In 2020, I was chosen as the club president, and I was on cloud nine. Being an ECE student, this was a personal win! We worked hard to grow our user base, secure better sponsors, and attract participants from all colleges across India.</p>
<p>While I missed holding in-person meetings, I had first-hand exposure in managing a team &amp; focusing on growth and product improvement. I was exposed to range of issues to work on - human psychology, college interventions, tech being the smallest problem here. This outlook helps me think broadly when dealing with problem / new situations.</p>
<p>Leading a team isn’t all rosy—I felt overworked, scaling a team while maintaining the quality of work was hard. It requires vision, the guts to handle lows, second-order thinking, and openness to criticism.</p>
<p>Overall, my journey with Arena was beautiful. I met great people, we went all-in to make it big, and we had fun. If you have the chance to join a club (in college or your city), try it. It can be an amazing experience.</p>
<p>In 2021-2022, I pivoted towards Python and learned a bit about machine learning and deep learning. While I started learning these technologies for our final year project, I was amused to know how far Computer Science can go with humanity. We had an enormous task of creating a GAN (Generative Adversarial Network) model, and somehow, <a target="_blank" href="https://resmilitaris.net/issue-content/virtual-cloth-warping-using-deep-learning-2458">we made it</a>. ML, AI &amp; DL are interesting spaces &amp; I'll probably pick it up as a hobby sometime.</p>
<h3 id="heading-current"><strong>Current</strong></h3>
<p>In 2022, I joined Capgemini as a Backend Developer. This was my first corporate job, and it was a steep learning curve. I worked on Spring Boot and cloud tools and joined a BMW project, which was pretty exciting.</p>
<p>Seeing a project go live shortly after I joined was a new experience for me, and over the next few months, I got a good sense of how things work in large companies. Apart from routine development, I practiced debugging issues, being an agile worker while having a systematic approach.</p>
<p>But by May 2024, I decided to resign. I wasn’t feeling connected to the work anymore, and I’m still in the early years of my career. I want to make sure I’m doing work that excites me and pushes me forward.</p>
<p>Since leaving Capgemini, I’ve been brushing up on my web development skills and working on projects that interest me. I’m also exploring other technologies and figuring out where I want to go next. I’ll probably write about this sabbatical soon.</p>
<h3 id="heading-final-thoughts">Final thoughts</h3>
<p>As a wanderer in tech, I’ve had a range of experiences that have shaped my path. For anyone new to this field, I’d encourage you to dive deep into those rabbit holes and explore every aspect of technology that excites you—until you’re truly satisfied with your work.</p>
<p>If you ask how this journey has changed me, I think I’ve evolved from being just a Frontend/Web/ML person to embracing a broader identity as a Software Engineer. I’ve learned not to fixate on a single path while I’m still figuring things out.</p>
<p>Ultimately, the journey is the destination &amp; these curious initiatives, tinkering leads us to knowing our interests &amp; find joy.</p>
<p>If my journey resonates with you or if you have any opportunities in mind, feel free to ping me at my <a target="_blank" href="mailto:surya.madhaone@gmail.com">email</a>.</p>
<p>Thank you for reading, I hope I’ve stirred some memories of your own ‘Tech Story’. See you soon with another blog.</p>
]]></content:encoded></item><item><title><![CDATA[Introducing Sheet2Slide: Convert tables to slides at ease]]></title><description><![CDATA[Ever been in a place where you had to sit and prepare slides for hours ?
What if you could do that in seconds ! Let's check that out!
https://tenor.com/view/michael-scott-expressionless-gif-4436043
 
Hey Everyone,I am Surya Madhavan, a curious develo...]]></description><link>https://blogs.msurya.in/introducing-sheet2slide</link><guid isPermaLink="true">https://blogs.msurya.in/introducing-sheet2slide</guid><category><![CDATA[Java]]></category><category><![CDATA[excel]]></category><category><![CDATA[powerpoint]]></category><category><![CDATA[automation]]></category><category><![CDATA[Programming Blogs]]></category><category><![CDATA[projects]]></category><category><![CDATA[apache]]></category><category><![CDATA[Applications]]></category><dc:creator><![CDATA[Surya Madhavan]]></dc:creator><pubDate>Sun, 25 Feb 2024 21:36:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1708892226162/059f342e-6ecf-455a-944e-b31f7c13100a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ever been in a place where you had to sit and prepare slides for hours ?</p>
<p>What if you could do that in seconds ! Let's check that out!</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://tenor.com/view/michael-scott-expressionless-gif-4436043">https://tenor.com/view/michael-scott-expressionless-gif-4436043</a></div>
<p> </p>
<p>Hey Everyone,<br />I am Surya Madhavan, a curious developer with ideas in heart and tech in mind.</p>
<p>This week, I wanted to share a simple project I worked on (based on one of my pain point). Consider you have to create a PPT for showcasing some data (in Excel / CSV / JSON format). The manual work increases as the size of data increases. To find a relief, I was wandering around to write something simple in Java (since it's my go-to language at the moment). Surprisingly, there existed a library that does the exact thing - <strong>Apache POI !</strong></p>
<h2 id="heading-features">Features</h2>
<ul>
<li><p>Parse CSV data and populate slides with tables.</p>
</li>
<li><p>Add rows dynamically based on row height and pending space in a slide.</p>
</li>
<li><p>Add header &amp; footer if provided.</p>
</li>
<li><p><code>setup.properties</code> file to add config details.</p>
</li>
<li><p>Logging using SLF4J and Log4J 2 for better experience.</p>
</li>
</ul>
<h2 id="heading-how-to">How to ?</h2>
<p>To run this application,</p>
<ul>
<li><p>Clone the <a target="_blank" href="https://github.com/greykoalacode/sheet-to-slide">repository</a>. (also star the repo ;) )</p>
</li>
<li><p>Set the config properties in <code>setup.properties</code> file.</p>
</li>
<li><p>Put the CSV files in <code>resources/input</code> folder.</p>
</li>
<li><p>Run the <code>SheetToSlideApp</code> program using any IDE.</p>
</li>
<li><p>Your generated PPTX files should be under <code>resources/output</code> folder in seconds!</p>
</li>
</ul>
<h2 id="heading-challenges-faced">Challenges faced</h2>
<ul>
<li><p><strong>Positioning the table / text box</strong> was quite a task, since the positioning is based on a concept called anchor where we initialize a Rectangle/ Rectangle2D object with X-Y coordinates along with its height &amp; width.</p>
</li>
<li><p><strong>Units used are not known standards</strong> like pixels, inches. It uses an internal conversion class to convert Points to say pixels or some other unit. There's still more to know about units used in Apache POI though.</p>
</li>
</ul>
<h2 id="heading-about-apache-poi">About Apache POI</h2>
<p>Keep reading to understand the fundamentals of this app. So Apache POI is an open source library providing support to perform CRUD operations on Microsoft Office files (Word, Excel, PowerPoint). I will talk about PowerPoint files handling in detail here. Apache POI has different set of classes for the formats - <strong>HSLF</strong> for <code>.ppt</code> and <strong>XSLF</strong> for <code>.pptx</code> . I went with <strong>XSLF</strong> since PPTX is the latest format for PowerPoint.</p>
<h3 id="heading-my-understanding-of-apache-poi-classes-and-its-usage">My understanding of Apache POI classes and its usage</h3>
<p>Here's my understanding of the Apache POI design architecture. I have not covered all the classes, but those which were crucial for understanding and building basic scripts using this library.</p>
<ul>
<li><p><strong>XMLSlideShow</strong> - Parent class responsible to create PPT object from scratch / source.</p>
<ul>
<li><p><strong>XSLFSlideMaster</strong> - Subclass containing layouts &amp; extra configurations</p>
<ul>
<li><strong>XSLFSlideLayout</strong> - Subclass for setting layout. We can set predefined layouts using SlideLayout class.</li>
</ul>
</li>
<li><p><strong>XSLFSlide</strong> - Subclass responsible for each Slide object.</p>
<ul>
<li><p><strong>XSLFTextShape</strong> - This is useful to add a text box and add contents / paragraph.</p>
</li>
<li><p><strong>XSLFTextParagraph, XSLFTextRun</strong> - These are some useful subclasses to set text and also modify properties like Font Family, Font Size, etc.</p>
</li>
<li><p><strong>XSLFTable</strong> - Here comes our trump card. We can build a table of defined rows and columns.</p>
<ul>
<li><strong>XSLFCell</strong> - We can say, this is atomic level implementation for a XSLFTable. Here's where we populate the cells with instances of Text classes (mentioned above).</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>For those wanting to try building such apps, here is a cool <a target="_blank" href="https://poi.apache.org/components/slideshow/xslf-cookbook.html">guide</a> from Apache POI itself.</p>
<p>Any Feedback is appreciated!</p>
<p>Please star the <a target="_blank" href="https://github.com/greykoalacode/sheet-to-slide">repository</a> and I will be back with another blog / resource soon!</p>
]]></content:encoded></item><item><title><![CDATA[Writing a Svelte app for the first time]]></title><description><![CDATA[Hello Everyone,I am Surya Madhavan, a curious developer with ideas in heart and tech in mind. I am starting out to try my ideas out with technologies and evolve as a better developer in this journey.
This is my first technical blog with less tech and...]]></description><link>https://blogs.msurya.in/writing-a-svelte-app</link><guid isPermaLink="true">https://blogs.msurya.in/writing-a-svelte-app</guid><category><![CDATA[coding]]></category><category><![CDATA[Svelte]]></category><category><![CDATA[Sveltekit]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[challenge]]></category><category><![CDATA[Build In Public]]></category><category><![CDATA[Frontend Development]]></category><category><![CDATA[Frontend frameworks]]></category><dc:creator><![CDATA[Surya Madhavan]]></dc:creator><pubDate>Sun, 11 Feb 2024 15:30:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1707665253281/47d397d4-902b-4779-b844-9f78ef65ce7a.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello Everyone,<br />I am Surya Madhavan, a curious developer with ideas in heart and tech in mind. I am starting out to try my ideas out with technologies and evolve as a better developer in this journey.</p>
<p>This is my first technical blog with less tech and more learnings / challenges documented. This is more of a failure blog to help peers in building stuffs with lesser roadblocks.</p>
<h2 id="heading-introduction">Introduction</h2>
<p>Our ideas aren't worth much unless we implement it. Hence I started with implementing one of my ideas into a mini project and wanted to see how that turns out. For those who are curious about the problem statement, here it is:</p>
<p>An <strong>Application</strong> to <strong>document Cricket match score</strong> for use cases like <em>Corporate / Friendly matches</em>. Basically an attempt to replace notebook or our faint memories ;).</p>
<h2 id="heading-execution">Execution</h2>
<p>For the above idea, I decided to keep things simple (problem-wise) and start with a basic layout where user could add the score per over and details like extras (i.e. Wide, No Ball, Wicket).</p>
<p>I felt that this idea doesn't require backend immediately, so went for frontend right away. I chose Svelte as I wanted to try around a bit and also because it's been on the radar for quite some time.</p>
<p>Here's my <a target="_blank" href="https://github.com/greykoalacode/notekar">implementation</a> at the moment. It is not hosted anywhere and still requires a lot of improvement. However, this journey made me reflect that coding out an idea has its pros and cons and without a clear goal, it can get derailed easily.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1707663684528/cee6501d-5b70-47a4-b176-e32154b3ded0.png" alt="(Literal) barebones of my implementation ;)" class="image--center mx-auto" /></p>
<h3 id="heading-positives">Positives</h3>
<ul>
<li><p>Svelte has nice features like <code>.svelte</code> extensions with easy-to-grasp code structure.</p>
</li>
<li><p>Routing is in-house, i.e. creating a "docs" folder under "routes" should make the "/docs" route accessible by-default without any explicit configuration.</p>
</li>
<li><p>One could create <code>+layout.svelte</code> file to specify the layout of pages (i.e. Navigation Bar, Footer, Side section, etc.)</p>
</li>
<li><p>It is bundled with Vite, which leads to faster start-up.</p>
</li>
</ul>
<h3 id="heading-challenges-i-faced">Challenges I faced</h3>
<ul>
<li><p><strong>Comfortable with the technology</strong>: Given my context that I have been playing around with backend side of things (predominantly Java) for the past few months, it took me some time to get comfortable with a JavaScript Framework again.</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1707665089270/91bd0def-f651-4e52-9ed9-8b868218c390.jpeg" alt class="image--center mx-auto" /></p>
</li>
<li><p><strong>Go for the moon:</strong> Specifically, I initialized a SvelteKit project with Typescript, that meant I had two learning curves - each for Typescript &amp; SvelteKit.</p>
</li>
<li><p><strong>Unclear execution:</strong> I had not readied my business logic before coding and that lead to confusions midway about how to take the development process forward. I spent some days being overwhelmed about which side to focus - the execution logic ( entities, functions needed) or the development (learning Svelte, writing code blocks).</p>
</li>
</ul>
<h3 id="heading-learnings">Learnings</h3>
<ul>
<li><p>As a beginner developer who's trying to find their ground and rather wants to build stuff out of tech, it would be better to <strong><em>keep things simple</em></strong>. I know it sounds obvious but we get tempted to aim at the moon whenever we have a chance.</p>
</li>
<li><p>Since my Ideation phase was short and that led to enough roadblocks during development phase, hence my initial action would be to prepare a PRD (Product Requirement Document). It would be a comprehensive document to keep your priorities clear and focus on what's to be built. Here is a nice <a target="_blank" href="https://www.productplan.com/glossary/product-requirements-document/#:~:text=What%20Should%20a%20Product%20Requirements%20Document%20Contain%3F">resource.</a></p>
</li>
<li><p>PRD would help me get clearer goals, from which I can refine some specific tasks that can be started. This way, my tasks won't be overwhelming as they're thought out and simplified.</p>
</li>
<li><p>Coming to development, I would go for just Svelte and try getting comfortable with its fundamental concepts. Then I could pivot on turning it more type-safe (with TypeScript) or bringing advanced features (using SvelteKit).</p>
</li>
</ul>
<h2 id="heading-summary">Summary</h2>
<p>In our routine lives, ideation / brainstorming helps us rejuvenate and sustain our love for programming. However during this process of building, I fell in some common traps that can be avoided.</p>
<p>This Article was more of a personal experience, than commenting on Svelte and its features. Here is the documentation for you to start with <a target="_blank" href="https://svelte.dev/docs/introduction">Svelte.</a></p>
<p>I hope this article helps you turn out as a better, conscious developer. I would love to know your comments / insights. Thank you for your time!</p>
]]></content:encoded></item></channel></rss>