HNHacker News
TopNewBestAskShowJobs

apwheele

1,910 karma · joined November 10, 2021

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

submissionscomments
apwheele··on SVGFarm – SVG icons for coding agents
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.

apwheele··on CursorBench 3.1
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.)

apwheele··on The early hiring funnel is now breaking on both ends
An AI written article writing about AI resumes and AI interviewers -- https://www.pangram.com/history/38790b9f-dda1-4ea9-9b6c-3858....
apwheele··on Map Clustering Is Not My Favorite
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).

apwheele··on Map Clustering Is Not My Favorite
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.
apwheele··on Map Clustering Is Not My Favorite
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

apwheele··on Never talk to the police
Terry stops != traffic stop

You are required to provide a license to operate a vehicle.

apwheele··on Claude Corps
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?

apwheele··on Take Action: LAPD Removed Crime Location Data. Here's Why It Matters
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.

apwheele··on Pandoc Templates
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).

apwheele··on Show HN: I made an emergency page for my family
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.

apwheele··on A reality check on the AI jobs hysteria
A recent paper believes work from home reducing entry level gigs fits the data better, https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6787638.

I hate it, but the X thread is the easiest review piece I can find, https://x.com/pj_lambert/status/2057477629528150369.

apwheele··on I spent 50 hours drawing a line graph
You should add in Calvin Schmid's Handbook of Graphic Presentation into your list Doug -- https://archive.org/details/HandbookOfGraphicPresentation/pa...

Unfortunately I do not see specific discussion of how to make the lines a consistent thickness. It does have notes on how to sharpen your pencil and how to use a carpenters spline to draw smooth curves though.

apwheele··on Claude for Legal
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!)

apwheele··on Academic Research Skills for Claude Code
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.

apwheele··on Academic Research Skills for Claude Code
So yes a/b broadly speaking is what I was saying (test cases and can show it is actually better).

Even this repo just the "b" showcase, showing the outputs as is (with no clear documentation how those were generated, is it headless in a CI pipeline somewhere?), is not good, https://github.com/Imbad0202/academic-research-skills/tree/m....

apwheele··on Academic Research Skills for Claude Code
There needs to be a new name for people creating these with no obvious validation.

Skill spam?

apwheele··on Alberta voter list leak is a potential public safety disaster
This data is just generally often available in the US, https://northcarolina.votermaps.org/?#16.76/35.78541/-78.779... (agree it is bad though!)
apwheele··on Police Have Used License Plate Readers at Least 14x to Stalk Romantic Interests
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.

apwheele··on Opus 4.7 knows the real Kelsey
FYI the first link, I copy-pasted the first few paragraphs into pangram and it correctly identifies as AI written, https://www.pangram.com/history/790fc2b8-6348-47fa-ad3e-8bae...
apwheele··on Why AI Sucks at Front End
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.

apwheele··on Show HN: Gemini can now natively embed video, so I built sub-second video search
While the vector store is local, it is sending the data to Gemini's API for embedding. (Which if using a paid API key is probably fine for most use cases, no long term retention/training etc.)
apwheele··on Why XML tags are so fundamental to Claude
All the major foundation models will understand them implicitly, so it was popular to use <think>, but you could also use <reason> or <thinkhard> and the model would still go through the same process.
apwheele··on Why XML tags are so fundamental to Claude
I think XML is good to know for prompting (similar to how <think></think> was popular for outputs, you can do that for other sections). But I have had much better experience just writing JSON and using line breaks, colons, etc. to demarcate sections.

E.g. instead of

    <examples>
      <ex1>
        <input>....</input>
        <output>.....</output>
      </ex1>
      <ex2>....</ex2>
      ...
    </examples>
    <instructions>....</instructions>
    <input>{actual input}</input>
Just doing something like:

    ...instructions...
    input: ....
    output: {..json here}
    ...maybe further instructions...
    input: {actual input}
Use case document processing/extraction (both with Haiku and OpenAI models), the latter example works much better than the XML.

N of 1 anecdote anyway for one use case.

apwheele··on Show HN: Hacker Smacker – Spot great (and terrible) HN commenters at a glance
This is cool, but for folks concerned about privacy, even if the cached layer is anonymized, in the aggregate I bet you can likely figure out who a person is.

I imagine just looking at the first degree connections of the votes would be a pretty strong signal.

apwheele··on Hugging Face Skills
I view them as more idiosyncratic docs, but focused on how to write code (there is so much huggingface code floating around the internet, the models do quite well with it already).

I have not had much success with skills that have tree based logic (if a do x, else do y), they just tend to do everything in the skill (so will do both x and y).

But just as "hey follow this outline of steps a,b,c" it works quite well in my experience.

apwheele··on Show HN: enveil – hide your .env secrets from prAIng eyes
Claude code inherits from the environment shell. So it could create a python program (or whatever language) to read the file:

    # get_info.py
    with open('~/.claude/secrets.env', 'r') as file:
        content = file.read()
        print(content)
And then run `python get_info.py`.

While this inheritance is convenient for testing code, it is difficult to isolate Claude in a way that you can run/test your application without giving up access to secrets.

If you can, IP whitelisting your secrets so if they are leaked is not a problem is an approach I recommend.

apwheele··on Elsevier shuts down its finance journal citation cartel
I am skeptical it is a problem isolated to Elsevier. Given the LLM craze now prioritizes open access, https://andrewpwheeler.com/2025/08/28/deep-research-and-open..., it would not surprise me people start gaming MDPI in the same way for example.
apwheele··on Large Language Models for Mortals: A Practical Guide for Analysts with Python
The book is likely a good fit to this type of work. The chapter on structured outputs shows how to extract out data from text, walking through prompt engineering and k-shot examples to generate json, to pydantic, then batch processing with the different providers.

It also shows how to set up evals in different parts of the book. (Depending on what you want to do, the structured outputs has evals show comparing models/prompt changes to ground truth, and the agent chapter has evals LLM as a judge.)

apwheele··on Large Language Models for Mortals: A Practical Guide for Analysts with Python
Crime De-coder is my consulting firm (not an acronym), but the book is not specific to crime analysis -- it is more general.
← PreviousPage 2 of 8Next →