10 Small Python Ideas That Made Me Think Like a Developer

small Python project ideas - My Code Diary

10 Small Python Ideas That Made Me Think Like a Developer

I used to think becoming a “real developer” meant building something massive. A full-stack app. A machine learning model that could predict the stock market. Something that would impress people at a dinner party.

Turns out, I was wrong.

The projects that actually changed how I think were small. Embarrassingly small. But each one quietly rewired something in my brain. Not just about Python, its about how to see problems.

Here are 10 small Python ideas that did that for me. Some took an afternoon. Some took a weekend. All of them taught me something I still use today.


1. A Script That Renames Your Files the Way You Actually Want

My downloads folder was a crime scene. Files named Untitled-3-final-FINAL-v2.pdf everywhere. I got tired of it.

So I wrote a script to rename files based on rules I defined date created, file type, keywords in the name. It sounds boring. It wasn’t. I had to learn about os, pathlib, and how Python sees your file system. I also had to think about edge cases: what if two files have the same name? What if a file has no extension?

That’s when it clicked. Programming is mostly thinking about what can go wrong.

from pathlib import Path
from datetime import datetime

folder = Path("downloads")

for file in folder.iterdir():
    if file.is_file():
        created = datetime.fromtimestamp(file.stat().st_ctime)
        new_name = f"{created.strftime('%Y-%m-%d')}_{file.name}"
        file.rename(folder / new_name)

2. A Script That Tracks How Much Time You Spend on Your Computer

Not a productivity app. Just a simple script that logs when your computer wakes up and when it goes to sleep, writing timestamps to a text file.

I used psutil to detect system activity and schedule to run a background check every minute. After a week of data, I had a rough picture of my habits. The real value wasn’t the data, it was understanding how to run Python continuously in the background without breaking anything.

Pro Tip: The schedule library in Python is criminally underused. It lets you run any function on a timer with one line of code. If you haven’t tried it, you’re missing out.


3. A Price Tracker for One Product You Actually Care About

Pick any product on any website. Write a script that checks the price every day and sends you an email when it drops.

I used requests and BeautifulSoup to grab the price, smtplib to send the email, and cron to schedule the daily check. It worked. I actually bought a hard drive at half price because of it.

More importantly, I learned that web scraping is less about code and more about reading HTML like a detective.

import requests
from bs4 import BeautifulSoup

url = "your-product-url-here"
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")

# Inspect the site and find the right selector
price = soup.select_one(".price-selector").text.strip()
print(f"Current price: {price}")

4. A Tool That Reads Your Bank Statement and Tells You Where Your Money Went

Most banks let you download your transactions as a CSV. That’s all you need.

Write a script that reads the CSV, groups spending by category (groceries, subscriptions, eating out), and prints a monthly summary. No fancy UI. Just Python and pandas.

The moment I ran this for the first time and saw how much I was spending on coffee shops, I felt a very specific kind of shame. But also, I finally understood groupby(). Worth it.


5. A Script That Summarizes Your Long Email Threads

Long email threads are the worst. Twenty replies, three different topics, and you still don’t know what was decided.

You can copy-paste a thread into a text file, send it to the OpenAI API with a simple prompt, and get a clean three-bullet summary in seconds.

import openai

with open("email_thread.txt", "r") as f:
    thread = f.read()

response = openai.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": f"Summarize this email thread in 3 bullet points:\n\n{thread}"}
    ]
)

print(response.choices[0].message.content)

This one felt like cheating the first time I used it. It wasn’t. It was just a tool doing its job.


6. A Random “What Should I Eat Tonight” Generator

This one sounds trivial. It is. That’s the point.

I had a list of 30 meals I actually like. I wrote a Python script that picks one randomly, then cross-checks my kitchen inventory (a text file I update manually) to see if I have the main ingredients.

The code was simple. But building it forced me to think about data structures. How do I store a meal? What are its properties? That’s when I started thinking like a developer instead of a scripter.


7. A Script That Finds Duplicate Photos on Your Hard Drive

I had four copies of the same family vacation photos scattered across three folders. Cleaning it manually would have taken hours.

A Python script using hashlib can fingerprint every image file and flag the duplicates in minutes. You don’t delete anything automatically, you just generate a report. Safer, smarter.

import hashlib
from pathlib import Path

def get_hash(filepath):
    with open(filepath, "rb") as f:
        return hashlib.md5(f.read()).hexdigest()

seen = {}
duplicates = []

for img in Path("photos").rglob("*.*"):
    h = get_hash(img)
    if h in seen:
        duplicates.append((seen[h], img))
    else:
        seen[h] = img

for original, duplicate in duplicates:
    print(f"Duplicate: {duplicate} (same as {original})")

The lesson here was about hashing, and more broadly, about the idea that you can represent anything as a fingerprint.


8. A Script That Sends You a Daily “Random Wikipedia Fact”

Every morning, this script hits the Wikipedia API, pulls a random article summary, and sends it to your phone via Telegram or email. That’s it.

It taught me APIs, HTTP requests, and how to parse JSON. It also gave me about 300 random facts I didn’t ask for. I now know more about 19th century Belgian canals than any reasonable person should.

The real lesson? Consuming an API is a skill. Once you know how to read API documentation, a whole world opens up.


9. A Markdown Journal That Auto-Organizes by Date

Not a journaling app. Just a Python script that creates a new .md file every time you run it, names it with today’s date, and opens it in your text editor. It also reads your last three entries and shows you a one-line summary at the top.

This taught me about file I/O, date formatting, and working with text. It also became part of my actual daily workflow, which is rare for a side project.

from pathlib import Path
from datetime import date
import subprocess

journal_dir = Path("journal")
journal_dir.mkdir(exist_ok=True)

today = date.today().isoformat()
entry = journal_dir / f"{today}.md"

if not entry.exists():
    entry.write_text(f"# {today}\n\n")

subprocess.run(["open", str(entry)])  # macOS; use 'xdg-open' on Linux

10. A Script That Tells You If a Website Is Down (or Just Your Internet)

Classic problem. You don’t know if a site is down for everyone or just for you.

A simple script sends a request to the site and simultaneously pings a reliable domain (like Google). If Google responds but the target site doesn’t, it’s their problem. If neither responds, check your router.

Simple logic. But building it forced me to understand how networking actually works at a basic level. And it felt useful the moment I ran it.


What These Projects Have in Common

None of them are on GitHub getting stars. None of them are in my portfolio.

But every single one taught me something that a tutorial couldn’t. Tutorials give you answers. Projects give you problems. And solving problems is the only way to actually get better.

“The best way to learn to code is to solve a problem you’re genuinely annoyed by.”  Every developer who ever got good at this.

Start with the problem. Write the simplest possible solution. Then figure out why it breaks.

That’s the whole game.

If you’re learning automation, check out my guide on Python APIs

9 Python API Experiments I Ran,  And the Results Surprised Me

3 Python APIs I Built Seemed Useless, Until I Used Them Daily

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top