Okay, so today I’m gonna walk you through my adventure with something I messed around with called ‘craig jone’. It’s not really a thing, more like a personal project I cooked up. Let’s dive right in.

The Idea Sparked
It all started when I was trying to find a better way to organize my thoughts. I always had a ton of random notes scattered everywhere, from sticky notes to text files. I needed a single place to dump everything and make sense of it later. That’s when the idea for ‘craig jone’ popped into my head – a personal knowledge management system, if you want to get fancy.
Getting My Hands Dirty
First things first, I had to decide on a tech stack. I figured, why not use something I’m already pretty familiar with? So, I went with Python and Flask for the backend, and plain ol’ HTML, CSS, and JavaScript for the frontend. I know, super basic, but hey, it gets the job done!
I started by setting up a basic Flask app. Just a simple route that would render a blank HTML page. Then, I began working on the data model. I wanted to be able to store notes with titles, content, and tags. I opted for SQLite as my database since it’s lightweight and easy to set up. Created the database schema, defined my models using SQLAlchemy, and moved on.
Building the Core Features
Next up, I tackled the core features: creating, reading, updating, and deleting notes (CRUD). I wrote the Flask routes for each of these actions, created the corresponding HTML forms, and wired everything up with JavaScript. It was a bit tedious, but seeing the notes appear in my browser after creating them was pretty satisfying.
- Creating Notes: A simple form with title, content, and tags fields.
- Reading Notes: Displaying the notes with a link to edit or delete.
- Updating Notes: Pre-filling the form with existing data for easy modification.
- Deleting Notes: Added a confirmation dialog to prevent accidental deletions.
Adding Some Spice
With the basic CRUD operations in place, I wanted to add some extra features to make ‘craig jone’ more useful. Here’s what I came up with:
- Tagging: Implemented a tagging system to categorize notes. Users can add multiple tags to each note and filter notes by tag.
- Search: Added a search bar to quickly find notes based on keywords in the title or content.
- Markdown Support: Integrated a Markdown parser to allow users to format their notes with Markdown syntax.
Implementing the tagging system was a bit tricky. I had to create a many-to-many relationship between notes and tags in the database. But after a bit of tinkering, I got it working. The search feature was relatively straightforward using SQLAlchemy’s like
operator. And integrating Markdown support was as easy as using a Python library like markdown
.
The Final Touches
Once all the features were in place, I spent some time polishing the UI. I added some CSS to make the app look a little less hideous. I also improved the JavaScript code to handle form submissions and display messages more gracefully.
After what felt like forever, ‘craig jone’ was finally in a usable state. It wasn’t perfect, but it was good enough for my needs. I started using it to store all my notes, ideas, and random thoughts. And surprisingly, it helped me stay organized and be more productive.

Lessons Learned
This little project taught me a few valuable lessons:
- Keep it Simple: Start with the core features and add complexity later.
- Don’t Reinvent the Wheel: Use existing libraries and frameworks whenever possible.
- Iterate and Refactor: Don’t be afraid to change your code as you learn more.
Overall, building ‘craig jone’ was a fun and rewarding experience. It helped me solidify my skills in Python, Flask, and web development. And it gave me a tool that I actually use every day. Who knows, maybe one day I’ll turn it into a real product.