// skills.ts

Web development skills I am learning

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.

// learningLanguages I practice

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.

Beginner

HTML

I can structure pages with headings, sections, links, images, and forms.

40%learning

Beginner

CSS

I am learning layout, spacing, responsive pages, and careful visual styling.

34%learning

Beginner

JavaScript

I can write small interactions such as menus, filters, and form feedback.

26%learning

Beginner

PHP

I am learning how PHP renders pages, reads forms, and talks to MySQL.

22%learning

Beginner

Python

I am learning basic syntax, variables, conditions, and small programs.

18%learning

Beginner

C++

I am studying variables, conditions, loops, and simple programs.

14%learning

// in progressNot measured yet

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.

In progress

TypeScript

On my list. I have not practiced it enough to put a number on it.

In progress

SQL

I use simple queries with PHP. I am not treating SQL as a measured skill yet.

In progress

Node.js

I know JavaScript can run outside the browser. I have not measured that yet.

In progress

Java

On my list. I have not studied it enough for a progress bar.

In progress

C#

I have opened the language. It stays in progress until I can show more than a start.

In progress

Go

On my list. I have not practiced it enough to put a number on it.

In progress

Rust

On my list. I have not practiced it enough to put a number on it.

In progress

Kotlin

On my list. I have not practiced it enough to put a number on it.

In progress

Swift

On my list. I have not practiced it enough to put a number on it.

In progress

Ruby

On my list. I have not practiced it enough to put a number on it.

In progress

Dart

On my list. I have not practiced it enough to put a number on it.

In progress

Lua

On my list. I have not practiced it enough to put a number on it.

In progress

R

On my list. I have not practiced it enough to put a number on it.

In progress

Scala

On my list. I have not practiced it enough to put a number on it.

In progress

Haskell

On my list. I have not practiced it enough to put a number on it.

In progress

Bash

I can run a few commands. Not enough to draw a bar.

In progress

Perl

On my list. I have not practiced it enough to put a number on it.

In progress

Elixir

On my list. I have not practiced it enough to put a number on it.

In progress

Zig

On my list. I have not practiced it enough to put a number on it.

In progress

Artificial Intelligence

I am curious about the ideas and the vocabulary. I am not building AI products.

// 01 · labels

How to read a bar and an in-progress card.

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, CSS, and JavaScript.

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 and MySQL, still at the beginning.

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 opened, not finished.

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, C++, and C#.

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

Artificial intelligence, as a subject.

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

The practice loop I actually use.

read
Read a small piece

One tag, one property, one function. I copy the idea into my own file instead of collecting bookmarks.

break
Break it on purpose

Change a value until the page fails. Then put it back. That is how I learn what the line was doing.

name
Name the level honestly

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.