HNHacker News
TopNewBestAskShowJobs

nathan7

66 karma · joined October 4, 2011

[ my public key: https://keybase.io/nathan7; my proof: https://keybase.io/nathan7/sigs/YkyTlq_LFxPq34fZkL0LKgcl-yZbjxN23UEfh9iWqL8 ]
submissionscomments
nathan7··on Static files in Go
Awesome! The one thing that turns me off a little is `ModTime`. I generally avoid incorporating modification times into my build (generally I force them to 1970), but a hash for the ETag would be very welcome.
nathan7··on Copy and paste-friendly Go crypto
https://golang.org/x/crypto/nacl for the Gophers among us (it provides only box/secret_box, though)
nathan7··on Qpm: A package manager for Qt
https://medium.com/@sdboyer/so-you-want-to-write-a-package-m... would be a good start
nathan7··on Things you can do with ZFS [video]
I'm assuming you mean vdevs — you can resize zvols (virtual block devices) just fine. (and you can even grow disk-type vdevs, though they'll be somewhat unbalanced)
nathan7··on Our First Certificate Is Now Live
SSLmate (https://sslmate.com/) actually makes things similarly simple — I've been using them for a few months now.
nathan7··on How do we know if a crypto function is correctly implemented?
You can't prove the hash function is correct, no. But you can prove the hash function is implemented equivalently to its definition. That's what the article is about.
nathan7··on Announcing Rust 1.2
MaidSafe (http://maidsafe.net) and Skylight (https://skylight.io) are both written in Rust, Maidsafe having recently moved to it from C++.
nathan7··on Mitigations to the “Memory Sinkhole”
It's worth noting that KVM doesn't allow remapping the APIC base address at all: https://github.com/torvalds/linux/blob/49d7c6559bf2ab4f1d56b...
nathan7··on It Ought to Be Called Vice Cream
I haven't been back home (Amsterdam) for most of this year, but I find that surprising — I usually have trouble coming up with more than three ice cream parlours off the top of my head. Where's all this great ice cream I've been missing out on?
nathan7··on What to know before debating type systems (2010)
This article wasn't written by Steve Klabnik — merely "reprinted".

> Recently, it was brought up on Proggit that Chris Smith's "What to Know Before Debating Type Systems" was no longer online. This is a really great article, and in an effort to make sure it survives, I've grabbed the archive.org cache and am 'reprinting' it here. If you're into programming languages, read this and level up!

nathan7··on Popular JavaScript Package Manager Npm Raises $8M, Launches Private Modules
By all means not an official statement, but Isaac is quite committed to making sure that the long-term safety of the npm registry doesn't rely on the future benevolence of npm Inc.
nathan7··on Show HN: Exa, a replacement for ls written in Rust
I'd argue that they all derive from, and are quite similar to Portage's USE flags.
nathan7··on Show HN: Gun v0.1.0 – The Easiest Database Ever
Awesome to finally see Gun on here, Mark! What still worries me is the reliance on external storage services, although a good local storage service could be built for Gun. Other than that, I'm glad to finally see docs!
nathan7··on DMCA Copyright Complaint to Google
Also among them: https://github.com/facebook/rebound-js https://github.com/facebook/rebound
nathan7··on Show HN: Initial release of H2O, and why HTTPD performance will matter in 2015
I'm writing an HTTP reverse proxy in Rust, and my main gripe so far is that I have to roll my own async I/O. Binding node's HTTP parsers over is going well, but also takes a bunch of effort. Safe-by-design and close to the metal are proving very enjoyable to work with for this, however.
nathan7··on The long tail of MD5
These days, I find using MD5 absolutely inexcusable. SHA-1 is available pretty much everywhere, SHA-2 algorithms are quite readily available too. BLAKE2 (https://blake2.net) is slightly faster than MD5, and significantly more secure. It's based on the SHA-3 finalist BLAKE. Additionally, there are versions of the algorithm that parallelise using SIMD, and there are both 32-bit and 64-bit optimised versions too. It also gives you the possibility of customising your hash, using it as an HMAC at no extra cost, salting it, or adding a personalisation key to effectively have different hash functions for different purposes. As a nice extra, it also uses a third less RAM than SHA-2 or SHA-3. If output length is a concern, truncating the output (with a corresponding increase in the likeliness of collisions) is perfectly fine with any good hash function.
nathan7··on Object Oriented Programming is Inherently Harmful
I think you'd be quite happy in Rust, if you substitute trait methods for multimethods too.
nathan7··on Functional Programming Patterns
Most of these slides are about patterns that are provided for as functions by the language, or are otherwise obsoleted by the more powerful abstraction features of FP languages. The writers of this presentation are very much aware of the smell that is patterns.
nathan7··on Ezra Zygmuntowicz has died
I'll miss Ezra and his outgoing spirit. Goodbye, old friend.
nathan7··on Zeroing buffers is insufficient
I'm guessing that mitigating this at the Rust level isn't doable, because its memory model has the same properties with regards to zeroing. To change that, LLVM support would be needed. This does make me wonder — how do you integrate this into a type system? Rust has already done a pretty awesome job at integrating memory-safety into the type system, but memory-secure type systems seem fairly unexplored.
nathan7··on Zeroing buffers is insufficient
The key can be generated on the smartcard, and it's not possible to transfer it out of the smartcard by design. (anything that calls itself a smartcard but allows this isn't a smartcard)
nathan7··on Zeroing buffers is insufficient
What you're describing is called a smartcard, and readily available on the market. I keep my PGP key on one.
nathan7··on Actors, Green Threads and CSP on the JVM
I'd say that many of the issues surrounding accidentally using mutable state are fairly moot in Clojure. Blocking still remains an issue, though there's core.async/thread for go blocks that block so that they're executed on a thread of their own.
nathan7··on Bitcoin: the Stripe perspective
The flawed assumption is "and therefore 21 million Bitcoin addresses". Generate an RSA keypair, and give out the hash of the public key (encoded in a Bitcoin-specific way). Anyone can send you Bitcoins there now.
nathan7··on Bitcoin: the Stripe perspective
Hawala has fascinated me to no end, as essentially an anarchistic peer-to-peer web-of-trust banking system. It has existed for a long time, and keeps functioning even where traditional banking systems have broken down. As cool as Bitcoin is, I have more hope for a system akin to Hawala than some proof-of-work based system. Guerilla banking that depends on having more (computational) power than your enemies isn't too realistic. PGP'd remittances are much more cryptographically robust, and depend just on the one factor that any real monetary system relies on anyway: human trust.
nathan7··on Race Conditions == Random Number Generation
The visualisation means next to nothing for proving it's good. But the visualisation seems to show patterns, which says plenty.
nathan7··on Ask HN: Reasons behind renaissance of functional programming languages
Accepted, but they seem to be on either side of a dividing line — I'm doing my best to straddle it, but I'm still held back by a wall of language that is too often entirely impenetrable to me. I'm a very functionally-minded programmer, and I'm rapidly adapting to Clojure now (coming from rather functional JS, and having spent a rainy week on Haskell, which taught me basic type theory and such) — but I still often hit the wall of impenetrably abstract things too :(
nathan7··on Ask HN: Reasons behind renaissance of functional programming languages
The best guess I've come up with is that anyone who is sufficiently mathematically inclined becomes a mathematician. I'm curious if anyone has any points/counterpoints in that direction.
nathan7··on Help Scale NPM
There's no node involved in the registry itself. This is purely CouchDB.
nathan7··on Help Scale NPM
npm is pretty much the prime use-case for CouchDB. REST API out of the box, replication is a core feature and not just a scaling feature (multi-master, MVCC) and the validation/access control is pretty much made for it. The npm registry is implemented as a CouchApp for a reason.
Page 1 of 2Next →