About Me

I like figuring things out.

That has taken me through more than a decade in social services and development work, a Master’s Degree in Social Services, and eventually into programming. I started teaching myself Python in 2019, completed Data Science and Full Stack studies, and am now a third-year Information Technology Engineering student at Savonia University of Applied Sciences.

Programming appeals to me because it rewards curiosity and clear thinking. I enjoy taking messy problems apart, understanding what actually matters, and building things that are useful without being more complicated than they need to be.

My earlier career also means I tend to think about the person on the other side of the software. Systems have users, organisations and awkward real-world constraints. Knowing the technical answer is useful; knowing whether it solves the actual problem is better.

You can find what I’m currently building on Github

Arttu Heinilä

Projects

I like building small, practical tools that solve real problems in my own work, learning, or everyday life. My current focus is Python, full-stack web development, CLI tools, local-first workflows, and simple systems that remain useful after the initial novelty has worn off.

Featured

tgpt — Terminal-first AI assistant and local mini-wiki

Status: Current personal tool and portfolio project

tgpt analyzing a pytest import error from piped input
Piped pytest output analyzed with debug mode.
tgpt searching and displaying saved Markdown notes
Saved Markdown notes searched from the terminal.

tgpt is a Python CLI tool for using OpenAI from the terminal. It supports interactive chat, configurable prompt modes, one-shot analysis of piped input, local JSONL session history, and curated Markdown notes.

The goal was to build a practical tool for my own workflow: ask quick questions, review logs or diffs from the terminal, and save useful answers into a local, searchable mini-wiki.

Key features

  • Interactive terminal chat
  • Prompt modes for debugging, review, rewriting, and concise answers
  • Piped input support for logs, diffs, and text files
  • Safe truncation for large input
  • Optional --no-save mode for sensitive requests
  • Local JSONL transcripts and Markdown notes
  • Note search and explicit note reuse as context

Technical highlights

  • Python CLI architecture split into focused modules
  • TOML configuration with validation
  • Local-first storage model
  • Pytest coverage for parsing, configuration, storage, message building, and truncation
GitHub repository

Python, CLI, OpenAI API, pytest, TOML, JSONL, Markdown

Must (To) Do Today! — Full-stack task management app

Status: Earlier full-stack portfolio project

Screenshot of the task management application

A full-stack task app focused on daily task selection and simple prioritization. Users can register, log in, create tasks, mark them complete, and star important tasks so they remain visible.

Key features

  • User registration and login
  • Password hashing with bcrypt
  • Add, delete, complete, and prioritize tasks
  • Responsive React frontend
  • PostgreSQL-backed persistence

What I learned

  • Structuring an application across frontend, backend, and database
  • Building REST API endpoints for users and tasks
  • Implementing authentication and password hashing
  • Deploying frontend and backend services separately
Live site
Frontend repository
Backend repository

React, Node.js, Express, PostgreSQL, bcrypt

Client Work

Website for a wellness entrepreneur

Status: Delivered client project

Screenshot of the wellness entrepreneur's website

A responsive website for a wellness entrepreneur, built with HTML, CSS, and JavaScript. The work included layout, visual design, responsive navigation, content structure, and a contact form aligned with the client's brand.

Live site

HTML, CSS, JavaScript, responsive design, forms, client work

Earlier Projects

Netflix Sleep Timer Browser Extension

Screenshot of the Netflix Sleep Timer extension

A Firefox extension built to solve a practical family problem: limiting Netflix playback without needing to monitor episode endings manually.

Features

  • Close the window at the end of an episode
  • Pause playback after a user-defined time
  • Close the window after a user-defined time
Firefox extension
GitHub repository

HTML, CSS, JavaScript, Firefox Extension APIs

Monte Carlo Retirement Calculator

Retirement simulation results and chart

A Python simulation tool for estimating retirement portfolio outcomes using historical stock and bond returns.

The user can set the portfolio type, starting capital, annual withdrawals, retirement-length assumptions, and number of simulations. The program estimates the probability of running out of money and visualizes selected results.

GitHub repository

Python, file handling, simulation logic, matplotlib

Pomodoro Work Timer GUI

Pomodoro timer start screen

A Python GUI timer for Pomodoro-style work sessions. The application alternates between work and break intervals, tracks completed sessions, and logs work history to a local file.

GitHub repository

Python, GUI programming, local file handling

Quick and Dead Single-page Application

Quick and Dead application landing view Generated Quick and Dead exercise

A small JavaScript application for generating randomized kettlebell workouts based on the Quick and Dead training protocol.

Live site
GitHub repository

HTML, CSS, JavaScript, responsive design

Technical Skills

Other Skills

Languages

Contact Me

I am interested in junior software development roles, especially where practical problem-solving, backend development, full-stack work, tooling, or user-focused systems matter.