HNHacker News
TopNewBestAskShowJobs

matthavener

805 karma · joined March 17, 2008

submissionscomments
matthavener··on Waymo in Dallas
One admirable part of Waymo's service area in Dallas is it serves areas previously devalued by racist redlining. This is in contrast to Uber's Avride and Tesla's Robotaxi offerings, which stick only to the richer, whiter areas of Dallas https://techcrunch.com/2025/12/03/uber-and-avride-launch-rob... https://dallasinnovates.com/tesla-launches-robotaxis-in-dall...
matthavener··on The 'Toy Story' You Remember
Light and Magic is an amazing documentary that covers lots of this history
matthavener··on The anti-abundance critique on housing is wrong
It's absolutely a zoning issue. The Texas legislature is literally overriding large cities to force them to allow smaller lot sizes. Most of Dallas, for example, is R-7.5, which drives up cost because land is expensive and it requires you to dedicate a lot of it to your yard (max 45% coverage). Only a few areas, like some PDs in old east Dallas, have been rezoned to allow the smaller lots, though you seem to believe its all of Dallas city limits.

https://www.texastribune.org/2025/06/01/texas-legislature-sm... https://developmentweb.dallascityhall.com/publiczoningweb/#d... https://dallascityhall.com/departments/sustainabledevelopmen...

matthavener··on Clojure Desktop UI Framework
Hickey talks about readability of Clojure in this talk (timestamp at 6m40s) https://www.youtube.com/watch?v=SxdOUGdseq4#t=6m40
matthavener··on It's always TCP_NODELAY
This was a great episode and the really drove home the importance of visualization.
matthavener··on How to register a Kei truck in Pennsylvania
NHTSA has a 25-year rule that allows a car old than 25 years to be imported without those considerations. You can definitely import them legally in Texas. I find it funny that we disallow these new smaller trucks, but we allow folks to jack up the suspension on an already large American truck 24 inches, install a grille guard, and it's still considered legal.
matthavener··on Flipper Zero banned by Amazon for being a ‘card skimming device’
Flipper has no mechanism to read a magstripe, so no, I don't think so. But it's possible to clone all kinds of other things. I cloned my SO's old building key (Mifare 1k classic) so she wouldn't need to "buzz" me up.
matthavener··on Counter-Strike 2 – Limited Test for select CS:GO players
Yep, even something as small as a magazine capacity change or price for the AWP has huge effects on team strategy
matthavener··on Detailed Assemblies for an Airtight Small Home
I sure hope this isn't a story from southside place in Cedars!
matthavener··on Mike Lindell's “packet captures” are garbage data provided by serial con-man
Same, especially him revealing a "dump" as an RTF encoded CSV of IP addresses

https://twitter.com/ErrataRob/status/1425175121963089920

matthavener··on Keyboard latency
PS/2 keyboards are used by serious gamers because the scan rate is higher than USB.

See https://superuser.com/questions/16893/do-usb-or-ps-2-keyboar...

matthavener··on OxyContin's 12-hour problem
I think your second bullet is already partially true [0]. The broader question of cherry picking in scientific studies is pretty interesting [1].

[0] https://clinicaltrials.gov/ct2/manage-recs/fdaaa#WhichTrials... [1] http://www.npr.org/templates/transcript/transcript.php?story...

matthavener··on Please do not delete this commented-out version
In clojure, you see something similar at the bottom of files:

  (comment
    (def some-state (create-state))
    (some-fn [1 2 3])
    (do-something some-state)
  )
The compiler ignores the block, but in a REPL enabled editor, you can evaluate the forms to possibly view current state, or run functions that test behaviors or probe runtime state.
matthavener··on How do we know if a crypto function is correctly implemented?
Cryptol does something pretty similar. You implement your functions in Cryptol and then verify them with SAT/SMT solvers, or generative testing. Its less about verifying the C/C++ implementations and more about verifying properties of the algorithms themselves. (Example: https://github.com/GaloisInc/cryptol/blob/master/examples/ZU...)
matthavener··on C99 tricks
My favorite C99 trick:

    const char *lookup[] = {
      [0] = "ZERO",
      [1] = "ONE",
      [4] = "FOUR"
    };
    assert(strcmp(lookup[0], "ZERO") == 0);
(not available in C++ or pre-C99)
matthavener··on Migrating from AWS to AWS
Yup, EC2 instances should be issuing a gratuitous arp on startup. I've seen the same thing on subnets with a lot of DHCP churn due to constantly rebooting embedded devices.
matthavener··on Dyad: Minimal, portable async networking library for C
I'm curious what you mean by "complete control"? Does that mean less abstraction? Or do you want to avoid inversion of control? That is, you want to avoid using callback-based libraries?
matthavener··on Akamai release source to their custom secure_malloc for OpenSSL
I don't think they knew about heartbleed. This is stopgap to protect against leaking private keys via memory bugs.
matthavener··on Mercedes Is Owning This Formula 1 Season
Cold air is denser. Denser air contains more oxygen for combustion, and won't get as hot after compression. In 4-stroke engines, this means more power.
matthavener··on Communicating Sequential Processes
go blocks are transformed into little state machines. Details here http://tomasp.net/blog/async-compilation-internals.aspx via https://twitter.com/timbaldridge/status/354613181886369793
matthavener··on Ask HN: What podcasts will make me a better software engineer?
I like the Relevance podcast. It focuses less on tech stuff and more on craft/SE/culture, but its always nice to listen to.
matthavener··on Rawgithub.com
If someone can host arbitrary html and js on the *.github.com domain, they can set cookies for github.com. See http://homakov.blogspot.com/2013/03/hacking-github-with-webk...
matthavener··on Brain teaser: what does this switch statement print?
Every time I forget to type "case " I'm instantly corrected when my editor (rightly) removes all indentation and puts the label on the leftmost column.
matthavener··on Unified API of WebSocket and HTTP long polling/streaming for Clojure
I'm curious how it compares to pedestal.io
matthavener··on Common Pitfalls in Writing Lock-Free Algorithms
The article demos a list, where threads are contending to append to the top of it. Unlike a list, there is not much contention on a FIFO unless its typically empty..
matthavener··on Backward-cpp – A stack trace pretty-printer for C++
Google has a similar library that supports Windows:

https://code.google.com/p/google-breakpad/wiki/StackWalking

matthavener··on Things I Wish Someone Had Told Me About Go
I'm making some assumptions about the compiler optimization: If T is something like "int", then passing by reference can be more costly, because a value that was once stored in a register now needs a real memory address and must be deferenced to read.
matthavener··on Things I Wish Someone Had Told Me About Go
I didn't quite "get" the point of the pointer/copy option on interfaces, but this makes it crystal clear. This works around such a common problem in writing C++ templates (which is really the only equivalent polymorphism if you want to dispatch a function on a native type):

  template <class T> void doSomething(const T &expensiveCopy);
Versus:

  template <class T> void doSomething(T cheapCopy);
As usual, boost provides another crazy template hack to work around this issue:

http://boost.sourceforge.net/libs/utility/call_traits.htm

matthavener··on Clojure's Default Reader is Unsafe

  ;; especially since read-string will be fixed in clojure 1.5 so that
  ;; binding *read-eval* to false around it will make it safe, as far as
In clojure 1.5 with read-eval bound to false, the reader is still unsafe for malicious input. Since the Clojure reader must be able to construct arbitrary Java objects via their constructors, any constructor can be called from the reader even with read-eval bound to false.
matthavener··on A nice, little known C feature: Static array indices in parameter declarations
They don't really have a choice, do they? If you want to add features you can either: 1) make a new reserve word, possibly breaking existing code 2) reuse a reserve word in a new context.
Page 1 of 6Next →