HTML
I can structure pages with headings, sections, links, images, and forms.
40%learning
// skills.ts
The web development languages I actually practice have a progress bar. The longer list under that is in progress: I have not studied those enough to put a number on them.
HTML, CSS, JavaScript, PHP, Python, and C++ are the ones I use on real pages. The bar is where that practice sits today. I still build with them.
I can structure pages with headings, sections, links, images, and forms.
40%learning
I am learning layout, spacing, responsive pages, and careful visual styling.
34%learning
I can write small interactions such as menus, filters, and form feedback.
26%learning
These languages are on the list. I have not practiced them the way I practice the ones above, so they stay marked in progress and they do not get a bar.
On my list. I have not practiced it enough to put a number on it.
// 01 · labels
A progress bar means I practice that language. HTML, CSS, JavaScript, PHP, Python, and C++ are the only ones with a number. The number stays low on purpose. I can write a small example, I still look things up, and I still make mistakes.
In progress means the language is on the list and I have not measured it. TypeScript, Go, Rust, Java, and the rest of that grid do not get a percentage. A bar on a language I have barely opened would be a costume.
// skills.ts bar "I practice this" inProgress "no number yet" expert null
// 02 · frontend
HTML is the part I trust most. I can structure a page with headings, sections, links, images, and forms, and I care about the order a screen reader would hear. The pages on this site are written that way: one main column, a skip link, and buttons that say what they do.
CSS is where I spend the careful time. Layout, spacing, and a page that still works on a phone are the skills I am practicing. A wide monitor should not stretch the writing from edge to edge, and a narrow phone should not clip a word. The centered column and the sticky navbar are that practice, not a template I pasted and forgot.
JavaScript stays small on purpose. Menus, filters, theme switching, and form feedback are the interactions I can explain. I do not reach for a framework just to show a list. If a filter on the projects page updates the cards, that script is there because the page needed it.
// 03 · php
PHP is how this portfolio renders. A request hits a front controller, a route picks a page, and a view prints HTML. I am learning that flow by maintaining it: settings come from the database, projects come from a table, and a missing page returns a real 404.
MySQL is the memory. Contact messages, project rows, and blog posts are stored with PDO and prepared statements. I do not build SQL by gluing raw input into a string. That is one of the habits I want in place while I am still a beginner, because it is easier to learn the safe version first.
The admin area is part of the same lesson. I can sign in, upload a project with a cover image, and see that card on the public projects page. There is no public registration. The password is hashed. A form that changes data carries a token. Those are beginner implementations of ideas I want to keep.
// 04 · exploring
Node.js is the idea that JavaScript can run outside the browser. I know that sentence. I am only getting started with what it means for a real project. This site is plain PHP. Nothing on the public site depends on a Node server, and there is no framework behind the pages.
// 05 · languages
Python is basic syntax: variables, conditions, and small programs. I like it as a second way to think about the same ideas I meet in JavaScript. It is not a data-science stack, and I do not have a Python product to show.
C++ is the slower practice. Variables, conditions, loops, and simple programs. The language asks me to be precise, which is useful even when the program is tiny. C# is newer than that. I have started learning how a basic program is organized, and the card stays on Exploring until I can show more than a start.
// 06 · other
I am curious about the ideas and the vocabulary. The skill card says Exploring because that is the truth. I am not training models, I am not shipping an AI product, and a chat tool on a page would not make this a research portfolio.
If I study a concept well enough to explain it in a note, it belongs on the blog as a learning note, with the same honesty rule as everything else. Curiosity is allowed. A fake specialty is not.
// 07 · loop
One tag, one property, one function. I copy the idea into my own file instead of collecting bookmarks.
Change a value until the page fails. Then put it back. That is how I learn what the line was doing.
If I practice it, it gets a low progress bar. If I have only put it on the list, it stays in progress with no number.