<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Vivek Shukla - Blog</title>
    <subtitle>I am a Software Engineer from India. I am currently building Daestro. I work in Rust, Javascript and Python.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://vshukla.com/tags/blog/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://vshukla.com/tags/blog/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-09-24T00:00:00+00:00</updated>
    <id>https://vshukla.com/tags/blog/atom.xml</id>
    <entry xml:lang="en">
        <title>Building A Journal Web App From Scratch Using Only Cursor</title>
        <published>2026-09-24T00:00:00+00:00</published>
        <updated>2026-09-24T00:00:00+00:00</updated>
        <author>
          <name>Vivek Shukla</name>
        </author>
        <link rel="alternate" type="text/html" href="https://vshukla.com/posts/building-journal-app-with-cursor/"/>
        <id>https://vshukla.com/posts/building-journal-app-with-cursor/</id>
        <summary type="html">I built a Journal web app from scratch using only Cursor (Agent mode). This blog post is about my experience of building it without me doing any coding by hand.</summary>
        <content type="html" xml:base="https://vshukla.com/posts/building-journal-app-with-cursor/">&lt;p&gt;I wanted a &lt;a rel=&quot;external&quot; href=&quot;https://hushjournal.com&quot;&gt;Journaling app&lt;/a&gt; for myself for a very long time but I couldn’t find something with which I resonated. For such things I prefer them as web app, they enable you to use them from anywhere, they can even be installed on your phone like an app.&lt;/p&gt;
&lt;p&gt;The main requirement for such an app was to be completely secure, all user contents must be end-to-end encrypted. The encryption method I chose was AES-256-GCM-SIV.&lt;/p&gt;
&lt;p&gt;I have used LLM-assisted coding from time to time, but this is the first time that I used Cursor’s agent mode for building a complete project from scratch.&lt;/p&gt;
&lt;p&gt;I didn’t ask it to one shot it, because then it won’t be my app. I had specific ideas and opinions in mind that I wanted in my app.&lt;/p&gt;
&lt;h2 id=&quot;features&quot;&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Privacy-first, end-to-end encrypted - both encryption and decryption happens on the client side&lt;/li&gt;
&lt;li&gt;Multi-journal layout, a Journal can have multiple Notebooks and a Notebook can have multiple Entries (content lives here)&lt;/li&gt;
&lt;li&gt;Each Journal will have their own key and user set passphrase&lt;/li&gt;
&lt;li&gt;Except for Journal name and dates, all other user input such as Notebook name, Entry title and content are encrypted on the client side&lt;/li&gt;
&lt;li&gt;Should be able to mask the content of Journal, which will be only revealed for active Notebook/Entry&lt;/li&gt;
&lt;li&gt;Different themes can be set per Journal basis&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;tech-stack&quot;&gt;Tech Stack&lt;/h2&gt;
&lt;p&gt;Since this is a client (frontend) heavy project, therefore, it is clear that a SPA framework would be good fit for it along with REST API on the backend.&lt;/p&gt;
&lt;p&gt;Therefore I chose Svelte on the frontend and Rust with Axum on the backend. I’ve experience with both of these and they both offer the best performance and developer ergonomics.&lt;/p&gt;
&lt;p&gt;Rust programs are compiled into a binary which can directly run on compatible machines. We can also embed Svelte build files into the Rust binary, which gives you a single binary that runs a server which serves both REST API and client.&lt;/p&gt;
&lt;h2 id=&quot;building-with-cursor&quot;&gt;Building With Cursor&lt;/h2&gt;
&lt;p&gt;I don’t look at Cursor as a magic wand which can just do things when you ask it to, instead I think of it as somewhere between a junior and senior developer.&lt;/p&gt;
&lt;p&gt;I prefer to break down my project goal into small step by step plans, so that I can verify agent’s work. By the way I was using Grok 4.6 High model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example Prompt:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;initialize backend directory as new cargo workspace, we will use crates such as Axum and SQLx (Postgres) to build REST APIs for the journal app.&lt;/li&gt;
&lt;li&gt;create pg_store trait which will use postgres as key-value store, this is similar to Redis’ kv store but backed by postgres database.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What I’ve noticed is that LLMs tend to make simple things very complicated, they abstract away one liners into a function which will be used only once. From time to time you have to nudge them into right direction, write important design patterns in AGENTS.md.&lt;/p&gt;
&lt;p&gt;Writing backend was pretty straight forward once I figured out all the nuances of how agent works and added relevant instructions in AGENTS.md.&lt;/p&gt;
&lt;p&gt;On the client side it was clear from the start that we will be using Svelte with SvelteKit in SPA mode, so my first prompt was to create a UI prototype in Svelte with TailwindCSS, DaisyUI and Bits-ui. The &lt;a rel=&quot;external&quot; href=&quot;https://x.com/thevivekshukla/status/2100162211465560340?s=20&quot;&gt;prototype&lt;/a&gt; was mostly good, it needed only few tweaks.&lt;/p&gt;
&lt;p&gt;Since it had already created all the REST APIs and UI prototype, it had much better idea on flow and end product that I wanted so I just prompted it to &lt;a rel=&quot;external&quot; href=&quot;https://x.com/thevivekshukla/status/2100290944763564305?s=20&quot;&gt;integrate API&lt;/a&gt; right away. That it did in one shot, all the APIs were integrated and whole thing was working fine.&lt;/p&gt;
&lt;p&gt;There were many minor issues and bad design choices here and there, that I pointed out and it fixed them all.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Letting an AI Agent build for you sounds very easy, but the nuanced choices made by these agents can easily derail the product if not guided properly. We should not see agents as a substitute for real human but like a junior developer and at times even a senior developer who needs guidance from the product manager.&lt;/p&gt;
&lt;p&gt;I am going to keep on using the agents to build things that I wanted for myself for so long. Everything that I build will be open source, including this journal app which I’m calling &lt;a rel=&quot;external&quot; href=&quot;https://hushjournal.com&quot;&gt;HushJournal&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>My Blogging Journey</title>
        <published>2026-08-25T00:00:00+00:00</published>
        <updated>2026-08-25T00:00:00+00:00</updated>
        <author>
          <name>Vivek Shukla</name>
        </author>
        <link rel="alternate" type="text/html" href="https://vshukla.com/posts/my-blogging-journey/"/>
        <id>https://vshukla.com/posts/my-blogging-journey/</id>
        <summary type="html">This post goes through my blogging journey, how it started in 2013 with Blogger then to WordPress and now this Zola site.</summary>
        <content type="html" xml:base="https://vshukla.com/posts/my-blogging-journey/">&lt;p&gt;My blogging journey has seen a lot of ups and downs. I started with Google’s Blogger then switched to self-hosted &lt;a rel=&quot;external&quot; href=&quot;https://wordpress.org&quot;&gt;WordPress&lt;/a&gt;, then to &lt;a rel=&quot;external&quot; href=&quot;https://sveltestarterkit.com/&quot;&gt;SvelteKit&lt;/a&gt; and now I’m using &lt;a rel=&quot;external&quot; href=&quot;https://getzola.org&quot;&gt;Zola&lt;/a&gt; for &lt;a href=&quot;/blog/2025/this-blog/&quot;&gt;this blog&lt;/a&gt;. I’m writing this post for &lt;a rel=&quot;external&quot; href=&quot;https://robertbirming.com/augustory-story-blog/&quot;&gt;AuguStory&lt;/a&gt; by Robert Birming.&lt;/p&gt;
&lt;h2 id=&quot;2013-2017&quot;&gt;2013 - 2017&lt;/h2&gt;
&lt;p&gt;I started blogging in 2013. I was inspired by success stories around blogs and it seemed like low-hanging fruit to me. I was a student at college at the time and wanted to do something to earn a few bucks for myself. So I created a blog on Blogger and named it &lt;a rel=&quot;external&quot; href=&quot;https://combuzzer.blogspot.com&quot;&gt;Combuzzer&lt;/a&gt;. The first version is still live but hasn’t been maintained for over a decade.&lt;/p&gt;
&lt;figure class=&quot;mb-4&quot;&gt;
    &lt;img src=&quot;/images/2026/combuzzer-com.png&quot; alt=&quot;Combuzzer&quot; /&gt;&lt;figcaption class=&quot;text-sm text-base-content/80 text-center mt-2&quot;&gt;
        Combuzzer, 24 Feb 2016
      &lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;From 2013 to 2015, I published around 36 blog posts.&lt;/strong&gt; Some of those posts were based on the stuff I knew from my experience but most of ’em were inspired by the other technical blogs that I was trying to imitate. When I look back, I realize the biggest mistake I made was not writing about my own experience, for example, at the time I was learning programming by reading books, I could have written on that experience, shared what I had learned.&lt;/p&gt;
&lt;p&gt;After finishing college in 2016 I didn’t get a job immediately, so I took a year to work on my coding skills by reading programming books, doing Udemy courses and building projects. At the time, I thought let’s give blogging one more try. This time I wanted to do blogging right, so I bought the domain &lt;code&gt;combuzzer.com&lt;/code&gt; with the intention to self-host the WordPress site.&lt;/p&gt;
&lt;p&gt;I created an AWS account, learned how to set up the server and install WordPress with SSL to make it safe and trustworthy. This was all very exciting to me.&lt;/p&gt;
&lt;p&gt;I decided to write on Artificial Intelligence-related stuff. Sadly, I could only write three small articles. I had no real work experience in the area. It seemed like a very steep path then. So, instead of working on my blog, I increased my focus on getting a job and got one a few months later.&lt;/p&gt;
&lt;h2 id=&quot;2017-2023&quot;&gt;2017 - 2023&lt;/h2&gt;
&lt;p&gt;I did Python &amp;amp; Django courses on Udemy and got a job as a Backend Engineer. Along the way I learned lots of cool stuff. I thought this would be a good time to start blogging again and share my learnings. This time I bought a domain with my own name, &lt;code&gt;vivekshukla.xyz&lt;/code&gt;.&lt;/p&gt;
&lt;figure class=&quot;mb-4&quot;&gt;
    &lt;img src=&quot;/images/2026/blog-vivekshukla-xyz.png&quot; alt=&quot;blog.vivekshukla.xyz&quot; /&gt;&lt;figcaption class=&quot;text-sm text-base-content/80 text-center mt-2&quot;&gt;
        blog.vivekshukla.xyz, 21 April 2018
      &lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I set up a WordPress blog on an &lt;a rel=&quot;external&quot; href=&quot;https://daestro.com/instances/aws/family/general-purpose&quot;&gt;AWS instance&lt;/a&gt;. Over the next few months I wrote posts related to &lt;a href=&quot;/tags/django/&quot;&gt;Django&lt;/a&gt; (a Python web framework). I was not writing regularly but occasionally I would write on topics that were not easily available on the web.&lt;/p&gt;
&lt;p&gt;A few months later something happened. Google was sending 40-50 users daily to my blog. It was actually &lt;a href=&quot;/tech/django-rest-framework-file-upload-api/&quot;&gt;one particular post&lt;/a&gt; that was ranking in the first position in Google search for its keyword. I was completely blown away by this, and on top of that people were commenting on the blog thanking me for writing the post. This was surreal to me.&lt;/p&gt;
&lt;h2 id=&quot;2023-now&quot;&gt;2023 - Now&lt;/h2&gt;
&lt;p&gt;Around 2023 I wanted to create a blog fully dedicated to technical stuff, where I would write tutorials and break down complex stuff, so I bought &lt;code&gt;backendengineer.io&lt;/code&gt; and moved my current blog there. I could only write a few articles in one year. Then two things happened: the &lt;code&gt;.io&lt;/code&gt; domain got more expensive (it was already expensive) and its future was uncertain since there was news that it may get cancelled in the future.&lt;/p&gt;
&lt;figure class=&quot;mb-4&quot;&gt;
    &lt;img src=&quot;/images/2026/backendengineer-io.png&quot; alt=&quot;backendengineer.io&quot; /&gt;&lt;figcaption class=&quot;text-sm text-base-content/80 text-center mt-2&quot;&gt;
        backendengineer.io, 28 Sep 2023
      &lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;So I decided to move off of &lt;code&gt;backendengineer.io&lt;/code&gt; to &lt;code&gt;vivekshuk.la&lt;/code&gt; (bought in 2019). I used &lt;code&gt;vivekshuk.la&lt;/code&gt; briefly for around a year. I wanted a &lt;code&gt;.com&lt;/code&gt; domain but it was not available at the time. But then in 2026 I found that &lt;code&gt;vshukla.com&lt;/code&gt; has become available, so I jumped at the opportunity and bought it. &lt;code&gt;.com&lt;/code&gt; domains have a lot more credibility than a country-specific domain, so I chose it and this time I hope I’m going to keep it for a long time.&lt;/p&gt;
&lt;figure class=&quot;mb-4&quot;&gt;
    &lt;img src=&quot;/images/2026/vivekshuk-la.png&quot; alt=&quot;vivekshuk.la&quot; /&gt;&lt;figcaption class=&quot;text-sm text-base-content/80 text-center mt-2&quot;&gt;
        vivekshuk.la, 28 Feb 2026
      &lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;now&quot;&gt;Now&lt;/h2&gt;
&lt;p&gt;I’ve a renewed sense of purpose and energy to focus on writing now. I think I really missed out on years when I didn’t write. I used to think that I should only write things which are unique. But sometimes just sharing your knowledge can do wonders; it clears your thinking and shows gaps in your knowledge.&lt;/p&gt;
&lt;p&gt;One thing which is mind-boggling to me is that even if I had published one article a month, by now I would have &lt;strong&gt;144 articles&lt;/strong&gt; published. Just being consistent and showing up regularly can do wonders.&lt;/p&gt;
&lt;h2 id=&quot;my-advice&quot;&gt;My Advice&lt;/h2&gt;
&lt;p&gt;Here are some unsolicited advice from me to new / aspiring bloggers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Choose simple setup when you are starting. Using something like Bear Blog, Medium, Substack, Hugo, Zola is recommended.&lt;/li&gt;
&lt;li&gt;Don’t fall in the trap of updating style / design of your blog often, you think you are doing something productive but you are not.&lt;/li&gt;
&lt;li&gt;Set a posting schedule and stick to it. Even if you decide to post once a month, that’s great but just stick to it.&lt;/li&gt;
&lt;li&gt;Writing is a journey, nobody writes perfect at first. Just focus on writing and then editing. You’ll learn things along the way.&lt;/li&gt;
&lt;li&gt;Do not shy away from using grammar and spelling correction tools.&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Meditation</title>
        <published>2026-04-08T00:00:00+00:00</published>
        <updated>2026-04-08T00:00:00+00:00</updated>
        <author>
          <name>Vivek Shukla</name>
        </author>
        <link rel="alternate" type="text/html" href="https://vshukla.com/blog/meditation/"/>
        <id>https://vshukla.com/blog/meditation/</id>
        <summary type="html">Just sit.</summary>
        <content type="html" xml:base="https://vshukla.com/blog/meditation/">&lt;p&gt;Meditation is not something that you do; you just allow it to happen. It just needs the right ambience within you and enough practice. I think our inner nature itself is meditative and still; we just need to harness it. Make ourselves available to it.&lt;/p&gt;
&lt;p&gt;Don’t be or aspire to be a senior or experienced meditator; there is no such thing. &lt;strong&gt;Always sit with the mindset of a beginner, as if you are doing it for the first time.&lt;/strong&gt; Do not chase or ponder upon any experience during meditation; discard it, do not talk or think about it, forget it.&lt;/p&gt;
&lt;h2 id=&quot;sit&quot;&gt;Sit&lt;/h2&gt;
&lt;p&gt;Sit cross-legged, keep your spine comfortably erect, your palms open and resting on your legs, eyes closed, your tongue placed at the origin of the upper teeth, head slightly higher than normal, and put a smile on your face. Tell your mind to relax. Take 3 deep breaths with a full stomach.&lt;/p&gt;
&lt;h2 id=&quot;embark&quot;&gt;Embark&lt;/h2&gt;
&lt;p&gt;Close your eyes: Feel the environment, feel the temperature on your skin. Listen to the sounds around you. Smell the odour around you. Feel the touch of your body to your asana. Feel your body from top to bottom. See the darkness of the closed eyes. Ask yourself, “Who am I?”. See the thoughts that arise in you like waves, observe them until they disappear, don’t engage, then feel the phenomenon that keeps you alive, &lt;strong&gt;your breathing&lt;/strong&gt;, just observe, let the body be. Just keep watching, even if your mind wants you to focus on your thoughts, just say &lt;strong&gt;not now&lt;/strong&gt;, then come back to observe your breathing.&lt;/p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>To make things happen, focus</title>
        <published>2025-09-10T00:00:00+00:00</published>
        <updated>2025-09-10T00:00:00+00:00</updated>
        <author>
          <name>Vivek Shukla</name>
        </author>
        <link rel="alternate" type="text/html" href="https://vshukla.com/blog/2025/to-make-things-happen-focus/"/>
        <id>https://vshukla.com/blog/2025/to-make-things-happen-focus/</id>
        <content type="html" xml:base="https://vshukla.com/blog/2025/to-make-things-happen-focus/">&lt;p&gt;There are a gazillion things one may want to do, maybe as an escape, maybe as a distraction, maybe just wishful thinking, just to avoid the one thing that they should do.&lt;/p&gt;
&lt;p&gt;The more substantial the thing you want to do, the more focus it will require. Don’t get distracted; to do something big you need to put your head down and work. Your goal must become the center of your life; it must consume you.&lt;/p&gt;
&lt;p&gt;Either knowingly or unknowingly, people who have done something worthy in their life have put their focus on the goal. Maybe they thought of it as passion or obsession or challenge, but they kept their focus.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Is it worth doing?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When you pick something up, ask yourself, &lt;strong&gt;is it worth doing?&lt;/strong&gt; Just a question in the void can clear a lot of things in you.&lt;/p&gt;
&lt;p&gt;Maybe you will fail, maybe you will succeed, but if it’s worth doing, it should be done. It should be done for yourself. It’s important to pick some goals which are bigger than you; that is how you grow.&lt;/p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Content Strategy For Indie Makers</title>
        <published>2025-09-07T00:00:00+00:00</published>
        <updated>2025-09-07T00:00:00+00:00</updated>
        <author>
          <name>Vivek Shukla</name>
        </author>
        <link rel="alternate" type="text/html" href="https://vshukla.com/blog/2025/content-strategy-for-indie-makers/"/>
        <id>https://vshukla.com/blog/2025/content-strategy-for-indie-makers/</id>
        <summary type="html">My thoughts on indie makers can approach their content and marketing strategy.</summary>
        <content type="html" xml:base="https://vshukla.com/blog/2025/content-strategy-for-indie-makers/">&lt;p&gt;A new wave of indie makers is emerging. Developing with technology was never this easy and accessible.&lt;/p&gt;
&lt;p&gt;Every day new SaaS products are being launched. With this comes the problem that how one can capture the audience for their own product.&lt;/p&gt;
&lt;p&gt;Conventional method of finding and targeting keywords, going on backlink hunting is not that impactful since the advent of AI. Don’t get me wrong these are still important however not at the beginning.&lt;/p&gt;
&lt;p&gt;The number of people searching on Google is declining everyday and because of that even Google has put AI response first thing in the search, which reduces clicks on your website even more, even if it’s in Top 3 spot of search result.&lt;/p&gt;
&lt;p&gt;However there is also AI slop fatigue among people, wherever you see people are using AI to write their content and it’s not that hard to spot it. So it’s recommended to use AI for idea generation, reviewing the content and strategy.&lt;/p&gt;
&lt;p&gt;Having launched &lt;a rel=&quot;external&quot; href=&quot;https://daestro.com&quot;&gt;my own SaaS&lt;/a&gt; and after researching quite a bit on marketing and content strategy. Based on my own journey and research, I’ve developed a content strategy that feels more sustainable. While these are just my thoughts, I’m already applying some of them and plan to fully commit to this approach.&lt;/p&gt;
&lt;h2 id=&quot;start-at-the-start&quot;&gt;Start at the start&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Marketing is transfer of enthusiasm - Jason Fried&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When you start any new project you are enthusiastic about it like it’s the best idea in the world which can change your life, use this enthusiasm to your advantage. Brainstorm content ideas, create the content, create the why of your idea/product. Find community around your problem on Reddit, X or Bluesky, engage with them.&lt;/p&gt;
&lt;p&gt;One of the biggest mistake first time indie maker do (even I did) is that I’ll get on marketing and content creation after I’m done with the development of my product.&lt;/p&gt;
&lt;p&gt;This is the worst thing you can do to your product and yourself. Content creation must go on hand in hand with your development work from the day one. I would first launch my website with wait-list form to capture visitor’s email. This will be put on all pages.&lt;/p&gt;
&lt;p&gt;For me the time split between Development and Content creation would be:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;At the start:&lt;/strong&gt;
80% Development and 20% content.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When development is nearing completion:&lt;/strong&gt;
50% Development and 50% Content&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;After launching the product:&lt;/strong&gt;
Well if your product is really viral or acquired good enough customer base then you should continue with 20% content creation and 80% development since you will be getting a lot of feedback, bug report and feature request.&lt;/p&gt;
&lt;p&gt;If product is not successful as it was thought it would be then do 80% content creation and 20% development until you reach desired user base.&lt;/p&gt;
&lt;h2 id=&quot;create-content-around-your-product&quot;&gt;Create content around your product&lt;/h2&gt;
&lt;p&gt;It’s a good strategy to start creating content about basic stuff around your product (or service), even glossary stuff like explaining related terms, use cases, review of the current situation, etc.&lt;/p&gt;
&lt;p&gt;Suppose your product is screen recorder app:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;start with why this app, what are it’s features that sets it apart&lt;/li&gt;
&lt;li&gt;how to use it, give multiple use cases&lt;/li&gt;
&lt;li&gt;how it differs from existing products, cover each of the competition compared to which your product is better&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;go-big-with-viral-worthy-content&quot;&gt;Go Big with Viral-Worthy Content&lt;/h2&gt;
&lt;p&gt;After covering all basics about your product, now you need to work on attention grabbing stuff. It could be either video or article, whichever suits your niche, however doing both would be encouraged.&lt;/p&gt;
&lt;p&gt;Create Mr. Beast of content, spend 2 weeks, 4 weeks or even 8 weeks, but create something that truly grabs people’s attention. It can be research, experiment or entertaining stuff, but stick to your niche.&lt;/p&gt;
&lt;h2 id=&quot;don-t-sell-rather-inform&quot;&gt;Don’t Sell, Rather Inform&lt;/h2&gt;
&lt;p&gt;I’ve shown interests on products where developer is not trying to sell you the stuff, rather informing you, helping you. Be helpful, this creates a good will, even if people do not buy your product, they might share it with someone else.&lt;/p&gt;
&lt;h2 id=&quot;engage&quot;&gt;Engage&lt;/h2&gt;
&lt;p&gt;Be real. I would share my journey as a person. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How I started&lt;/li&gt;
&lt;li&gt;How is it going&lt;/li&gt;
&lt;li&gt;Any important milestone reached&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Share your stories, share your number like profit, loss, investment, etc.&lt;/p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>This Blog</title>
        <published>2025-09-06T00:00:00+00:00</published>
        <updated>2025-09-06T00:00:00+00:00</updated>
        <author>
          <name>Vivek Shukla</name>
        </author>
        <link rel="alternate" type="text/html" href="https://vshukla.com/blog/2025/this-blog/"/>
        <id>https://vshukla.com/blog/2025/this-blog/</id>
        <summary type="html">A bit about my blog</summary>
        <content type="html" xml:base="https://vshukla.com/blog/2025/this-blog/">&lt;p&gt;This post is not going to be very technical. I am just going to talk about my thought process behind implementing and needing various features this blog has.&lt;/p&gt;
&lt;p&gt;In a nutshell, a blog is just a log of user’s life that is available over the internet. There are various blog service from free to paid. Even twitter (now X) is a blogging (micro blogging) platform.&lt;/p&gt;
&lt;p&gt;This blog is build with &lt;a rel=&quot;external&quot; href=&quot;https://getzola.org&quot;&gt;Zola&lt;/a&gt;, which is SSG (Static Site Generator), which parses Mardown file to generate HTML pages, which you can host anywhere, even for free, however you’ve to be bit technical.&lt;/p&gt;
&lt;p&gt;In a SSG there is no database, you just have your markdown files and HTML templates, you can store it anywhere, like me most prefer to use version control system like GitHub to store the blog data.&lt;/p&gt;
&lt;p&gt;In the past I have used all sorts of hosting method. I started with Blogspot, which is free blogging service by Google, it’s good but limited. Then I moved on to Wordpress for a good few years, however I didn’t like sometimes I had to be bit involved to manage it. It’s PHP based software and there are a lot of moving parts when it comes to managing it. And it’s certainly not free.&lt;/p&gt;
&lt;p&gt;Then I heard about SSG, at first I was dismissive of it, however after some years I came along and moved to Hugo, another SSG which is very popular, one of the top choices for a lot of people. Hugo was good however I didn’t like it’s templating syntax, to me it reads very weird.&lt;/p&gt;
&lt;p&gt;At some point I was working with Sveltekit for my work needs, so I though let’s give Sveltekit try since we can generate static sites with Sveltekit as well. I made a blog which also uses markdown to parse and serve the blog. After using this for around a year I moved to Zola (current blog) because the fact that Svelte and Sveltekit are frontend javascript framework, so they change a lot. Just moving from Svelte 4 to 5 was a big change.&lt;/p&gt;
&lt;p&gt;After discovering Zola (another SSG) and reading up on it’s docs and other people’s blog, Zola clicked with me because of it’s very intuitive template syntax (I come from Django so!!). So I built this blog with my bare hand from the scratch.&lt;/p&gt;
&lt;p&gt;Some of the features of Zola:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generates static HTML&lt;/li&gt;
&lt;li&gt;Built-in syntax highlighting&lt;/li&gt;
&lt;li&gt;Load data from files like csv, json&lt;/li&gt;
&lt;li&gt;Also can load data from remote urls&lt;/li&gt;
&lt;li&gt;Sitemap generator&lt;/li&gt;
&lt;li&gt;RSS generator&lt;/li&gt;
&lt;li&gt;Very poweful concept of Section and Page&lt;/li&gt;
&lt;li&gt;Highly customizable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After going through all this blogging of around 10 years, I knew a few things I needed. This time I just wanted to write (posts) and so I wanted to keep simple UI but behind the scene all the features one might need.&lt;/p&gt;
&lt;p&gt;A brief on all the features this blog has:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SEO
&lt;ul&gt;
&lt;li&gt;Automatic handling of meta tags&lt;/li&gt;
&lt;li&gt;schema generation for structured data&lt;/li&gt;
&lt;li&gt;OG (Opengraph) tags&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Post / Article
&lt;ul&gt;
&lt;li&gt;hidden: makes post invisible in listings, only accessible via link&lt;/li&gt;
&lt;li&gt;noindex: marks post to be not indexed by search engines&lt;/li&gt;
&lt;li&gt;posted dated posts: set a later date for post to be published&lt;/li&gt;
&lt;li&gt;tags: add tags to post around relevant topic&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I’ve been very happy with Zola. It does not get in the way and let me just write now. For long I have not been writing, but now I’ve decided to continue writing.&lt;/p&gt;
</content>
    </entry>
    <entry xml:lang="en">
        <title>Upgrading to Ubuntu 24.04 on my Lenovo Legion 5</title>
        <published>2025-04-28T00:00:00+00:00</published>
        <updated>2025-08-03T00:00:00+00:00</updated>
        <author>
          <name>Vivek Shukla</name>
        </author>
        <link rel="alternate" type="text/html" href="https://vshukla.com/blog/2025/upgrading-to-ubuntu-24-on-lenovo-legion/"/>
        <id>https://vshukla.com/blog/2025/upgrading-to-ubuntu-24-on-lenovo-legion/</id>
        <summary type="html">My experience on upgrading Ubuntu from 22.04 to 24.04 on my Lenovo Legion 5 gaming laptop</summary>
        <content type="html" xml:base="https://vshukla.com/blog/2025/upgrading-to-ubuntu-24-on-lenovo-legion/">&lt;p&gt;I had been using Ubuntu 22.04 LTS for around 1.5 years. Overall, I like and prefer Ubuntu, and it works quite well on my Legion 5 laptop. Even gaming on Ubuntu is good since the Nvidia graphics driver comes preinstalled.&lt;/p&gt;
&lt;p&gt;One minor issue was with the older GTK version. Because of this, the Dropbox desktop app would not run properly: when you install the &lt;code&gt;.deb&lt;/code&gt; package and then try to upgrade your system packages, it will fail and tell you to apply fixes which will uninstall Dropbox. So every time you want to upgrade your system packages, you have to uninstall Dropbox and then install it again.&lt;/p&gt;
&lt;h2 id=&quot;ubuntu-24-04-lts&quot;&gt;Ubuntu 24.04 LTS&lt;/h2&gt;
&lt;p&gt;Ubuntu 24.04 LTS was launched last year, but at the time I didn’t want to upgrade. However, after a year I thought it would be a good time since the major bugs would be fixed by now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Major reasons for upgrading:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New Linux kernel&lt;/li&gt;
&lt;li&gt;No GTK version issue with Dropbox&lt;/li&gt;
&lt;li&gt;Some UI (GNOME) improvements&lt;/li&gt;
&lt;li&gt;Needed to format the disk to allot a bigger partition size for Ubuntu&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;installation-experience&quot;&gt;Installation Experience&lt;/h2&gt;
&lt;p&gt;The whole installation process was easy. I created a bootable USB drive using &lt;a rel=&quot;external&quot; href=&quot;https://etcher.balena.io/&quot;&gt;balenaEtcher&lt;/a&gt;. Then I disabled secure boot and enabled boot from USB in the BIOS. On Lenovo, like most systems, you press F2 while booting to access the BIOS.&lt;/p&gt;
&lt;p&gt;I’m dual booting with Windows 11, which I use mostly for gaming (Marvel Rivals). I have two SSDs installed: 512 GB and 1 TB. The 512 GB one is all for Windows, and the 1 TB one I’ve partitioned into 500 GB for Ubuntu, 32 GB for swap memory, and the remaining storage is formatted as an NTFS drive so that both Windows and Ubuntu can access it.&lt;/p&gt;
&lt;h2 id=&quot;installing-apps&quot;&gt;Installing Apps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Konsole: The default Terminal is okay, but I was bored with it so I decided to give &lt;a rel=&quot;external&quot; href=&quot;https://konsole.kde.org/&quot;&gt;Konsole&lt;/a&gt; a try, and I really liked its simplicity and accessibility. Just make sure not to install it from the Snap store, as snap apps are sandboxed and most things will not work. I installed it from &lt;a rel=&quot;external&quot; href=&quot;https://flathub.org/&quot;&gt;Flathub&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;VS Code: Installed directly from its website&lt;/li&gt;
&lt;li&gt;Cursor: Cursor only provides an &lt;a rel=&quot;external&quot; href=&quot;https://appimage.org/&quot;&gt;AppImage&lt;/a&gt;, which is a portable app, so you don’t install it; it just runs in a sandbox and has no root access.&lt;/li&gt;
&lt;li&gt;Zed: I gave Zed a try and there are some annoying bugs, like when the system wakes from sleep the Zed window doesn’t render and it shows some other window’s content on top of it, and the only way to fix it is to kill Zed and restart. Sometimes extensions won’t install, occasionally the editor shows a pointer cursor for no reason, there’s no Prettier extension, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;alt-tab-scroll-glitch&quot;&gt;Alt + Tab Scroll Glitch&lt;/h2&gt;
&lt;p&gt;Alt + Tab is a very old issue that affects X11 systems and has remained unresolved by the Chromium team all this time. The problem is that when you are using the Chrome browser and some Electron-based app (which packages Chromium) like VS Code, the scrolling you do in one window will also happen in the other when you switch apps and scroll. This jittery and unexpected scrolling is a pain for a lot of people.
This problem has been discussed here: &lt;a rel=&quot;external&quot; href=&quot;https://askubuntu.com/questions/1075621/how-to-solve-a-scrolling-misbehavior-after-doing-alttab&quot;&gt;askubuntu&lt;/a&gt; and &lt;a rel=&quot;external&quot; href=&quot;https://github.com/microsoft/vscode/issues/28795#issuecomment-1511474956&quot;&gt;vscode issue&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; There is a workaround by &lt;a rel=&quot;external&quot; href=&quot;https://github.com/lucasresck&quot;&gt;Lucas Resck&lt;/a&gt; using a &lt;a rel=&quot;external&quot; href=&quot;https://extensions.gnome.org/extension/5282/alttab-scroll-workaround/&quot;&gt;GNOME extension&lt;/a&gt; which works wonders.&lt;br /&gt;
This only happens on X11 and not on Wayland, but the Nvidia driver support on Wayland is not good, so that’s not an option.&lt;/p&gt;
</content>
    </entry>
</feed>
