{"id":131,"date":"2026-01-20T13:06:22","date_gmt":"2026-01-20T05:06:22","guid":{"rendered":"https:\/\/singaubulit.com\/blog\/?p=131"},"modified":"2026-01-20T13:07:00","modified_gmt":"2026-01-20T05:07:00","slug":"vibe-coding","status":"publish","type":"post","link":"https:\/\/singaubulit.com\/blog\/2026\/01\/20\/vibe-coding\/","title":{"rendered":"Vibe Coding"},"content":{"rendered":"\n<p>I just learned about Vibe Coding.<\/p>\n\n\n\n<p>Basically, you use AI to code for you using natural language. In simpler terms, you can describe the functions you want for a program, and AI writes the code for you.<\/p>\n\n\n\n<p>You can write a small function or program for you (i.e. write an app).<\/p>\n\n\n\n<p>If you search for it on the net, you will be reminded that a good underlying knowledge about what&#8217;s written is still needed, should you write something more complicated (multifunctional).<\/p>\n\n\n\n<p>I have been vibe coding for a good 2 years on free accounts. My fave platform is CoPilot and yes you definitely still need to have a working knowledge on what&#8217;s going on in your codes. Imagine building a house and you wish to add a room but you don&#8217;t know how to make that work with the existing structure especially if you never build any kinds of structure before. That&#8217;s how it is.<\/p>\n\n\n\n<p>The key to building a full app via vibe coding is to determine a clear modular structure of what the app is going to be, that way, expansion will be more tolerable. So far I&#8217;ve tried that on web building and Telegram bots so don&#8217;t try this to create a more complicated program. \ud83d\ude35\u200d\ud83d\udcab<\/p>\n\n\n\n<p>Let&#8217;s see what it looks like with a simple prompt in CoPilot.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>Prompt:<\/strong> Create from scratch. I need a telegram bot that helps to send me random 4 digits upon request.<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Got it \ud83d\udc4d \u2014 let\u2019s build a simple Telegram bot from scratch that sends you a random 4\u2011digit number whenever you ask for it. I\u2019ll walk you through the steps and give you the code.\n\n---\n\n## \ud83d\udee0 Steps to Create the Bot\n\n<strong>1. **Create a bot on Telegram**<\/strong>\n   - Open Telegram and search for **BotFather**.\n   - Start a chat and run `\/newbot`.\n   - Give your bot a name and a username (must end with `bot`).\n   - BotFather will give you a **token** (something like `123456789:ABC-XYZ...`). Save this \u2014 you\u2019ll need it in the code.\n\n<strong>2. **Set up your environment**<\/strong>\n   - Install Python (3.8+ recommended).\n   - Install the `python-telegram-bot` library:\n     ```bash\n     pip install python-telegram-bot==13.15\n     ```\n\n<strong>3. **Write the bot code**<\/strong>\n   Here\u2019s a minimal working example:\n\n   ```python\n   import logging\n   import random\n   from telegram.ext import Updater, CommandHandler\n\n   # Enable logging\n   logging.basicConfig(\n       format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',\n       level=logging.INFO\n   )\n   logger = logging.getLogger(__name__)\n\n   # Command handler for \/random\n   def random_digits(update, context):\n       number = random.randint(1000, 9999)  # Generate random 4-digit number\n       update.message.reply_text(f\"Your random 4-digit number: {number}\")\n\n   def main():\n       # Replace with your BotFather token\n       TOKEN = \"YOUR_TELEGRAM_BOT_TOKEN\"\n\n       updater = Updater(TOKEN, use_context=True)\n       dp = updater.dispatcher\n\n       # Add command handler\n       dp.add_handler(CommandHandler(\"random\", random_digits))\n\n       # Start the bot\n       updater.start_polling()\n       updater.idle()\n\n   if __name__ == '__main__':\n       main()\n   ```\n\n<strong>4. **Run the bot**<\/strong>\n   - Save the file as `bot.py`.\n   - Run it:\n     ```bash\n     python bot.py\n     ```\n   - Go to your bot on Telegram and type `\/random`. It will reply with a random 4\u2011digit number.\n\n---\n\n<strong>## \ud83d\ude80 Extra Ideas<\/strong>\n- Add `\/start` command to greet you.\n- Allow `\/random N` to generate N random numbers.\n- Deploy it on a server (Heroku, AWS, or even a Raspberry Pi) so it\u2019s always online.\n\n---\n\nWould you like me to extend this bot so it can also **send you a random 4\u2011digit number automatically at a set time each day**, or keep it strictly on-demand with `\/random`?<\/code><\/pre>\n\n\n\n<p>Most importantly, you need to really anticipate what your app is going to need. Experience definitely counts in this case. Perhaps my biggest hurdle was debugging. Since I&#8217;m just a casual coder there were some things that I didn&#8217;t anticipate as the apps I was building started to take (bigger) shape. You&#8217;ll end up rebuilding an entire section just to make basic things work.<\/p>\n\n\n\n<p>Case in point, when I was building a Telegram bot, I began with a direct flow (prompt\/click -> execute) but I wasn&#8217;t expecting a stepped flow (prompt\/click -> prompted response (as many as you need) -> execute). So I had to strip off everything in the core files. To make matters worse, AI will drift away from the anchor topic as you add more questions, so there&#8217;s another challenge.<\/p>\n\n\n\n<p>For a casual coder, I definitely learned many new (and updated) things while vibe coding.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I just learned about Vibe Coding. Basically, you use AI to code for you using natural language. In simpler terms, you can describe the functions you want for a program, and AI writes the code for you. You can write a small function or program for you (i.e. write an app). If you search for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[20,33],"class_list":["post-131","post","type-post","status-publish","format-standard","hentry","category-code","tag-ai","tag-vibe-coding"],"_links":{"self":[{"href":"https:\/\/singaubulit.com\/blog\/wp-json\/wp\/v2\/posts\/131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/singaubulit.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/singaubulit.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/singaubulit.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/singaubulit.com\/blog\/wp-json\/wp\/v2\/comments?post=131"}],"version-history":[{"count":1,"href":"https:\/\/singaubulit.com\/blog\/wp-json\/wp\/v2\/posts\/131\/revisions"}],"predecessor-version":[{"id":132,"href":"https:\/\/singaubulit.com\/blog\/wp-json\/wp\/v2\/posts\/131\/revisions\/132"}],"wp:attachment":[{"href":"https:\/\/singaubulit.com\/blog\/wp-json\/wp\/v2\/media?parent=131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/singaubulit.com\/blog\/wp-json\/wp\/v2\/categories?post=131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/singaubulit.com\/blog\/wp-json\/wp\/v2\/tags?post=131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}