Motiejus Jakštys Public Record

Demos and Llms

2026-11-03

With LLMs getting cheaper and better by the day, it takes only a fraction of time and effort to build great-looking stuff. Over the last few months I built a couple. It’s really cool and sometimes sad. Here is the run-through.

stagit-ng

stagit-ng screenshot

Announced in its own blog post. Before stagit-ng, llm-bot-scrapers were attacking my personal installation of gitea to endlessly render HTML of my personal projects’ git commits. I could not find a way to dissuade LLMs from doing so (as well as other good-meaning sites on the internet), so I ventured to replace gitea with fully static git repo hosting.

stagit-ng is a cool piece of software:

  • the work is done by the client.
  • server-side is super-lean – a super-lean http server.
  • there are no real limitations what the site can do compared to any other read-only git-repo web browsers.

It works flawlessly and I intend to keep running/maintaining it. I used LLMs to create it; without LLMs-as-tools I would not have bothered. However, if there were no LLMS, I would not have needed it in the first place and would have remained with gitea.

maps.jakstys.lt

stagit-ng screenshot

maps.jakstys.lt, besides displaying nearby coffee shops, is a pretty reasonable map. I said I would do it in 2023. I did in 2026, with notable additions:

  1. Answers the question “which parts of my neighborhood reach a point of interest within 5, 10, 20 minutes?” Implemented for coffee shops & restaurants, supermarkets and air raid shelters1.

  2. Once one downloads the ~300MiB pack, works fully offline. Especially useful when, during the air raid, the air-raid-shelter-website goes down due to everyone looking it up.

  3. Fast search – duration of the search query fits within a frame, i.e. ~10ms. All Lithuanian addresses take 6.7MiB: as of writing, 162,630 named entities and 1,051,601 doors, downloaded on page load. So the search is device-local and faster than rendering of its results.

  4. Full Lithuanian pedestrian route network is 4.8MiB2: as of writing, 902,911 vertices (“crossroads”) + 1,105,926 edges (“roads”). Once those are downloaded, search and routing generation are local – my closet-server does not calculate routes or fuzzy-matches addresses for you, your browser does. E.g. a cross-country wallk from Dieveniškės to Skuodas on my mid-range mini-pc:

    route 78h26m 395,97 km · 1386.36ms · rss 67.1MB arena 50.5MB · 1654986 settled in 2 passes · 2278 hops
    

    In 1.4s the router visited 1.6M nodes (in total, over 2 passes) and came up with a shortest distance, which consists of 2278 distinct edges (“roads”).

    The router is fast enough that we can afford “all cafes reachable by 20min walk” on every map click. E.g. when I click the Vilnius cathedral tower, it finds 535 cafes+restaurants within 20min walking range, search of which took 18ms:

    walkshed 20 min · 18.04ms · rss 23.8MB arena 0.4MB · 6849 settled · 535 rows
    

lt-maps-small

lt-maps-small screenshot

My friend challenged me for a Lithuanian road map that fits a floppy. I could not resist. After a few evenings of hacking the map has a full road network, rivers & lakes, rail and admin boundaries.

Then for the fun of it I included a small kernel, so the floppy can boot directly from BIOS on a Pentium II (266MHz) with 32MiB RAM. Also, an .exe that runs natively on Windows 95 (I tried an emulator) and a html+wasm preview for the web browser. I am yet to try this on an actual old machine though.

Link to repo.

Candle-ish lights

myself and 2 kids soldering

I am building 8 cases for the 32140 15Ah LiFePO4 batteries, which will connect LED “candle-lights”. Those will be used in an Advent wreath.

myself and 2 kids soldering

Making the cases has been a social activity all throughout:

  1. The cases are made of linden tree; I found and ask a local to carve and paint 8 pieces of wood, case-shaped.
  2. I found a woodworking shed, drilled the holes for the fuse on each case. Learned how to use the vertical drilling machine. My son helped me out.
  3. Kept consulting a local electronics repair technician on the best approaches to put all of it together. I improved my soldering skills dramatically.
  4. Lots of trial & error. Some parts were done with kids, some – with friends.

The project is nearly done and brought me lots of joy.

The sad part

When I did something cool on the internet the previous time, the community was super helpful. In the spirit of open-source, derived work happened3.

With LLMs, there is no longer any point to share, because generating code is cheap. Since there is no point to share, there is little point to tell about it. Why did I write about the projects above? So it’s somewhere. Also, out of habit.

Therefore, finishing a project with LLMs feels like eating a cake solo. Not only it’s unhealthy, it’s not-fun and wrong — cakes are meant to be eaten with others in celebration, just like Open Source was meant to be created, shared and enjoyed together. The world is very different now.


  1. From official air-raid-shelter sources. ↩︎

  2. A*, Dijkstra and Reverse Dijkstra. All are used in this map for different purposes, all fed from the same graph. ↩︎

  3. Guix now packages Zig. ↩︎