T
Tony Finch
fanf.livejournal.com · Personal blog · on HN since 2010
Tony Finch, a systems programmer and DNS engineer, writes about C tricks, data structures like tries, DNS, and Unix tooling.
What HN saysHN links it for technical posts on C coroutines, qp tries, and setjmp/longjmp, with commenters comparing them to other coroutine approaches.
24HN people shared it
11linked it in comments
24stories submitted
184story points
3 years agolast shared
2010people per year2026
Most-shared posts
- 1Raspberry Pi 2 vs. Sun E4504 people · 6 points · first shared 2016 · discussion on HN
- 2Coroutines in less than 20 lines of standard C4 people · 3 points · first shared 2013 · discussion on HN
- 3Future calendar events should be stored as local time and place2 people · 4 points · first shared 2011 · discussion on HN
- 4A rant about whois2 people · 3 points · first shared 2016 · discussion on HN
- 5Using a different X11 window manager with XQuartz2 people · 2 points · first shared 2016 · discussion on HN
- 6Qp tries: smaller and faster than crit-bit tries1 people · 54 points · first shared 2015 · 7 comments on HN
- 7C preprocessor expressions1 people · 32 points · first shared 2015 · 7 comments on HN
- 8Crit-bit tries without allocation1 people · 22 points · first shared 2015 · 1 comments on HN
- 9The early days of the Internet in Cambridge1 people · 21 points · first shared 2014 · discussion on HN
- 10Chemical element symbols that are also ISO 3166 country code abbreviations1 people · 17 points · first shared 2015 · 3 comments on HN
- 11LIAR: (Conway's) Life in a (SSE) register1 people · 4 points · first shared 2010 · discussion on HN
- 12Confidentiality vs. privacy1 people · 3 points · first shared 2016 · discussion on HN
- 13Compact encoding of the leap seconds list1 people · 3 points · first shared 2017 · discussion on HN
- 14Criticism of Amazon "Route 53" authoritative DNS service1 people · 2 points · first shared 2010 · discussion on HN
- 15Even the Deathstation 9000 can't screw up the BIND 9.10.4 fix1 people · 2 points · first shared 2016 · 1 comments on HN
What HN people wrote when they linked it
fanf2 · 2020-05-24
Note that SGT's coroutines are stackless, whereas this article's coroutines have their own stack.
It's also worth noting that you don't need asm to change the stack pointer, if you don't mind being imprecise about its exact value by the size of a function invocation frame or so: you can use alloca() or variable length arrays to do arithmetic on the stack pointer! https://fanf.livejournal.com/105413.html
dmit · 2016-04-25
Here are some software engineering blogs from my RSS reader in addition to the ones listed in TFA. I honestly don't know how over or underrated they are, but I guess that varies depending on which communities you're closer to.
Mikola Lysenko https://0fps.net
Graphics programming, geometry and algorithms.
---
Steven Wittens http://acko.net
Not underrated in any sense of the word, but I have to include it in case there are people who haven't seen it yet. It's about math and graphics, but also about art and design. Amazingly educational.
http://acko.net/blog/how-to-fold-a-julia-fractal/ is a good starting point for new readers.
---
Mark Nottingham https://www.mnot.net/blog/
Networking and HTTP.
---
Jeff Preshing http://preshing.com
Efficient concurrent data structures.
---
Bruce Dawson https://randomascii.wordpress.com
Software efficiency, performance optimization, fractals and more.
---
Yann Collet http://fastcompression.blogspot.com
Modern compression algorithms.
---
Gil Tene http://stuff-gil-says.blogspot.com
Also definitely not underrated, at least not in the Java world. But any engineer who cares about latency and honest benchmarks will benefit. Low latency techniques, GC performance, lock-free programming.
---
Tony Finch http://fanf.livejournal.com
C and UNIX programming, and more.
---
Andy Wingo https://wingolog.org
Scheme, Compilers, JavaScript, and much more.
---
Aleksey Shipilёv http://shipilev.net
JDK internals, low-level optimization.
CDSlice · 2020-10-20
I'm not so sure this is correct. [0] says that Hashlife has logarithmic complexity on average. In the worst case it is O(n) since it could have to look at every element to see a pattern if one even exists [1]. Therefore the worst case for any algorithm running in a Life turing machine using HashLife is the same as if it was running directly on the machine.
[0] https://fanf.livejournal.com/83709.html
[1] https://softwareengineering.stackexchange.com/questions/234548/what-ar…
tlb · 2019-08-25
Here is an implementation of coroutines on top of setjmp/longjmp: https://fanf.livejournal.com/105413.html
majke · 2019-03-15
> Limiting ANY queries to just TCP would have been a reasonable middle
This was proposed solution, the problem is that in case of attack, against a valid Authoritative service, launched via open resolvers, the open resolvers would just download Gigabits of ANY traffic with TCP. Read about this here:
https://fanf.livejournal.com/140566.html
itomato · 2017-07-02
You can run another window manager (i3) under Xquartz.
http://fanf.livejournal.com/142372.html
pjc50 · 2016-08-05
How about 20+ years of operational history from SCCS: http://fanf.livejournal.com/132656.html
rumcajz · 2015-04-19
This article is really about the arguments to the coroutine. The original idea for shifting the stack pointer comes from here: http://fanf.livejournal.com/105413.html
FreakLegion · 2013-08-13
Well, PCRE, the most widely used regex lib in my experience, has a "DFA" mode (scare quotes because it's actually an NFA mode. See [1]). So the option is there, even if most people use PCRE in standard recursive kablooey mode.
I was working on a drop-in managed wrapper around re2[2] so .NET developers would have access to a good regex library, but damned if starting a company hasn't gotten in the way of finishing it. Still, re2 bindings are available for most other common platforms.
(Also I don't believe Java's regex engine is automata-based, which would explain the performance gains.)
1. http://fanf.livejournal.com/37166.html
2. http://code.google.com/p/re2/
gpvos · 2012-05-21
If you're sending or storing local dates and times, it may actually be better to use the local time (as ISO 8601 does) with the (Olson tz) name of the time zone it's in, instead of the time zone offset as in ISO 8601. This is more resilient against future time zone rule changes, at least that's what this article argues: http://fanf.livejournal.com/104586.html .
csdvrx · 2021-11-13
> Your SSH public key is really the least of your identifiable information you’d be worried about
I disagree. The article points to simplifications that SSH did compared to GPG, like no web of trust.
But there's now something very close to one, a bit hidden though: SSHFP + DNSSEC
I think a lot of people here may not be familiar with SSHFP records, so check https://fanf.livejournal.com/130577.html for a more detailed explanation.
It's more or less a work around the problem of initially trusting a key, by using SSHFP records to verify that the server keys are validated by the domain, with DNSSEC validating the whole thing.
When you can match server keys to domains and user keys to github users, you are just one link away from having a global picture of the web of trust.
EDIT: and I wonder how feasible it would be to do just that with a sniff of the initial handshake
> because that’s the easiest to create a unique key for GitHub
And how many people do you think have done that, instead of uploading the keys of the servers/laptops/etc. they use?
I hate to say this, but Bitcoin did it right: by having a discardable private+public pair of keys derived from a seed key, it prevents leaks of information by correlation based on the public key.