ᵁᴾᴰᴬᵀᴵᴺᴳ My 🆕 #100DaysOfCode Challenge: 100 Workdays of Coding!

ᴵⁿ ᵗᶦᵐᵉˢ ᵒᶠ ᶜˡᶦᵐᵃᵗᵉ ᵉᵐᵉʳᵍᵉⁿᶜʸ https://climateclock.world/

Why I'm Taking the Challenge

Starting May 2, 2025, I'll be diving into the #100DaysOfCode challenge—but with a twist! Instead of coding for 100 consecutive days, I'll be coding on workdays only (Monday to Friday), no weekends included! This means my challenge will run until October 20, 2025.

I'm doing this to focus on developing my content management system (CMS) while keeping a sustainable pace for my lifestyle. Coding one hour every single day might be overwhelming, but 100 dedicated workdays feels both achievable and impactful! I hope this time those naughty amateur magicians stay sleepy, he-he.





What I'll Be Working On

My main focus will be my CMS project—building, refining, and optimizing it to be more functional and efficient. This will involve:

  • Enhancing database structure and queries
  • Improving user interface and experience
  • Implementing new features
  • Debugging and performance optimizations

My Coding Schedule

  • Start Date: May 2, 2025 (Friday)
  • End Date: October 20, 2025 (Monday)
  • Workdays only (Monday–Friday), skipping weekends and Croatian public holidays

Each day, I'll aim to code for a consistent amount of time (minimum one hour) and track my progress along the way.

How I'll Stay Motivated

  • Posting regular updates on my blog
  • Sharing milestones and challenges on social media
  • Engaging with the #100DaysOfCode / #100DaysOfCoding community for support and inspiration
  • Keeping a log of lessons learned and improvements made

My Goal by the End

By October 20, I aim to have a fully improved and functional CMS that aligns with my vision. More importantly, I want to develop a consistent coding habit that I can sustain long-term!

Follow my journey and let’s make these 100 workdays count! 🚀


Day 1 Progress: #100DaysOfCode

  • Started: 100 Workdays of Coding challenge
  • Updated footer with an "Admin" link
  • Improved HTML code structure for embedding links (in list templates)
  • Continued development of: Extended Gallery CMS

Day 2 Progress: #100DaysOfCode

  • Continuing: 100 Workdays of Coding challenge
  • Cleaning up code for improved readability and maintainability
  • Fixing broken URLs caused by edited titles
  • Ongoing work on: Image Gallery CMS

Day 3 Progress: #100DaysOfCode

  • Ongoing: 100 Workdays of Coding challenge
  • Uploaded a new version to the SourceForge server
  • Available for public download
  • Significant improvements can be applied by updating files via FTP
  • Project focus: Image Gallery CMS

Day 4 Progress: #100DaysOfCode

  • Continuing: 100 Workdays of Coding challenge
  • Experimenting with structured data to connect with the Semantic Web
  • Optimizing for Open Graph (OG) and social media preview tags
  • Noted: twitter:* tags are still valid and functional for Twitter/X cards (as of May 2025)
  • When I programmed procedurally in PHP, I implemented all these enhancements — though somewhat messily (check the Internet Archive)
  • Ongoing development of: Image Gallery CMS

Day 5 Progress: #100DaysOfCode

  • Continuing: 100 Workdays of Coding challenge
  • Worked on JSON-LD schemas to support the Semantic Web
  • Completed a high-quality refresh of the “View Solo Image” template
  • Project: Extended Gallery CMS

Day 6 Progress: #100DaysOfCode

  • Continuing: 100 Workdays of Coding challenge
  • Worked on JSON-LD schemas for the Semantic Web
  • Performed a high-quality refresh of all templates:
    • Image Gallery Content Management System
    • Sub Project - Extended Gallery CMS
    • Sub Project - Simplified Gallery CMS
  • Plans to upload the refreshed templates to the SourceForge server soon for public download

Wishing you a joyful and restful weekend! Take time to recharge and enjoy!

Day 7 Progress: #100DaysOfCode

  • Continuing: 100 Workdays of Coding challenge
  • Implemented structured data for rich search engine results
  • Validated all Schema.org meta tags successfully
  • Created a dynamic footer menu, editable via links.json
  • Replaced deprecated “Share to Skype” button with “Share to Flipboard”
  • The latest version of 'Sub Project – Extended Gallery CMS' is available for download in the public domain — no subscription needed

Day 8 Progress: #100DaysOfCode

  • Continuing: 100 Workdays of Coding challenge
  • Managing three active Extended Gallery CMS instances:
  • Each CMS instance offers distinct features and content structure
  • Working on merging them into a unified, Open Source Gallery CMS product

Day 9 Progress: #100DaysOfCode

  • Continuing: 100 Workdays of Coding challenge
  • Developed a Dynamic Weekly Activities Widget — a responsive web component
  • Displays a user's weekly activities in a card-based layout with platforms, descriptions, and timestamps
  • Styled with a gradient background and hover effects
  • Dynamically populated using JavaScript; adaptable for real-time API updates

Dynamic Weekly Activities Widget

This is a well-crafted, stylish widget — responsive, dynamic, and informative. Share it online or embed it in your site. A responsive and visually engaging web component that showcases my weekly activities in a scrollable, card-style layout.

Key Features:

  • Gradient animated background

  • 🧱 Card-style layout for each activity

  • 🔄 Auto-updates every 5 minutes

  • 🖱️ Horizontal scroll with hover effects

  • JavaScript-powered dynamic loading

  • 🧠 Relative time labels (Today, Yesterday, etc.)

  • 🧩 Platform-based icons for better context

  • 🌊 Waves & spinner for UX polish

  • 📱 Mobile-optimized with responsive adjustments

Check out full syntax-highlighted code teaser:

<div style="max-width: 400px; margin: 1rem auto; padding: 1rem; border-radius: 12px; background: #f9f9f9; box-shadow: 0 4px 12px rgba(0,0,0,0.1); font-family: Arial, sans-serif;" role="region" aria-label="Weekly Activities">
  <h2 id="widgetTitle" style="margin-top: 0; font-size: 1.4rem; color: #333;">Luka's Week</h2>
  <div id="activityList" role="list" tabindex="0" style="min-height: 100px; border-top: 1px solid #ddd; padding-top: 0.5rem;">
    <div style="text-align: center; padding: 1rem; color: #888;">Loading...</div>
  </div>
  <div style="height: 5px; background: linear-gradient(to right, #00c6ff, #0072ff); border-radius: 5px; margin-top: 1rem;"></div>
</div>

<script>
async function fetchActivities() {
  const res = await fetch('Widget_fetch_data.php');
  const data = await res.json();
  const list = document.getElementById('activityList');
  list.innerHTML = '';
  data.forEach(item => {
    const div = document.createElement('div');
    div.textContent = item.title + ' – ' + item.day;
    div.style.padding = '0.5rem 0';
    div.style.borderBottom = '1px solid #eee';
    list.appendChild(div);
  });
}
fetchActivities();
setInterval(fetchActivities, 300000);
</script>

🔗 Check out my developer page (redesign in progress)


Day 10 Progress: #100DaysOfCode

Day 11 Progress: #100DaysOfCode

  • Project: Monthly Newsletter – Live Preview
  • Author: Luka Jagor
  • Objective: Retrieve images from RSS Feed items for a monthly newsletter.
  • Approach: Parsing content using Open Graph metadata and the PHP DOM (Document Object Model).
  • Goal: Enhance visual content in the newsletter by automatically extracting featured images.
  • Platforms Linked: Tumblr, Medium, X (formerly Twitter), YouTube
  • Live Preview: View the Monthly Newsletter – Current | May 2025

Day 12 Progress: #100DaysOfCode

  • I’ve refreshed my main open-source project on Source Forge
  • Project: Image Gallery Content Management System
  • Update: The web application has received a full revamp of the front-end display templates.

Day 13 Progress: #100DaysOfCode

Day 14 Progress: #100DaysOfCode

Steady Progress

  • I continued refining the CMS backend. Focused on optimizing the database queries and tweaking the admin dashboard layout. I also did some testing on content creation forms to make them more user-friendly. Small steps, but each one makes the system feel more polished.

Day 15 Progress: #100DaysOfCode

Debugging Mode Activated

  • Spent most of the session debugging a stubborn issue with image uploads. Turns out it was a path misconfiguration—classic. Added better error handling and logging to avoid similar issues down the line. Frustrating, but satisfying when it all finally worked!

Day 16 Progress: #100DaysOfCode

Code Cleanup + Planning

  • Did a cleanup pass across my codebase: removed unused functions, improved some variable names, and added comments where future-me will definitely thank present-me. Also spent time mapping out features for the next 10 days—feeling excited and more structured.

#100DaysOfCode Challenge — Day 17 Progress

✅ Completed Day 17!
💻 Hour(s) coded yesterday: 1
🚀 Key achievements: Implemented Fancy Progress Bar HTML by ChatGPT
📈 Overall progress: 17/100 days (17%)

Day 18 of #100DaysOfCode

Just 1 hour today, but made it count — polished auth flow, tweaked API docs, and drafted beta onboarding ideas. Prepping Influencer Meadow API for pre-release, one small step at a time. 🚀

💻 #100DaysOfCode – Day 19

Backend Infrastructure for GOA TRANCE Channel (Hybrid Setup) Project: RaveTheWorldRadio.com

I configured the backend infrastructure for the new GOA TRANCE channel on RaveTheWorldRadio.com - a hybrid radio station that doesn't rely on continuous streaming technology. My focus was purely on backend code, database structure, and UI logic without the need for a live stream.

💻 #100DaysOfCode - Day 20

New Page Published - I quietly launched a dedicated page for Goa Trance: 🌐 ravetheworldradio.com/Goa-Trance.html

🧪 Also tested improvements to my Photography CMS - now with better blog integration and a cleaner Open Graph card setup for nicer link previews.



💻 #100DaysOfCode – Day 21

I made critical updates to my custom CMS. The code is now ready - I just need to upload it to the server. 🛠️ Key improvement: I extended the database by adding a cover field, allowing items to have a designated cover image - just like how it works on my Spin Cover page: 🎧 luka.jagor.info/spinCover


💻 #100DaysOfCode – Day 22 – Adding RSS Feeds (Activities) to luka.international

Integrated RSS feed support into my luka.international CMS. As the site primarily links to content on .luka.jagor.info, I introduced dynamic RSS integration to make the homepage more engaging. The feed parser retrieves blog posts and updates, formats them for display, and includes fallback handling when the feed is unavailable. The result is a minimal yet more dynamic and informative landing experience.

Position: Numeric value indicating block order in the CMS layout, Image: true (displays an Open Graph preview image), Hidden: false (content is publicly visible)

💻 #100DaysOfCode - Day 23

I focused on improving both the look and functionality of my projects. Here's what I worked on:

✅ Redesign of Luka Jagor: 4 Developers

I gave my developer hub a cleaner and more structured layout. The goal was to make it more visually appealing and easier to navigate for both visitors and myself. Key improvements:

  • Simplified design for better readability and faster load times

  • Unified styling with the rest of my personal site

  • Better mobile responsiveness

  • Clearer section separation (e.g., CMS tools, widgets, and experiments)

✅ 7th Channel on Rave The World Radio - Radio Drama

I've officially set up the 7th channel on my radio platform! This new stream expands the Radio Drama section, giving listeners even more engaging audio content. It's a mix of experimental storytelling and AI-enhanced editing, keeping the vibe in sync with my other creative projects.

✅ Modified Daily Widget: "Yesterday - Debrief from the Day Before"

To add more value to my homepage and dev portal, I enhanced my Daily Widget:

  • It now displays activities from the past 24-48 hours

  • 🗓️ Headline updated to: "Yesterday: Debrief from the Day Before" – view it on luka.international

  • Helps me (and visitors) track recent updates or published content

  • Serves as a light changelog for public transparency and personal motivation

These small but meaningful changes are part of my long-term plan to make luka.jagor.info and ravetheworldradio.com smarter, cleaner, and more engaging-both for visitors and for me as a developer.

💻 #100DaysOfCode - Day 24

I focused on frontend template editing for my new site luka.international. I'm designing and preparing code for new content-driven pages, including:
  • 🖼️ Collections – A curated set of themes or works grouped together for easier browsing.

  • 🌟 Editorial Picks – A featured selection chosen by me, highlighting standout content.

  • 🔦 Spotlight – A special focus area for timely or standout projects, posts, or images.

This step is part of refining my CMS to make the user experience more engaging and structured. I’m working on layout consistency, visual hierarchy, and placeholder logic for upcoming dynamic content.

More updates soon as I wire these into the backend!

💻 #100DaysOfCode - Day 25

On Day 25 of the #100DaysOfCode challenge, I enhanced http://luka.international using Bootstrap’s list-group component for organized, responsive blog post and social media update lists. This improved user experience with a clean, interactive interface. Each list item, styled with list-group-item and list-group-item-action, includes a clickable link, 32x32px rounded thumbnail, bold h6 title, brief description (opacity-75), and timestamp (opacity-50). Bootstrap’s grid system (container, row, col-*) ensures responsiveness, adapting lists from full-width on mobile to multi-column on desktop.

💻 #100DaysOfCode - Day 26

For Day 26 of #100DaysOfCode, I transformed a static HTML page into a dynamic PHP one (now on https://www.ravetheworldradio.com/Audio-Theater.html). This allowed me to implement a pageview tracker using PHP and a database. Each visit now increments a counter, and the pageview count is displayed dynamically on the page. #100DaysOfCode

Future project - PHP Code: Increment views: UPDATE pageviews SET count = count + 1 WHERE page = 'Audio-Theater'. Currently, the MySQL code


  UPDATE pageviews SET count = count + 1 WHERE page = 'RavetheWorldRadio' 


increments views in a database but lacks distinct counting, tracking every page load, including refreshes and repeat visits.

💻 #100DaysOfCode - Day 27

I've enhanced the backend by implementing ADMIN_IP_VIRTUOUS_LIST for IP-based admin access and added password hashing for secure logins. The RSS admin interface now supports item management with fields like title, link, layout index, and visibility. I also created a clean, modern login UI. Remaining tasks include fixing the SQL ON UPDATE behavior for the Layout-Num field and adding an option to insert a custom row in the layout. Check out my cool video screencast!


💻 #100DaysOfCode - Day 28

Focused on improving the layout and performance of the luka.internacional blog portal. I styled each list group item so that the date now appears neatly on the left side, while a “Days Since” counter is displayed on the right. This creates a balanced and informative layout, helping users quickly see when each post was published and how recent it is.

I also addressed an issue with image optimization. Originally, the full-size images were being used even for small display areas, which is inefficient and slows down the site. To fix this, I adjusted the code to either use smaller, optimized versions of the images or resize them properly using CSS. This improves both loading speed and mobile performance. Overall, today's changes were all about enhancing visual clarity and making the blog more efficient and user-friendly.

💻 #100DaysOfCode - Day 29

The #100DaysOfCode challenge is a pledge to code daily for 100 days, often shared on X or GitHub to stay accountable and connect with others. By Day 29, you’re likely tackling intermediate projects, maybe in web development with HTML, CSS, and JavaScript, given your focus on minimizing iframes. Cutting back on iframes boosts site speed by reducing load times, easing server strain, and avoiding delays. They’re heavy on resources, pose security risks like XSS attacks, and can mess with SEO and accessibility. That’s why swapping them for lighter options like AJAX or native APIs makes sense for cleaner, faster web projects.

#100DaysOfCode - Day 30

On Day 30, I’m elevating luka.international with vibrant front-end enhancements and user reviews to boost engagement. Using HTML, CSS, and JavaScript, I’ve integrated dynamic review displays, ensuring a responsive, visually appealing design. The site’s Lighthouse reports highlight JavaScript dependencies, guiding my optimization efforts for performance and accessibility. This milestone showcases my growing expertise in web development, tackling real-time content integration and user experience. By refining luka.international, I’m sharpening my technical skills and building a professional portfolio piece. Follow my journey as I make this platform shine! 



Whew, it's been a busy week! I'm catching up and filing updates for #100DaysOfCode – Days 31 to 34 a bit late

✅ #100DaysOfCode – Day 31

Started the week by refactoring my CMS file structure. Extracted shared logic into include files and introduced a central config to handle base settings and functions. It’s already making each module easier to maintain. Clean code = happy brain. 🧹

✅ #100DaysOfCode – Day 32

Built a dynamic stats counter using PHP and MySQL. Visitors and image views now increment in real time, with values fetched and formatted via reusable functions. Bootstrap cards make the stats feel visually organized. Also introduced basic logging to track user interactions.

✅ #100DaysOfCode – Day 33

Shifted focus to the big picture today—exploring a schematic web structure for the entire CMS. I began outlining how to merge my 3 live CMS instances (blog, gallery, and stats) under one unified architecture.
Mapped out reusable components, isolated shared logic, and started envisioning how routing and templates will work across modules.

✅ #100DaysOfCode – Day 34

Refined the mobile layout based on schematic insights. Wrapped content in .container, cleaned up paddings and margins, and tested breakpoints to ensure Bootstrap responsiveness across devices.
Also sketched out a modular front-end layout strategy, where each CMS section can share the same design skeleton without feeling forced.

✅ #100DaysOfCode – Day 35

Enhanced visual dynamics by randomizing Bootstrap card border colors using a PHP array. Small touch, big impact!
This visual detail also doubled as a test case for my new modular design logic—showing that I can add expressive elements without bloating the backend.

It’s still early, but I can already see how this visual modularity will pay off later.

✅ #100DaysOfCode – Day 36

🚀 Introduced a major upgrade: a brand-new Class Controller. This object-oriented PHP class now powers parts of the CMS, including the stats display at Stats.html.

The controller handles:

  • Database connection and querying

  • View logic for displaying counters

  • Reusability for future modules (like user dashboards or analytics)

This marks the first true step toward decoupling logic from templates. It also opens the door to controller-based routing and more robust MVC practices in the future — concepts I had no real experience with as a procedural programmer. I can already see how this shift to class-based logic will futureproof the CMS.

Comments

Luka Jagor 🏃‍♂️

Latest Runs