Danny Hoek

116 posts

Danny Hoek banner
Danny Hoek

Danny Hoek

@dannyhoek

Outdoors. Typescript. History. These are a few of my favourite things.

Katwijk, Netherlands Katılım Ekim 2009
224 Takip Edilen62 Takipçiler
Daniel van Strien
Daniel van Strien@vanstriendaniel·
I ran 10 newer OCR models on @allen_ai's olmOCR-bench "old scans" subset. The ranking flips depending on what you actually want. On the headline score, PaddleOCR-VL beats NuExtract3 (38.6 vs 37.8). But rank by how much of the page each model actually reads, and NuExtract3 is well ahead (41.6 vs 31.2). Same two models, opposite order. The score rewards dropping boilerplate, i.e. letterheads, stamps, page numbers, so a model that reads the page more faithfully can rank lower. IMO this is because a lot of VLM-based OCR models were made to provide tokens for training. It's less useful if you want faithful OCR of the whole page, like an archive where the letterhead is part of the record. Two other things: a 1B model (LightOnOCR-2) has the best raw transcription in the field, and PaddleOCR-VL 1.6 sometimes hallucinates Chinese characters on English scans.
Daniel van Strien tweet media
English
6
9
80
7.7K
ORBAT Mapper
ORBAT Mapper@orbatmapper·
Designing yet another symbol browser. Please let this be the last one for a while. 🙏
ORBAT Mapper tweet mediaORBAT Mapper tweet media
English
2
0
57
2.5K
Danny Hoek
Danny Hoek@dannyhoek·
Turns out the answer to "which grid does this sheet use" is sometimes just "yes, all of them." Three grids on one sheet near Le Mans, each in its own ink. Lambert I + Lambert II + Nord de Guerre, all meeting on the same map.
English
0
0
2
32
Danny Hoek
Danny Hoek@dannyhoek·
Ever tried locating a grid reference from an old after-action report? I'm reconstructing the GSGS and AMS sheet series, both boundaries and printed grids, as geographic data. Look up by sheet number, then pin historical overlays and text references straight onto a modern map.
English
2
8
65
10.2K
Danny Hoek
Danny Hoek@dannyhoek·
Tried to georeference an Atlantikwall sector map of the Dutch coast and the orange Heeresmeldenetz cells didn't line up. Turns out there's a second variant, lat/lon-bounded instead of DHG-metric. Now in @zwaarcontrast/ol-graticule-heeresgitter.
Danny Hoek tweet mediaDanny Hoek tweet media
English
0
0
2
48
Danny Hoek
Danny Hoek@dannyhoek·
@shrimpala Plot twist: the 60 zones mathematically cover the globe. The OKH just never printed sheets past lon −36°/+84°. The Kriegsmarine had America firmly on theirs though. U-boats reported positions in Quadrate across the whole Atlantic: zwaarcontrast.nl/ol-graticule/o…
English
1
0
0
66
Danny Hoek
Danny Hoek@dannyhoek·
New ol-graticule extension: Deutsches Heeresgitter (the Wehrmacht's 6° Gauß-Krüger zones, on Bessel 1841) and the Heeresmeldenetz letter-cell overprint that sat on top of it. For anyone georeferencing WWII map sheets in the browser. zwaarcontrast.nl/ol-graticule/o…
Deutsch
1
0
4
703
Project '44
Project '44@project4_4·
One of the challenges that makes mapping from Second World War unit war diaries particularly difficult is the mapping system itself, specifically the coordinate grids and map projections used at the time. The British relied on several different map projection systems, each built on geodetic datums that were, by modern standards, imprecise. For northwest Europe, the two most relevant are Lambert Zone I, based on the Nouvelle Triangulation Française (NTF) datum and the Clarke 1880 ellipsoid, and Nord de Guerre, an older WWI-era grid based on the Ancienne Triangulation Française (ATF) datum and the Plessis 1817 ellipsoid. By 1944, Nord de Guerre was technically obsolete, but it still appeared as marginal reference ticks on many British-issued map sheets. These datums were derived from earlier triangulation surveys and predated the computational methods that would later allow for globally consistent, satellite-verified reference systems. Geodesy as a discipline was still maturing, and without computers, producing and correcting large-scale surveys was slow, laborious work, made harder by the fact that a war was actively being fought. The practical consequence for a theatre like Normandy was that available map coverage relied on conical projections, specifically Lambert Conformal Conic, rather than the narrower strip-by-strip Transverse Mercator projection that underpins the modern Military Grid Reference System (MGRS). Transverse Mercator projections perform well over narrow north-south bands but distort rapidly as you move east or west. Lambert Conic projections handle wider east-west extents better, which is why they were preferred for covering broad operational theatres. The tradeoff is that both introduce distortion of different kinds depending on where you are on the sheet, and that distortion was baked into every map issued to every unit. Layer on top of that the generalisation inherent in the most commonly available wartime maps, the GSGS 1:100,000 series. At that scale, features must be simplified: roads straightened, villages approximated, contours smoothed and errors compounded. In practice, positional inaccuracy across these sheets typically falls in the range of 100 to 200 metres, with worse outliers possible depending on the area and the source survey data. By modern standards that is significant. GPS-guided munitions rely on sub-metre accuracy, and calling close artillery fire with that margin of error would be genuinely hazardous to friendly troops. In the Second World War, those errors were real and unavoidable, and commanders and surveyors simply had to account for them operationally. When we mapped Project '44, we manually georeferenced each GSGS map sheet and stitched them together, tying the sheets to known, identifiable features on the ground. Done carefully, this process keeps positional accuracy near the lower end of that 100 to 200 metre range, but it cannot push below it. The original datum and projection errors, the generalisation of the source maps, and the inevitable human error in the georeferencing process all combine in ways that cannot be fully eliminated. There is a floor, and that floor is set by the accuracy of the original surveys. Over the last several days I have been working on a new approach to reduce that residual uncertainty and speed up the mapping workflow. It is a system of systems that brings together three reference layers in one interface. The first is the wartime grid systems, specifically the coordinate grids actually used in the war diaries, enabling direct input and plotting of grid references as they appear in the source documents. The second is the georeferenced GSGS basemaps, the original wartime maps georeferenced to a modern coordinate system, so a plotted grid reference can be visually cross-checked against the map the unit itself would have been reading. The third is a modern accurate basemap, a contemporary mapping layer using current satellite-derived data, for ground truth comparison. The idea is convergence across three independent references. Where all three agree, you have high confidence. Where they diverge, a human mapper can apply contextual judgment, drawing on terrain, road networks, and the unit narrative, to make the call on where the position actually was. The goal is faster, more efficient mapping without sacrificing interpretive rigour. Rather than automating the decision, the tool gives the mapper the best possible information to make an informed judgment about where a unit was and what they were doing.
English
12
19
188
25K
Danny Hoek retweetledi
Wytse Koetse 🎬
Wytse Koetse 🎬@Wytsekoetse·
Na het zien van indrukwekkende AI-films deze zomer, werd ik geïnspireerd om 2 dagen mijn tanden te zetten in het tot leven wekken van de schilderijen van Vermeer met #RunwayGen3. Dit is het resultaat: 'A Tribute to Vermeer', met een vleugje editing en sound design.
Nederlands
397
913
3.7K
313.7K
Abraham John 🦄🦓
Abraham John 🦄🦓@Abmankendrick·
Which is Better Leave your comment below 😀
Abraham John 🦄🦓 tweet media
English
897
91
1.9K
341.3K
Danny Hoek
Danny Hoek@dannyhoek·
@t3dotgg Prettier & ESLint auto-run on file save (only for saved file). CI steps act as a guardrail for dev setups that lack proper editor config.
English
0
0
0
8
Theo - t3.gg
Theo - t3.gg@theo·
I’ve come around. I actually love precommit hooks now. Their existence is SUCH a useful way to filter for people I would never want to work with
English
80
29
1.2K
317K
Danny Hoek retweetledi
Matt Pocock
Matt Pocock@mattpocockuk·
We're talking about pre-commit hooks? Nice. I hate them. You should take as much compute time off your engineers as possible and put it on CI.
English
240
89
1.6K
396.8K
Danny Hoek
Danny Hoek@dannyhoek·
@Shpigford Playwright is a great automation library for scraping those websites.
English
0
0
0
33
Josh Pigford
Josh Pigford@Shpigford·
I want to quickly build web scrapers. What's the fastest/easiest tool for that? Basically I want to create scrapers for all tool brand (dewalt, milwaukee, ryobi, etc) sites to create a database of all of their tools.
English
193
26
741
443.9K
Danny Hoek
Danny Hoek@dannyhoek·
@housecor Much cleaner approach indeed! The last line has an oopsie by the way!
English
1
0
0
1.1K
Cory House
Cory House@housecor·
In TypeScript, I often prefer to use a Record over a switch statement. ✅ It's easy to read. ✅ It's typically less code. ✅ It's safer. With a switch, I have to do extra work to assure it's exhaustive. With a Record, if I forget to handle a case, it won't compile.
Cory House tweet media
English
64
128
1.6K
149.2K
Danny Hoek retweetledi
Matt Pocock
Matt Pocock@mattpocockuk·
🔥 TypeScript Tip 🔥 You can use 'as const' on a template literal to force TypeScript to infer it. Without the as const, it defaults to string. With it, it goes DEEP.
Matt Pocock tweet media
English
18
86
1.2K
90.9K
Danny Hoek retweetledi
Linus ✦ Ekenstam
Linus ✦ Ekenstam@LinusEkenstam·
New era for the sports industry It's time for folks to really start looking at how spatial computing will change sports for ever. What used to cost millions and take weeks, can now happen in real-time and cost close to nothing. 🧵 A thread
English
850
5.4K
29.1K
6.6M