Skip to main content
AR.LABSADVANCED RESEARCH LABORATORY
< All writing
← Back to Writing
ai-engineeringbuilding-in-public

What 2 Years of Self-taught AI Engineering actually looks like

Richard M. Thompson · 14 Nov 2025 · 14 min read

Illustration of a man at a workbench assembling a glowing device, surrounded by phones, screens and plans

I have the logs, the version numbers, the line counts, the dead ends and the breakthroughs. This is what 2 years of self-taught AI engineering actually looks like.

A year ago I published an article about a "One Year Syllabus For Learning Software and AI Development 'MSC'." That was after I'd already been studying a year, and it's with no small amount of embarrassment that I confess: another year has passed and I'm still working on some of the intended deliverables.

I write this confession to -firstly - absolve myself of the guilt involved in taking an extra year in this endeavour, and still not having completed it 'to my satisfaction,' and -secondly - to summarize what I have actually done, what skills and lessons I've learned, to help myself feel a bit better about it all.

The Numbers to Date

  • Timeline: Oct 16, 2023 - Nov 2025 (24 months)

  • Websites Visited: 25,000+

  • Hours spent: 2,500

  • Projects: 8 — (1 x Python, 2 x Android, 3 x Web, 2 x Context Engineering)

  • Code: 7+ active repositories, 80+ commits

  • Growth: 3 commits (Year 1) → 77+ commits (Year 2) = 25x

  • Output: 10 blog posts

  • Version: VoxPlan x 3 versions (Python, Android, Web), Vox Manifestor / Coherence: Android

The Plan vs. The Reality

I did my best when I started this to map out a coherent and complete syllabus for the following year. You can find that article here. It was ambitious, including study topics, modules and initial proposed timelines.

What ended up happening was, unsurprisingly, climbing into and then out of various rabbit holes of content. I realized very quickly that the field of Software Development and AI Engineering is incomprehensibly complex and vast, and at the moment, continually evolving, growing and changing.

So any initial syllabus was bound to have to evolve, especially without a strict set of boundaries supplied by a governing organization. I thought that having obtained a First Class Honours BSc. in Cognitive Science would give me a leg up (which it probably did). It gave me a starting set of skills that others in my position would lack, but ultimately, I still had to go back to the drawing board and start my learning essentially from scratch.

How I Analyzed the Last 2 Years

Luckily, I kept fairly comprehensive learning logs. I was able to analyze these, as well as my entire GitHub history and Browser History. I used Claude Code to summarize these logs and gather statistics on web pages visited, and obtained the above stats, and some very useful timeline-based summaries, to form the backbone of this analysis.

A Retrospective Syllabus (after the fact)

Here’s what the syllabus actually looked like.

4 Months (Oct '23 - Jan '24): Foundations

4 Months (Feb - May '24): Expansion

4 Months (Jun - Oct ‘24): App Building Deep Dive #1 (Kotlin/Android)

  • Kotlin Deep Dive: Porting VoxPlan to Android and building full-featured Task Management App

  • Hierarchical Goal Representation and Navigation with Breadcrumbs

  • Gamification Experimentation: Focus Mode and Time-Banking / Task Logging

  • Github Version Management

7 Months (Nov ‘24 - May ‘25): Voice Conversation Agent Deep Dive (Kotlin/Android)

2 More Months !! (June ‘25 - July ‘25): “Pivot & Double Down” on Android App

3 Months (Aug ‘25 - Oct ‘25): Production & Consulting

  • Introduction to Full-stack Development (Docker, JavaScript, React + FastAPI)

  • Claude Code & Sophisticated Context Engineering / PRP & Agentic frameworks and methodology

  • My first experience of a Front-End Development Sprint: The AR Automation Website

  • Agentic Workflow Design with LangChain and LangGraph

  • Vibe Coding (Replit): Vox Plan Web & Task Manager Web

  • Claude Code Research Bot: A context-engineering system to produce deep research in-terminal

  • Building-in-public Bot: Claude-facilitated framework to help me organise my thoughts on my portfolio and how to present it in an easily digestible way

What I actually Built

As I summarize and link through to everything I’ve done over the last 2 years, I become aware of a tendency I’ve had, that I think reflects a wider pattern in my life:

I’m good at starting things, but haven’t been so great at finishing them.

Forming a coherent ending for the various modules and software projects, it seems, was challenging in the absence of a coherent education framework that’s curated by experts, i.e. a supervised Master’s Course.

If there were any failures over the last two years, I would say they were all in the same category…

My inability to bring an experimental project to a definite conclusion, and tell the world about what I’ve done (in a formal setting this would be a written report perhaps, or a final documentation that would be graded).

Well, it’s not over til the fat lady sings, and there’s still time for me to bring these projects to their rightful conclusions.

That’s a task for later though. For now, let’s look at some of those incomplete projects. My plan is, over the next month (before year end 2025!) to bring these projects to a suitable release version, and either leave them to the winds of time (and the AI spiders of the internet), or plan their next incarnation, and make it public!

VoxPlan Desktop → v0.2.3

Sep 2023 → Jan 2024

Screenshot of Python and Kivy-based VoxPlan Desktop Visually representing a hierarchical goal tree and command line interface (CLI)

Screenshot of Python and Kivy-based VoxPlan Desktop, Visually representing a hierarchical goal tree and command line interface (CLI)

What is it?

VoxPlan v.0.2.3 is a minimal hierarchical goal management system written in Python with the Kivy GUI Library, that uses artifical speech-to-text and includes the option to use either built-in command-line or keyboard shortcut navigation and control.

What I learned

  • Python is relatively easy language to learn, understand and write

  • How to set up a Python development environment with pyenv and uv

  • Python isn’t good for UI, or Voice UI!

Todo:

  • Write documentation for the use of the app and make available on Github for those interested in the Kivy library and / or hierarchical data structures in Python.

This was largely an initial foray into learning Python and as such, it was successful. I went down a rather strange rabbit-hole with the Kivy framework, trying to fit a square peg (Python) into a round hole (Front End Desktop GUI).

But I wasn’t to know this at the time. The underlying process of building this app was useful to build my basic Python understanding, and to see and feel the shortcomings of trying to use Python for UI. It’s just not what it’s designed for.

The Vision That Came to Pass 😂

Winged figures made of data flying among clouds in a bright blue sky

Going back over this repo, I found a feature wishlist in the README. At the time, I thought I was planning for this one Python-based app. Turns out this ended up being a fairly decent roadmap of what I ended up producing over the next two years.

In my mind, it made perfect sense. You’d map out your goals in beautiful visual node tree, schedule focused work sessions, set priorities and time-maps, bank time against those goals, and have an AI coach to help refine the goals, manage the work sessions and the overall diary implementation.

What I envisioned:

  • Hierarchical goal visualization with voice/keyboard navigation

  • Focus mode with countdown timers

  • Time banking that visualizes effort spent

  • Gamified achievements

  • AI-powered journaling and coaching, elaboration of goals

The vision was right but the timeline and architecture were completely wrong.

What actually happened:

  • VoxPlan Desktop (v0.2.3): Achieved the node visualization and navigation, to a very rudimentary degree. Later with VoxPlan Web, this was implemented much better.

  • VoxPlanApp Android (v2.3): Built the focus mode, time banking, and gamification

  • Coherence/VoxManifestor (v2.2): Implemented the AI journaling and coaching

In the end I built three apps, each focusing on a subset of the original vision. Some features I attempted and abandoned (timetable templates, calendar integration). Others I never tried (AI-generated goal graphics, timetable sequencing).

The lesson: Apparently the process of learning is iterative. Who knew? And finding a fit between what you want to create and the underlying architecture matters immensely (🤯) and I’m still in the process of finding the correct architecture for my ideas.

VoxPlan Android → v2.3

June 2023 → January 2024

Two screenshots of VoxPlan Android: the goal tree on the main screen, and focus mode with a timer and time bank

What is it?

VoxPlan Android is a (Hierarchical 😁) Task-Organizing, Gamified Focus & Time Banking Android App

Some Stats

KEY STATISTICS:
- 51 Kotlin source files
- 8 ViewModels (6 feature + 2 shared)
- 4 Repositories
- 4 Database entities + 4 DAOs
- 6 Application screens
- 4 Bottom navigation tabs
- Max goal hierarchy depth: 3 levels
- 13 database migrations

The VoxPlan app was actually a significant piece of work. But again, because I didn’t really release and write documentation for it (tut, tut), I kind of forgot about all the work I’d put into it and just moved on.

What I learned

  • Knowing when to stop writing an app, it seems, is a learned skill (so is correctly scoping, designing and delivering a single-useable-feature and timeline, rather than simply starting something and continually adding features until you run out of steam!). I ended up delving into various rabbit-holes that never came to fruition with this one - a ‘dailies’ function for today-tasks and a scheduler that never got off the ground.

  • Writing an app in a vacuum is pointless (unless its just a hobby project, but in some ways even then) - people need to know it exists, be shown what it can do, and provided with the means to access it. Seems obvious but most things do in hindsight.

  • Don’t re-invent the wheel (I began - but then abandoned - writing a whole scheduling function from scratch. Now I’d probably just API into Google Calendar or something similar)

What still needs doing

  • Decide where to go from here with this app.

  • Tidy up codebase (remove additional features that aren’t finished - daily planning algorithms, calendar functionality)

  • Produce documentation and release to public as Open Source. My gift to the world. (I realize that a To-do app is the most common ‘first project’ and as such completely boring and useless to most people - but obviously I think mine is great)

Comments: This is a great, working app that I use daily. I had big plans for it but stopped at a certain point when I decided I wanted to take a different direction with Conversational AI. My initial plan was to incorporate Voice-First principles into this app, and that will probably still happen, just not in this incarnation of the app (i.e. probably in the Web version).

More Visions

A translucent display of connected goal nodes around a glowing centre, with a microphone icon

These were some other cool ideas I had for this app. Can you tell I spend a lot of time dreaming up new and “interesting” features for stuff?

  1. Augment the visual goal structures visually as 'metamorphoses' of the graphical goal node representations, according to how much time was spend and how many sub-goals were achieved.

  2. Have an LLM use goal-setting psychology to aid in elaboration and visualisation of the overall plan and individual elements, to create an ever clearer map of the problem space and manage its components. (NB: I did start doing this in Vox Manifestor - but then ‘hid’ this process in order to get the thing released)

  3. Use AI to sanity check the overall plan, suggest improvements and/or modifications to the sequence or elements; Auto clean up Task-lists; Maintain focus within goal tree, regularly check-in as to whether the plan is being followed.

Vox Manifestor / Coherence → v2.2.0

October 2024 → October 2025

Four screenshots of Coherence: a check-in conversation with the Genie, the conversation history, the Genie process panel, and the list of conversational themes

What: Voice-First Conversational AI App to Help Users Manifest Their Desires

→ Evolved (Devolved?) to become:

Coherence: “Assisted Voice Journalling that Summarizes Discussed Themes”

Technical Challenges:

  • Architecture:

    • Making a lot of data available on a small screen, with high usability and visual appeal.

    • Sophisticated prompt engineering for Conversational AI

    • Chaining listening, reasoning & strategizing and speaking together in a natural way given existing technological limitations.

    • Use of 10 coaching conversation strategies to question the user about their current challenges.

    • AI utilizes coaching psychology (present vs. desired states - not in Alpha Release version!)

What I learned

  • Developed the concepts behind conversational AI and the “Core-Loop” - the ongoing conversational interface that forms the backbone to a Voice-First Application.

  • My ability to envision the end-state of a piece of software is far beyond the amount of time I have to produce that level of complexity

  • Build in public! Again, don’t build in a vacuum. Creating one focused feature that works well and have people start using it.

  • Getting over perfectionism

  • Conversational agent structure: I hand-coded the agent, it’s conversational abilities / prompts, its ability to use tools.

  • Constructing a Voice-first interface / pipeline and the challenges it entails.

  • Deep Work looks like disappearing - I spent 7 months basically shutting out the world

The actual number of features available in the release version of this app is only a fraction of the number of features I actually coded. There are many features hidden away under the hood of this app, that I’m hoping over time will eventually see the light of day. (I’ll write another article about this later).

If I started off with a more focused brief, I could have produced what is now the "first release version” in a third of the time I actually spent. Lesson learned!

We still need to talk about that other thing…

As comprehensive as you might think this article is, we’ve still got some stuff to talk about…. Not least of all…

  • My AI Tooling journey, and initial foray into Vibe Coding front-end interfaces for the web…

  • The dead ends and unpublished features…. The regrets… The heartbreaks… (Ok, we don’t need to talk about them, but the other stuff, we should… ;)

  • Lessons from my future self. So many lessons (well, that was the point, wasn’t it??)

But for now I hope I’ve provided a mildly interesting look at the main blocks of work that consumed my time over the last few years studying Software Development and AI Engineering!

This is the story: 2 years, 8 projects, 2,500 hours, and still figuring it out.

If you're on a similar journey - teaching yourself AI engineering, pivoting careers, building in public - or a completely different one… I'd love to hear from you.

The receipts are real and the process continues….

Originally published on Hashnode on 14 November 2025.