HN user

apwheele

1,548 karma

Data scientist. Former academic in criminal justice field.

Personal blog at https://andrewpwheeler.com/

Consulting at https://crimede-coder.com/

Large Language Models for Mortals: A Practical Guide for Analysts (book), https://crimede-coder.com/blogposts/2026/LLMsForMortals

Posts168
Comments191
View on HN
twitter.com 6d ago

You cannot copyright AI generated material in the US

apwheele
4pts1
crimede-coder.com 6d ago

Filtering Secrets from Coding Agents with a Hook

apwheele
2pts0
govintegrity.substack.com 7d ago

The Death of Documentary Evidence

apwheele
4pts0
gmcirco.github.io 16d ago

Structured Data Extraction Using Local Models (NuExtract3)

apwheele
2pts0
www.nlrbedge.com 19d ago

Union Busters Coming After Me: The Fred Hutch Website Saga

apwheele
4pts0
andrewpwheeler.com 29d ago

AI writing is better than no writing

apwheele
2pts1
www.peterbaumgartner.com 1mo ago

Evaluate Your Agentic Tooling

apwheele
4pts0
gmcirco.github.io 1mo ago

How Confident Are AI Classifiers About Their Own Confidence?

apwheele
6pts1
andrewpwheeler.com 1mo ago

Using Claude Code to help me write

apwheele
3pts0
blog.spotcrime.com 1mo ago

Take Action: LAPD Removed Crime Location Data. Here's Why It Matters

apwheele
28pts16
rosmine.ai 2mo ago

Was my $48K GPU server worth it?

apwheele
571pts449
jasonhunyar.substack.com 2mo ago

The Link Between Flock Safety, Dunwoody, and Attorney General Chris Carr

apwheele
2pts0
www.urban.org 2mo ago

Chatbots struggle to understand open gov data sources

apwheele
4pts0
www.crimrxiv.com 2mo ago

A Good College Essay but a Bad Police Report: A triple blind study

apwheele
1pts0
andrewpwheeler.com 2mo ago

Using the xAI voice cloning API

apwheele
1pts0
x.ai 2mo ago

Voice Cloning on xAI

apwheele
2pts0
andrewpwheeler.com 2mo ago

Pangram Is Good

apwheele
2pts0
tedalcorn.github.io 2mo ago

Below the Fold: Dashboard of NY Times Coverage 2000-26

apwheele
4pts0
andrewpwheeler.com 2mo ago

LinkedIn Premium Does Not Boost Your Posts

apwheele
4pts0
nibrsai.com 2mo ago

Crime Data Assistant: Chat assistant to answer crime questions with real data

apwheele
1pts0
andrewpwheeler.com 3mo ago

The race to the bottom with AI tools

apwheele
4pts1
www.nature.com 3mo ago

Datahugging shields proprietary AI models from research that could disprove them

apwheele
3pts0
www.aaupnc.org 3mo ago

AAUP does not want you to share your syllabus

apwheele
3pts0
eighteenthelephant.com 3mo ago

Online courses, supply and demand, and academic integrity

apwheele
3pts1
github.com 3mo ago

Nb – Notebook CLI designed for both humans and AI agents

apwheele
3pts0
andrewpwheeler.com 4mo ago

Stop Teaching R. Teach Python.

apwheele
3pts0
andrewpwheeler.com 4mo ago

Using Claude Code to help me write

apwheele
2pts0
crimede-coder.com 4mo ago

Using local LLM models vs. APIs

apwheele
1pts0
andrewpwheeler.com 4mo ago

Some notes on the unreliability of LLM APIs

apwheele
3pts0
github.com 4mo ago

GLiNER2: Unified Schema-Based Information Extraction

apwheele
61pts14

If you look at the raster image ChatGPT generated, that is fine. It is just this example (and other simple SVG icons I have asked for) result in pretty bad SVGs. It just makes me highly suspicious that the LLMs are learning shape primitives and extrapolating to new shapes, vs just having a big dictionary of prior examples and stitching them together.

So this is not my experience at all for asking about simple SVG icons for web-pages. Here is one of the examples I have tried for in the past, make a simple cartoon SVG knife for a map icon for a crime map.

https://x.com/CrimeDecoder/status/2080008114615537766

Can see the images for ChatGPT/Claude (Sonnet 5), and Gemini are all quite bad.

Jagged edge of LLMs. How do you explain being able to generate very complicated shapes in the Pelican example but cannot make a much simpler icon without just alluding to it is in the training data?

Not an open source, but I discuss it in my book with examples for OpenAI/Anthropic/Gemini, https://crimede-coder.com/blogposts/2026/LLMsForMortals.

All of the models, you need to have a consistent input to get the cache hit. So if you are chatting with a document, and change the system prompt, it will be a cache miss, even if the rest of the items are all the same. If you even pass in the document in not the same order as the prompts, it will be a cache miss. Or if you add tool calls or structured outputs, it will be a cache miss. (Since those generally go at the beginning of the prompt call, not at the end.)

Most of the time when reading documents from URLs directly it will never cache. (Need to typically pass in the bytes directly, or use the provider document store index.)

Gemini has a 4096 minimum token size with the 3 version models before even getting a cache hit. OpenAI it is lower (1024), and is automatic, but only happens in increments of 124. Anthropic can also get cache hits at 1024 tokens, but you need to explicit ask for it (and pay extra).

Caching by default typically lives for 5 minutes since the last cache hit across providers. But some of them you can ask for longer. AWS for Anthropic models can be tricky with multiple endpoint routing, so can get cache misses if it happens to route to a different endpoint.

Just as even a counterpoint to this, I have asked the LLMs to attempt to generate SVG icons for websites. Even though I have requested things much simpler than a Pelican, they have all tended to do quite poorly in my examples.

Because of this, I presume the Pelican has been in the training data for at least a year+.

The models are very useful, I am afraid they have fundamental limitations though generalizing (it is just hard to evaluate effectively). So it will just be whack-a-mole "can your model do X", and there will always be a new X.

Processing 500 retrieved chunks here (probably with an additional LLM) will also add a bit of latency (not shown in these graphs!).

So for user facing apps, that scenario is probably not feasible (more like filter 10 chunks). Which as the parent of this comment suggests is fine to add in extra context given the current size of context windows.

If I may shamelessly suggest my own book for those looking for a more basic intro to calling the APIs, including a chapter devoted to agentic patterns across the different SDKs (openai, claude, and google), https://crimede-coder.com/blogposts/2026/LLMsForMortals.

Basically I wanted to write a book that did not spend the majority of time on training LLM and architecture, as it is just not relevant to the majority of software engineers (either using agent coding tools to help write code, or using the LLM APIs as backend parts of apps you are building).

This Hitchhikers book has many examples of API use as well, but is very "here is a wall of code". Mine is a bit more gentle progressively building up simple examples -- e.g. I show how to write python code to call a tool in a loop. Then show how you can feed back the error and have the LLM update. Then show how you can do that without manually looping through the agents SDK.

Off topic, but Simon's Pelican on a bike SVG makes me think they are using that is the current models. I ask for much simpler SVG icons periodically (to insert into webpages, map icons, chart icons, etc.) and all of the models tend to do poorly in my experience.

Most recent example was a V to look like a checkmark. Seemingly much simpler than a pelican riding a bike, but Claude/ChatGPT/Google all did quite poorly.

CursorBench 3.1 20 days ago

I read these and think it is just the jagged edge. I do not doubt your personal experience, I have used Composer 2.5 (via Grok and the credits I get with my X premium account) the past month.

I am not building rockets, but have been quite impressed. All the models do dumb things sometimes, it has done the work I have asked it to pretty well though and has done to me some impressive work.

It is fast on Grok, for other models I have worked extensively with I think it is better than gemini 3.1 (3.5 and antigravity for me is worse than the prior gemini cli). And is comparable to Opus 4.6. (Have not used the more recent models in Claude Code.)

That is a good point (spiderfy is good if you want to show multiple icons and click on each one specifically).

If you do not like the cluster-marker, you could have an icon just list the total number at that location, and then on hover (or click for tooltip) show the table. And that may honestly be better than the spiderfy example for most applications now that I am thinking about it.

Maybe a better example, ESRI when you click a popup has a series of HTML, https://data-ral.opendata.arcgis.com/datasets/raleigh-police..., so if you click one of the grey circles it contains multiple points, you can basically go through different views (either all the elements or click through to a more detailed view of the individual point).

Checkout how leaflet does this, it is the "spiderfy" part of markercluster. So you click down into the number bubble, and at the lowest zoom explodes out into multiple point markers.

The clustered markers in leaflet are jarring (I like them, but when I show maps I make my wife she finds the transitions nauseating).

The default heatmaps for these maps are bad. Heatmaps should use filled contours so the gradations are more easily identified. (Continuous raster maps are blobby.) See the ascii glyph map in this post, https://andrewpwheeler.com/2015/06/12/favorite-maps-and-grap.... I think those should be static for various levels of zooms as well, and not recalibrated when zooming.

Another option (not shown here) is to just use polygons and aggregations, and when zoomed in can turn on that point layer (or just have it appear). Or can just make actual clusters (like DBSCAN).

I have a map I made on my website that shows these (with various interaction tooltips/hover), https://crimede-coder.com/graphs/DurhamHotspots (hotspots of crime in Durham, NC). And an explanation of the cartographic decisions and when to use the different techniques, https://www.youtube.com/watch?v=mBm6sTR08BI

Claude Corps 1 month ago

I mean some of the orgs could be like that, but the one near me I looked up (Durham, not affiliated to be clear), is more like an entry level gig to work on various projects (so you work for non-profit, but the orgs they work for may be public or private sector).

They mostly built phone apps oriented to public good projects. (So would just be using Claude Code to build the app itself, they wouldn't be calling Anthropic APIs behind the scenes, at least for those projects.)

Think $85k for an entry level gig subsidized by Anthropic. What is so bad about that?

Spotcrime just allows you to sign up for email alerts to crime nearby an address of your choosing.

I am generally of the mind even if it results in negative externalities, knowledge is good. So even if it on average increases fear of crime, knowing the reported crime nearby your home is a good thing.

Pandoc Templates 2 months ago

I have my crazy notes on Quarto and word documents here, https://github.com/apwheele/Blog_Code/tree/master/Quarto/Rep.... Hopefully useful for others reading these comments.

I don't even know what magic buttons I need to push to get that template to correctly inherit the table format I wanted from pandoc, but it does. I tend to have other scripts though for more complicated tables though. So if I want a table to have a certain row highlighted a different color, I would write a Powershell script to run after the table was generated.

I was never able to figure out how to use LibreOffice to insert the table of contents and then export to PDF (although I can do it via the GUI).

I have a contact page on my business website. I get about 2 spam messages a day.

So far I have not taken the effort to better filter them. It is a nice check to make sure the site is still working at the moment given the low volume I get.

I should try to AI inject them though at this point with something silly, like I am more likely to respond if you email as a limerick.

Claude for Legal 2 months ago

So not familiar with the caselaw around work product, but if you use an API tool directly and not the different chat tools, the queries are not permanently cached for anyone to give up in the end.

So basically if you use any of the CLI tools, there is nothing for OpenAI, Anthropic, etc. to give the courts.

Online ChatGPT (especially the free version), are apparently cached by OpenAI on their servers. (I am not sure if Claude Desktop caches the conversations locally or in the cloud as well, read the fine print if it matters!)

It actually does not -- and that is part of the issue. Consumers just see "oh gosh this looks very detailed" and superficially think someone must of spent quite a bit of time on this and it works well.

Skills are just prompts -- and most of what I am seeing are people using AI to write the (quite verbose) prompts. There should be a test, somewhere, that shows "my prompt does better than XYZ other prompt" for some model and some specific inputs. This is what is called a benchmark.

It may work well, I don't know. Just asking Claude "hey help me iterate on a paper" works pretty well out of the box too. Call me skeptical this actually works in any substantive way without seeing any evidence it works.

I agree writing a good benchmark takes time. How do people know if all these prompts they are writing are any good though? You could make an edit and it causes a regression overall. Or add too much info and it is just wasted space in the context window, or causes the model to go in loops between the different skills, or plenty of other errors.

It is institutional in the sense that Flock and the individual PDs have not put steps in place (either post auditing or pre not allowing bad queries) that prevent the abuse.

Post auditing is obviously not taken seriously by these departments, and Flock could build tools to do this out of the box (identify weird search patterns) if they wanted to.

Edit -- I see Flock does have some audit tools, https://www.flocksafety.com/trust/compliance-tools. If those work as they should, it is more on PDs to use them properly.

I am a backend guy, so forgive my ignorance, but for web based apps I am confused what "pixel perfect" even means. I can build a site to look one way on my computer, it will most likely not look the same way on whatever device you use to access the site.

Feeding the model images for my local computer sounds like a recipe given my experience with the tools to have it over-optimize for the wrong end device.