Upantor

Posted on: November 9, 2025

From Absolute Beginner to Building Real Projects

When I decided to learn my first programming language, I didn’t just want to watch tutorials and copy code. I wanted to create a living document of my journey—a comprehensive record of every concept, every struggle, and every “aha!” moment. JavaScript became my choice, and what follows is the story of how I went from zero to building functional applications.

Why Document Everything?

Most learning resources teach you what to do, but I wanted to understand why things work. By documenting each concept immediately after learning it, I created my own personalized textbook. This approach turned passive learning into active creation.

The Structure of My Learning

 

Phase 1: The Fundamentals

I started with the absolute basics:

  • Variables and data types (strings, numbers, booleans, objects, arrays)
  • Operators and conditional statements
  • Loops and functions
  • DOM manipulation fundamentals

What made this different was that each concept was immediately applied. Learning about arrays? I built a grade calculator. Learning about objects? I created a student profile system.

Phase 2: Making Things Interactive

This is where JavaScript truly came alive:

  • Event listeners that responded to clicks, hovers, and keystrokes
  • DOM manipulation to dynamically change content
  • Building my first complete game: Tic Tac Toe with win detection and reset functionality

Phase 3: Real-World Applications

The most exciting phase where I connected my code to the outside world:

  • API integration fetching jokes and currency exchange rates
  • Asynchronous programming with async/await and promises
  • Error handling for when APIs fail or users enter invalid data

Projects That Marked My Progress

The Game Phase

  1. Tic Tac Toe: My first complete game with win detection, draw conditions, and a reset function. This taught me about game logic and state management.
  2. Rock Paper Scissors: A more complex game that introduced random number generation, score tracking, and user vs computer interactions.

The Utility Phase

  1. Currency Converter: This project was a breakthrough. It combined:
    • API calls to fetch real-time exchange rates
    • Date-based historical rate lookup
    • Country flag integration based on currency codes
    • Form validation and error handling
  2. Joke Fetcher: A simple but powerful introduction to external APIs and JSON data parsing.

The Technical Stack I Built Alongside

While focusing on JavaScript, I naturally learned:

  • HTML5 for structure
  • CSS3 for styling (including responsive design with media queries)
  • Git for version control (though not shown in these files)
  • Debugging techniques using browser developer tools

My Learning Philosophy

1. Break Everything Down

Every complex problem was decomposed into tiny, manageable pieces. The currency converter wasn’t built in one go—it was: API research → dropdown creation → flag integration → date handling → error management.

2. Learn by Breaking (and Fixing)

I deliberately made mistakes to understand how things work. What happens if I forget await? What if the API returns unexpected data? Each broken feature taught me more than a working one.

3. Comment Everything

My code is filled with explanations—not just what the code does, but why I chose that approach and what alternatives exist. This created a dialogue with my future self.

The Most Valuable Lessons

Lesson 1: Everything is Connected

Learning functions naturally led to arrays, which led to array methods, which prepared me for API data handling. Each concept built on the previous one.

Lesson 2: The Browser is Your Laboratory

The instant feedback loop of writing JavaScript in the browser made learning addictive. See a change, refresh, and immediately see results.

Lesson 3: APIs are Magic Portals

When my currency converter first fetched real exchange rates, it felt like magic. That moment—connecting my code to the global financial system—was transformative.

Challenges I Overcame

The Async Wall

Understanding asynchronous code was initially confusing. My breakthrough came when I visualized it as leaving notes for my future code: “When you get this data, then do this.”

State Management

Keeping track of game states, scores, and user inputs taught me about the importance of clean data organization.

Error-First Learning

Instead of fearing errors, I learned to read them as clues. Each error message became a puzzle to solve.

What This Documentation Represents

This collection of files isn’t just code—it’s a map of my thought process. You can trace how my understanding evolved:

  • From var to let/const
  • From inline HTML events to addEventListener
  • From callback functions to promises to async/await
  • From static pages to dynamic applications

To Fellow Beginners

If you’re starting your programming journey, here’s what I learned:

  1. Document as you learn – Your future self will thank you
  2. Build immediately – Don’t wait until you “know enough”
  3. Embrace confusion – It means you’re learning something new
  4. Celebrate small wins – Getting a button to work is a victory

What’s Next?

This foundation in vanilla JavaScript opens doors to:

  • Frontend frameworks (React, Vue, Angular)
  • Backend development with Node.js
  • Mobile app development
  • More complex APIs and database integration

The Code Speaks for Itself

Below is a curated selection from my learning journey. Each file represents a milestone, and together they tell the story of how someone with no programming background can build real, working applications.

Every developer remembers their first language. For me, it will always be JavaScript—the language that taught me not just how to code, but how to think like a programmer.

The Project File

Bundling Preview...
  • api-style.css
  • generated-icon.png
  • Learning 1 - The Basic Concept.js
  • Learning 2 - DOM Events (Main Website Script).js
  • Learning 3 - Classes, OBJ, Async, Await.js
  • Learning 4 - API.js
  • little-style.css
  • style.css
  • Image
    • altumcode-PNbDkQ2DDgM-unsplash.jpg
    • fist-raised-solid-svgrepo-com.svg
    • hand-svgrepo-com.svg
    • two-fingers-of-a-hand-svgrepo-com.svg
  • api.html
  • index.html
Files will show here

This documentation represents approximately 3 months of dedicated learning, 2,000+ lines of commented code, and countless hours of problem-solving. It's raw, it's honest, and it's the foundation of my development career.

About the Author – Upantor Paul

I’m Upantor Paul, a WordPress engineer and performance-focused developer specializing in building high-performance, scalable websites using custom PHP logic, clean architecture, and precision engineering. Through upantor.com, I document real-world development work, technical experiments, and code journals focused on Elementor optimization, WordPress internals, Core Web Vitals, and long-term maintainability.
Beyond my personal engineering projects, I also run WebWish Creation — a WordPress-oriented platform where I share tutorials, provide services, and build practical resources for site owners and businesses looking to create, manage, and scale reliable WordPress websites. This setup allows me to work from both an engineering and client-delivery perspective, keeping solutions technically solid and business-focused.

If you’d like to work directly with me, you can explore my portfolio to see real projects in action, or start a technical consultation to discuss custom WordPress functionality, performance optimization, or a conversion-focused build engineered around your business goals.

If you like it, consider sharing it with your friend.