Game servers: UDP vs TCP - <AUTHOR> http://1024monkeys.wordpress.com/2014/04/01/game-servers-udp-vs-tcp/ <comment><USER3> Impressive that he managed to say so much without mentioning head-of-line blocking, which is the main TCP problem with realtime apps.

This is not due to congestion control, but because of the ordered byte stream semantics of TCP. You can't deliver a packet until the retransmission dance is done for any previous lost packets.

As an aside, these days it's worth noting that a 3G, WLAN or 4G link layer will try very hard not to drop any packets. So when you're doing UDP, watch out for those 40000 millisecond old packets that will burst to your lap once the rain cloud moves away from the cell tower or your co-worker's cocoa blings in the microwave.

<comment><USER4> SCTP is sometimes promoted as an alternative to solve that problem. You can have multiple stream per connection so if one blocks the other ones can keep going.

<comment><USER5> SCTP has always looked intriguing to me, but would most backbones and ISPs pass it natively?

It sounds like it would be a waste to tunnel it in UDP, which is the alternative...

<comment><USER6> Yes they would. The real problem is your home router/gateway/modem will not - and you're normally behind a NAT, which in all likelyhood does not know anything about SCTP (SCTP also isn't very NAT friendly).

<comment><USER7> Sctp only breaks if the ISP or user has turned on NAT. A router wouldn't break it. NAT does bad things to IP (breaks the fundamental guarantees).

<comment><USER8> >Sctp only breaks if the ISP or user has turned on NAT.

This describes 95%+ of home users. NAT may do bad things to IP, but if you are an app developer that depends on no NAT, you're product is going to have a very limited market of people that can use it.

<comment><USER7> IPv6!

<comment><USER9> NAT isn't going away with IPv6.

<comment><USER7> IPv4 NAT is not, but you can sidestep it by using IPv6. Look at eg how XBox One is doing it.

Or are you predicting the rise of IPv6 NAT?

<comment><USER10> What is Xbox One doing?

<comment><USER7> They are tunneling IPv6 over Teredo if native IPv6 is unavailable. They provide their own relay servers for people who have NAT traversal incapable connectivity.

Teredo is a Microsoft-developed (but IETF-standadized) NAT-traversing IPv6-over-IPv4 tunneling method.

[http://www.internetsociety.org/deploy360/blog/2013/10/micros...](http://www.internetsociety.org/deploy360/blog/2013/10/microsoft- the-best-xbox-one-gaming-experience-will-be-over-ipv6/)

[http://www.ietf.org/proceedings/88/slides/slides-88-v6ops-0....](http://www.ietf.org/proceedings/88/slides/slides-88-v6ops-0.pdf)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> We use TCP for some things, UDP for some things, and our own variant on Reliable UDP for others.

We use TCP for sending real-time vessel track data to the central correlation servers, because they need to know if the connection has dropped and change their behavior accordingly. Traffic volume is low, so congestion throttling and re-tries are not a problem. The system is able to cope with reports being delayed and then coming in much later (and catching up) because reports are time-stamped and the correlator works in fuzzy 6D phase-space.

We use UDP for sending live radar data because, frankly, if you've missed one sector of data you really, _really_ don't want to delay subsequent sectors while waiting for the data that will be irrelevant in 2 seconds anyway. The compression and encryption schemes are specially crafted to allow for lost packets while still using solid implementations of off-the-shelf algorithms where appropriate, and lovingly hand-crafted algorithms for the non-security critical aspects.

And I can't tell you what we use our locally defined reliable UDP for.

<comment><USER12> Usually that's for state messages. The kind of message that defines the meaning of subsequent messages. Like codec parameters, or framing data or something.

<comment><USER13> I bet it's for firing the missiles.

<comment><USER14> Avoid loosing WW3 due to congestion control...

</comment></comment></comment></comment><comment><USER15> The article emphasizes that TCP congestion control can make TCP underperform with respect to the actual available bandwidth. So True and So Frustrating!

But it doesn't seem to talk about the virtues of congestion control - <USER2> primary one being it prevents the collapse of the Internet. Reacting to packet loss by just trying harder results in nothing but a network filled with doomed packets. This is not theoretical - before Van Jacobson that was the Internet.

I'm not defending the status quo nor TCP - TCP has deep problems figuring out what is really loss. and it speeds up too slowly but still doesn't manage to slow down when it should resulting in induced delay. But the mere fact that is worried about congestion (not just unreliability - one result of congestion) and sharing the channel isn't its problem.

have a look at QUIC, ledbat, Minion and the recent IETF TAPS BoF for work going on improving transport options in these areas. Its just the wrong takeaway to read that article and say "UDP is better because it doesn't have congestion control" \- you need to consider CC in any reliable UDP based transport you roll too.

rfc 5405 provides some advice ([http://tools.ietf.org/html/rfc5405](http://tools.ietf.org/html/rfc5405)) - its a little dated but still useful.

<comment><USER13> Excellent point, awesome RFC! It's worth reproducing this point from the abstract, which makes the same point you do:

> Because congestion control is critical to the stable operation of the > Internet, applications and upper-layer protocols that choose to use UDP as > an Internet transport must employ mechanisms to prevent congestion collapse > and to establish some degree of fairness with concurrent traffic.

It's a shame that the internet requires this kind of good behaviour from individual hosts, because it leaves it vulnerable to buggy or malicious nodes. But as long as it does, it's essential that users of UDP know about this.

<comment><USER3> On the other hand it's very fortunate that the internet architecture is what it is, because the "dumb network, end-to-end protocols" design principle has enabled deployment of new and improved protocols and applications without touching the network routers, which would have been very difficult to coordinate. Might be difficult to believe now but this was a radical idea at the time.

(Or at least enabled it for ~25 years until NAT put a damper on it - let's all keep our thumbs up for IPv6).

</comment></comment></comment><comment><USER16> If you absolutely positively need to have that lowest lag time between points then UDP is the way to go. However 1) UDP will drop the occasional packet. 2) UDP will NOT work behind many corporate firewalls. 3) UDP connections between users on separate networks will fail due to random configuration issues (I am sure there is a reason, just don't know what it is after years of looking). 4) UDP connections between users on the same DHCP servers requires a different addresses then the global address to make connections. 5) UDP connections can time out if you don't send anything for a few minutes. Easy to fix, hard to find.

In the virtual world platform my team wrote, we started using UDP exclusively, then moved to mixed TCP and UDP, then moved to using TCP for everything except P2P voice connections. with UDP I had always dreaded going into see a potential corporate client, and not knowing if my networking was going to make it through the firewall.

This is a good discussion of the subject. [http://stackoverflow.com/questions/992069/ace-vs-boost-vs- po...](http://stackoverflow.com/questions/992069/ace-vs-boost-vs-poco)

<comment><USER17> There are no such thing as "UDP connections". UDP is datagram based : you send a packet to an address, either it reaches its destination either it not (regardless of the order). A packet can be dropped in case of network congestion, TTL that reaches 0, etc.

That is : One can easily rewrite a TCP-like on top of UDP.

<comment><USER18> Almost every real use of UDP is "pseudo connection based", and lots of NAT systems operate on that basis: that a packet going (host,port) -> (host2,port2) implies both that there might be packets in the reverse direction and further packets between that pair of ports.

This isn't baked into the protocol, but in practice everyone relies on it.

</comment></comment></comment><comment><USER13> Years ago, i read about some application protocol (for a game, i think) that sat on top of UDP. It packed small messages into datagrams for transmission, and handled acking and redelivery.

One of the cute things it did was improve reliability for critical messages by preemptively sending them twice, in successive datagrams. That allowed the protocol to avoid an ack-miss-retransmit cycle for those packets, as long as it was only a single datagram that was dropped.

<comment><USER19> It's the Quake 3 network protocol. Carmack invented it, and that protocol was the first one to solve the UDP ack problem in a way that didn't impact gameplay. It was a huge deal and was probably one of the reasons the Quake 3 engine generated over a billion dollars in revenue.

<comment><AUTHOR> Not Q3. Q3 has a more elaborate scheme, keeping more updates in the resend buffer.

<comment><USER19> You rock! Thanks for correcting me and for pointing out this wonderful read in your other comment: [http://www.gamasutra.com/view/feature/131781/the_internet_su...](http://www.gamasutra.com/view/feature/131781/the_internet_sucks_or_what_i_.php?print=1)

</comment></comment></comment></comment><comment><USER20> gsfgf says:

"Hi, I'd like to hear a TCP joke."

"Hello, would you like to hear a TCP joke?"

"Yes, I'd like to hear a TCP joke."

"OK, I'll tell you a TCP joke."

"Ok, I will hear a TCP joke."

"Are you ready to hear a TCP joke?"

"Yes, I am ready to hear a TCP joke."

"Ok, I am about to send the TCP joke. It will last 10 seconds, it has two characters, it does not have a setting, it ends with a punchline."

"Ok, I am ready to get your TCP joke that will last 10 seconds, has two characters, does not have an explicit setting, and ends with a punchline."

"I'm sorry, your connection has timed out. Hello, would you like to hear a TCP joke?"

<comment><USER21> I'd reply with a UDP joke, but you might not get it

</comment></comment><comment><USER22> I used to use UDP. Its nice for some things. Things I liked: When you read a UDP message you got the whole message or nothing (its not a stream). Fast. Multicast!

Things that challenged us: 64K message size limit (varied slightly from linux/solaris/hpux) you can't tell if the other side is listening or got the message. multicast requires use of certain ip ranges which people seem to forget frequently.

I had the UNIX Network Programming by W. Richard Stevens tome I borrowed from my boss. Good for networking.

<comment><USER12> Yeah you have to recapitulate some TCP semantics to use UDP effectively. Packet numbering (so you can catch out-of-order packets). Dice-and-reassemble. Congestion control.

But the good news is, you CAN do those things yourself. And avoid the TCP lockups, slowdowns and endless retransmissions.

</comment></comment><comment><USER23> Biggest problem with UDP: No support at all in modern browsers without plugin. So when doing web games, you can't really get around using Websockets which are TCP based.

<comment><USER24> This will no longer be the case once you can use WebRTC data channels. Its just a matter of making sure your server can support the protocol.

<comment><USER25> The data channels run on UDP per default?

<comment><USER3> Yes, DTLS over SCTP over UDP. TCP doesn't really work if you want to do NAT traversal, which WebRTC needs to do because it's aimed at P2P.

<comment><USER26> And NAT traversal only works if you focus on broken NAT implementations. If you have a "secure" NAT like a firewall may implement, then there is no such thing as workable NAT traversal.

<comment><USER3> You have that backwards! NATs are tasked to facilitate communications (same as routers).

Yes, firewalls can be configured to restrict communications. And you can have a combined NAT+firewall that is so configured.

Just likes routers vs firewalls. Routers forward packets as well as they know how, firewalls selectively drop them, router-FW combos can configured either way.

Reliance on restrictive centralized firewalls is a pretty 1990s mindset, and doesn't lead to good security outcomes in the current world where users constantly suffle devices between networks, and vpn in to your network, etc. You just end up making your internal network unusable for production work.

<comment><USER26> That's an interesting viewpoint and would go against practically everyone's (except the IETF's) expectation for the NAT to provide a default firewall- esque policy.

I suppose if you view NAT to "facilitate communications" then mapping a port for all inbound IPs instead of symmetric makes sense.

<comment><USER3> In my experience people behind NAT very much like Skype, games, WebRTC, file sharing etc to work. They're usually not very knowledgeable about firewalls but most often used host-based firewalls. Which is good since they're generally much more easier to configure according to your app needs.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER27> The reality is that with broadband connections these days there is generally little or no packet loss unless your ISP is having problems. In the case where you are getting packet loss it usually tends to be around 50%, so UDP is going to have trouble as well.

Also, these days with fast retransmit TCP isn't as bad as it used to be when there are network problems.

I've been using TCP for over 20 years for multi-player games, VOIP and web conferencing, and it works incredibly well. Even if you do all the legwork to get UDP working reliably (which TCP give you for free), you still have the problem of firewalls.

<comment><USER12> Packet loss is usually due to upstream router congestion - you can send packets to your router much faster than it can forward them over a much-slower link to your ISP. SO loss depends upon your burst size/interval and your router buffer size.

Wireless still has interesting(?) packet-loss behaviors. It can lose single packets, bursts of packets or even too-large packets (MTU exceeded). It depends on the AP and your local radio noise characteristics.

</comment></comment><comment><USER28> A very good recap on how networking in Quake3 works without reliable packet delivery:

[http://trac.bookofhook.com/bookofhook/trac.cgi/wiki/Quake3Ne...](http://trac.bookofhook.com/bookofhook/trac.cgi/wiki/Quake3Networking)

Simple, yet robust.

</comment><comment><USER29> I've been hoping someone makes a decent server-side WebRTC peer, meaning that we can use UDP in the browser and really push HTML5 gaming forward. It seems to go completely under the radar with all this talk of audio/video P2P streaming.

</comment><comment><USER20> from the_skys_kid:

I'll defend UDP.

UDP is the honey badger of the internet protocol suite.

UDP is all about the transaction. UDP is standing on a cliff yelling, "Come at me, bro", whether you're there or not.

UDP is a man's protocol doing real shit like bootstrapping your ass and slapping an IP on you. Get up, motha fucka!

UDP will talk shit to one of you or all of you. UDP ain't scared. UDP brought the fear.

UDP understands that you may be slow sometimes. So UDP will wait for your sorry ass. UDP grew up without a father, too.

UDP sends a message and couldn't give a fuck if you got it or not.

UDP got a message from you saying that you got his messages and guess what? UDP didn't even open it! Not one fuck given.

Don't try to shake UDP's hand! You crazy?

And, when UDP dies because you weren't available, UDP doesn't shed a tear. UDP is hardcore. He's going out even if he knows you ain't there. UDP is a goddam one-man slaughter house. Why?

Because UDP doesn't give a fuck.

</comment><comment><USER30> In re the sections on "hiding the lag" \- Bungie (the guys behind the original Halo games) have a pretty cool presentation on how they hid lag in Halo Reach.

[http://downloads.bungie.net/presentations/David_Aldridge_Pro...](http://downloads.bungie.net/presentations/David_Aldridge_Programming_Gameplay_Networking_Halo_final_pub_without_video.pptx)

</comment><comment><USER31> Just use RakNet [http://www.jenkinssoftware.com](http://www.jenkinssoftware.com)

I mean if you want to ship a product. If your goal is to learn networking, then by all means, roll your own.

</comment><comment><USER32> One side note - what the protocol is on the wire and how you're using it are not _quite_ the same thing. With regard to head-of-line, in principle you can look at later TCP packets before a dropped packet comes in. Of course, correcting framing may be expensive or impossible, and (more importantly, for most applications) if the OS is handling TCP for you you'd have to find some way to cajole it into passing those packets to you.

</comment><comment><USER33> I have used UDP for two major projects: a game engine while working at Angel Studios (networking was tightly coupled with camera and vehicle AI) and for the NMRD project in the late 1980s (NMRD could detect nuclear tests based on seismic waves).

I am surprised that UDP is not used more often when the business cost of loss data is small.

</comment><comment><USER34> Some RTC implementations (VoIP and video) are using both in order to get through firewalls - try UDP first, resort to TCP (including even HTTP over TCP) if UDP can't connect.

The TCP fallback only consistently works well (in terms of QoE) in cases in which the TCP legs are short.

<comment><USER35> Though to some extent it sometimes feels like an RFC 3093[1] solution, as if one is running TCP on HTTP.

[1] [http://www.ietf.org/rfc/rfc3093.txt](http://www.ietf.org/rfc/rfc3093.txt) (funny, an April 1 RFC applicable to a serious post on April 1)

</comment></comment><comment><USER36> One thing I've always wondered - has anyone written something that works over UDP but offers fairly basic TCP-like reliability functionality? So you'd have the speed advantage of UDP, however you could test the validity of your data, for instance.

<comment><USER12> We have one, called STRAW. Our founder asked me to open-source it; but in the crush of work it never happened. Now he's gone; don't know if it would still be allowed by new mgmt.

Advantage of STRAW over other reliable-udp protocols: multiple connections with a single port/NAT pinhole. Multiple channels per path.

</comment></comment><comment><USER37> Someone should write a series of articles about this issue from the POV of Javascript/browser clients. There, UDP isn't available at all, and we also have to deal with quite a bit of pain in terms of differences between platform implementations.

<comment><USER38> Well, you can use UDP in data channels:

[http://www.html5rocks.com/en/tutorials/webrtc/datachannels/](http://www.html5rocks.com/en/tutorials/webrtc/datachannels/)

<comment><USER37> I am very enthusiastic about the future of WebRTC, but the last time I looked, it was a bit too new. I see now that it's supported in Chrome, Firefox, and Opera stable. However, that only takes care of the browser side. I don't know of any Clojure library/server I can use with WebRTC.

<comment><USER39> Safari might support WebRTC in the coming months. Apple appointed 4 members to the WebRTC Working Group: [http://www.w3.org/2000/09/dbwg/details?group=47318&public=1](http://www.w3.org/2000/09/dbwg/details?group=47318&public=1)

Since the signaling is not part of the standard, on purpose, you can choose whatever you like (XMPP, SIP...) or create you own solution. On the server side, TURN is implemented to go through the NATs, the firewalls, that helps.

</comment></comment></comment></comment><comment><USER40> Lately, you can just use things like [http://www.pubnub.com/](http://www.pubnub.com/) now a days and do both and not have to worry.

Socket servers are so 80's.

</comment><comment><USER41> A couple of links that may be of interest on this topic:

[http://www.ietf.org/proceedings/87/slides/slides-87-tsvarea-...](http://www.ietf.org/proceedings/87/slides/slides-87-tsvarea-1.pdf)

[http://www.ietf.org/mail- archive/web/tcmtf/current/maillist....](http://www.ietf.org/mail- archive/web/tcmtf/current/maillist.html)

</comment><comment><USER42> TCP can get you quite far, even in a fast paced multiplayer game, as long as the game is suited.

For example, the multiplayer version of asteroids in this article uses TCP sockets:

[http://www.wildbunny.co.uk/blog/2012/11/20/how-to-make-a- mul...](http://www.wildbunny.co.uk/blog/2012/11/20/how-to-make-a-multi-player- game-part-2/)

Cheers, Paul.

</comment><comment><USER43> The problem with using UDP is that many ISPs block UDP packets because it doesn't have features like congestion control. So using it for an internet game is out of the question, because there's a chance that a bunch of your users won't be able to play online.

</comment><comment><USER44> I've heard before that TCP is a really awful fit for mobile. So shouldn't there be a general replacement for TCP on mobile? Everybody inventing their own custom fix does not sound like the most efficient way to solve this problem.

<comment><USER45> > So shouldn't there be a general replacement for TCP on mobile?

But what would this magical protocol do _differently_ that would make it work better?

In my opinion, most of TCP's semantics arise not out of the network, but rather the data itself. I can't have packets getting lost in the middle of an SSH session: it just doesn't make sense. My keystrokes are a stream of data that must be in order, and must be delivered: thus TCP.

I commute daily, and use 4G on my commute. Another poster has problems very similar to mine[1]:

> As an aside, these days it's worth noting that a 3G, WLAN or 4G link layer > will try very hard not to drop any packets. So when you're doing UDP, watch > out for those 40000 millisecond old packets that will burst to your lap once > the rain cloud moves away from the cell tower

You can see this just by pinging 188.8.131.52 in the background. The loss of good signal will result in many packets getting dropped, but then when signal resumes, ping will receive the packets that it had presumed lost, and you'll get things like:

      64 bytes from 18.104.22.168: icmp_seq=65 ttl=46 time=37324.3 ms
      64 bytes from 18.104.22.168: icmp_seq=66 ttl=46 time=36324.3 ms
      64 bytes from 22.214.171.124: icmp_seq=67 ttl=46 time=35324.3 ms
      64 bytes from 18.104.22.168: icmp_seq=68 ttl=46 time=34324.3 ms
      ... and so on ...

From which you can tell that they were buffered somewhere, and then when the signal cleared up, basically transmitted quickly and cleanly. But it makes you wonder if TCP connections then receive a flood of duplicate packets (the original + the resends); I've not watched wireshark closely enough to see.

For all the ads make you think speed is the determining factor in who has the better 4G, I'd say simple packet loss or connectivity loss makes much more of a difference to me day-to-day. "Coverage", you might call it, except typically according to the phone there is a signal, it is 4G, but the strength is just so poor as to be unusable. I use an app to get this info (the bars in the corner just aren't fine-grained enough), and it reports things like "Net. type: NSDPA * 7.2 Mbps", and that'd be okay, except: "Net strength: -99 dBm * 7 ASU" — too low for connectivity; in my experience, I require >-80 dBm for actual data to transmit successfully. (Ping packets to round trip, etc.)

      [1]: https://news.ycombinator.com/item?id=7507969

<comment><USER46> > In my opinion, most of TCP's semantics arise not out of the network, but > rather the data itself. I can't have packets getting lost in the middle of > an SSH session: it just doesn't make sense. My keystrokes are a stream of > data that must be in order, and must be delivered: thus TCP.

Mosh[1] is basically (a better) SSH over UDP. It fares a lot better than SSH on mobile connections. It does away with hanging connections and such nonsense.

1: [http://mosh.mit.edu/](http://mosh.mit.edu/)

</comment></comment></comment><comment><USER47> Back when i did this kind of stuff i used both of them udp for nonesential stuff like player position.

Where a lost packet did not matter, there would still be a new player position packet a half a second later.

Then for chat and score and stuff like that tcp was used.

<comment><USER3> For a realtime game, player position would be kind of essential, no? "move here unreliably" "shoot at x reliably"

Mixing reliable and unreliable updates for game logic would seem to result in a lot of complexity as things can be out of sync in a variety of ways now.

<comment><USER7> The Quake 3 writeup cites exactly this problem as the reason Carmack abandoned the reliable+unreliable combination:

"His next iteration involved using UDP with both reliable and unreliable data, pretty much what many would consider a standard networking architecture. However standard mixed reliabled/unreliable implementations tend to generate very hard to find bugs, e.g. sequencing errors where guaranteed messages referenced entities altered through unreliable messages."

(from [http://fabiensanglard.net/quake3/The%20Quake3%20Networking%2...](http://fabiensanglard.net/quake3/The%20Quake3%20Networking%20Mode.html) )

</comment></comment></comment><comment><AUTHOR> A brief follow-up here: [http://1024monkeys.wordpress.com/2014/04/08/udp-vs- tcp-a-fol...](http://1024monkeys.wordpress.com/2014/04/08/udp-vs-tcp-a-follow- up/)

</comment><comment><USER48> enet is a networking library which uses UDP but generate redundancy and other things so it has the advantages of udp with some advantages of TCP.

</comment><comment><USER49> I don't get the bottom line part: how can you send something via "HTTP"? What method of transport layer is being used?

<comment><USER50> not an expert, but as far as I know, HTTP is a layer over TCP

<comment><USER49> Yup that's what I thought as well. After looking into it some more, I think HTTP/S implies you are using one of the transport layers; conversely, you can directly access the transport layer without using one of the traditional application layers. But that doesn't completely mesh with the parts about modifying TCP or UDP.

</comment></comment></comment><comment><USER51> You might as well paint "DDoS the hell out of me" on your forehead if you rely on UDP. Use TCP and block all UDP at your edge. Backhaul your own UDP traffic through GRE tunnels to offsite VPS's.

If you have cool transit providers, you can have them place upstream filters to block UDP. That might be a pipedream though, I don't know of any large providers who will do that for you these days.

<comment><USER51> Why the downvote? Is there anything technically wrong in my answer?

Kids these days.

</comment></comment><comment><USER52> Could anyone point me to books and ressources for beginners on the topic of multiplayer game development?

<comment><USER53> I've written a series of articles plus a live demo, with very little previous knowledge required, here: [http://gabrielgambetta.com/fpm1.html](http://gabrielgambetta.com/fpm1.html)

<comment><USER52> Thanks a lot. It looks very interesting. I will go through it when I have some time. Do you know any good book that covers this subject?

<comment><USER53> Not really... besides these articles, the other two frequently cited sources are Valve ([https://developer.valvesoftware.com/wiki/Source_Multiplayer_...](https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking)) and Gaffer ([http://gafferongames.com/game-physics/networked- physics/](http://gafferongames.com/game-physics/networked-physics/)).

We all say essentially the same, at different levels of complexity. I have a live demo :) But you should read all three to get a complete picture.

</comment></comment></comment></comment><comment><USER54> Be weary of buffer overruns when using a language like C :).

<comment><USER32> When you're weary of buffer overruns and can't be wary of buffer overruns, you stop using C.

</comment></comment><comment><USER55> This article is boss. TCP vs. UDP holywar is not going to end any time soon, it's nice that some people can actually explain the differences in simple manner.</comment>


GNUnet 0.10.0 released - <AUTHOR> https://gnunet.org/gnunet0-10-0 <comment><USER2> I always think it's a shame that they don't release binaries. Yeah sure, it technically "works on GNU/Linux, FreeBSD, OS X and W32", but without binaries, they'll barely get more than a few users. I really like that they continue to improve the technological underpinnings of the software, but there's a reason a lot of people use the tor network. There is a bundle that they can just download, start and it helps them connect.

I guess they DO see themselves as a "framework", but there is a GTK UI and there is a "regular" filesharing component to it

<comment><USER3> Releasing binaries is a lot more work. You can tell other people to do the work, sure, but this telling is unlikely to accomplish more than some doing.

Consider making a donation towards binaries, perhaps of build servers or Windows licenses so that this can be done. GNU projects are funded by the FSF, so a donation to the FSF along with a request for binaries carries a lot of weight.

Of course, the most weight is carried by a code contribution. Help GNUnet make those binaries!

</comment></comment><comment><USER4> I wonder whether they would consider replacing GNS (GNU Name System, DNS substitute, decentralized using a chain of trust model but without globally unique names) with Namecoin (uses a blockchain to enforce a registration fee). The latter isn't perfect, but it's probably better, and I wish it had more uptake in general.

<comment><USER5> I think that's unfeasible. Namecoin requires everyone to have a copy of all domain names AFAIK. It will just grow to the point of being useless if it becomes popular. If it becomes too big, you have to trust a small number of nodes to run a full instance and give you correct results. That's about as good as the current PKI/DNS system anyway.

<comment><USER4> Even if you do have to use a server, it's a lot better to be able to choose to trust anyone with a terabyte hard disk (with about 150 million current domains according to whois.sc, that sounds like enough even if it gets very popular) to not return incorrect data for a fundamentally decentralized store than to trust each of a large group of entities (CAs) to uphold a system whose canonical source (DNS) is subject to censorship anyway.

</comment></comment></comment><comment><USER6> I wonder when GNUnet and GNU Social will be eventually combined.

<comment><USER7> I don't think they will. I would like to see work in making GNU social work over GNUnet though.

If anything, GNU FM and GNU social will work better together.

</comment></comment><comment><USER8> "GNUnet used RSA 2048 since its inception in 2001, but as of GNUnet 0.10.0, we are "powered by Curve25519"

anything to do with recent RSA news?

<comment><USER9> What recent RSA news? The Reuters thing? RSA-the-algorithm has nothing whatsoever to do with RSA-the-company.

(It is good that they are moving away from RSA; new systems should stop using RSA.)

<comment><USER10> Why should new systems avoid RSA?

<comment><USER11> Because it's slower and has larger keys for equivalent security levels. There's growing concern based on recent advances that RSA and DH may not be as secure as is generally thought. [1]

Despite the unease certain people (like Schneier) have with ECC in general (it _is_ more advanced math and fewer people understand it well), and NIST curves in particular (did NSA choose weak classes of curves?)-- based on _public knowledge_ , there are advances in factoring and the discrete log problem, while there's no similar progress against ECDLP.

If NSA knew some attack against ECC or weakness in p256, p384, p521 curves (i.e. anything which doesn't apply to RSA), that would mean they sabotaged the security of Secret and TS information that's allowed to be transmitted using NIST suite B, which uses ECC and specifically those curves. Military comms between NATO allies might also be using Suite B.

Is it possible that NSA has gone completely off the rails, only cares about the security of their own ECI (which I _think_ tends to use their Suite A algorithms)? Are they willing to throw all other cryptography users, including NATO military comms users and other parts of the US Government, under a bus in pursuit of their ability to weaken generally used encryption? Perhaps, but I think it's unlikely. Speaking of which, does GCHQ use Suite A algorithms, or Suite B (including standard ECC and NIST curves), or something else? And the rest of the Five Eyes? That's something that unreleased Snowden documents probably speak to.

[1] [http://www.slideshare.net/astamos/bh- slides](http://www.slideshare.net/astamos/bh-slides)

<comment><USER9> Yep.

</comment></comment></comment></comment></comment><comment><USER12> GNUsenet seems like a more appropriate name.

</comment><comment><USER13> Zero dot tEn dott zero..?

</comment><comment> ryan-thompson Can you GNU guys maybe stop putting GNU in front of everything? It's stupid. It makes me want to avoid these products. The message it sends is that the licence is more important than the product.

<comment><USER14> GNU License ≠ GNU Project. Yes, (almost) all GNU software (as in projects of the GNU Project) are released under the GPL. So is a lot of other software.

GNU Foo is, branding-wise, just like Microsoft Word, Google Drive, or Apple Macintosh.

<comment> ryan-thompson Okay, so brand fail. I've using linux since my first lead dev introduced me to it back in '97-98, and it used to take a weekend to get set up right, and the only help on the newsgroups or BBS's was to RTFM. So maybe the brand could work for others, but I have not seen any really positive images of the brand. Ugly Gnu ink mascot, Restrictive GPL Licence that is less about sharing and more about control, Richard Stallman unable to give it a rest. The brand isn't a good one.

<comment><USER15> Since you are new, I will give you some benefit of doubt and provide a portion of the Hacker news guidelines:

 _" Please avoid introducing classic flamewar topics unless you have something genuinely new to say about them."_ \- [http://ycombinator.com/newsguidelines.html](http://ycombinator.com/newsguidelines.html)

If you feel that a license that says "Full permission, so long you do not restrict other users of the program" as more about control and less about sharing, then keep that to you self. There is nothing genuinely new about in such discussion, and frankly, it just tiresome to read, comment and down vote. Note that the down vote is not because I 100% completely disagree with your comment, but because your comment will just cause a rehash of an flame war which is old enough to start investing in its own pension plan.

<comment><USER12> It would only constitute a flamewar topic if he were advocating an alternative to GNU.

<comment><USER16> Quote: "Restrictive GPL Licence that is less about sharing and more about control"

If that aint an old flamewar statement, I don't know what is. Everybody here knows what the alternative is (BSD, and BSD-like licenses). We weren't born yesterday and we're nerdy enough to know what is being argued for.</comment></comment></comment></comment></comment></comment>


Deleted Tweets: Trump - <AUTHOR> https://factba.se/topic/deleted-tweets <comment><USER2> I thought there was something official that would preserve presidential correspondence

<comment><USER3> That assumes that the department you're speaking of wasn't already cut. The President only seems to care about history as it relates to what he believes it should. Consider for example how many times he bashed President Obama for golfing and has since surpassed President Obama's rate. Or how he criticized Sec Clinton for a private email server then did the same thing or illegally destroyed documents. The President seems to be confused on the differences between an office with shared powers and the dictators he has made a habit of becoming friendly with.

</comment></comment><comment><USER4> 'Prince of Whales' is a funny typo, presumably that's why the tweet was deleted.

<comment><USER5> I often delete a tweet if I make a mistaek in the spelling. For some reason it infuriates me more than I expected. I think this is because when I tweet, I commit to a permanent public record and the tweet will be scrutinized by someone eventually (if not currently by my followers) - and the tweet will be read and judged at some point. This is why Twitter needs an edit button.

<comment><USER6> was "mistaek" intentional?

<comment><USER7> It was certainly not ironci

</comment></comment></comment></comment><comment><USER8> Regardless of our opinions on Donald Trump, there is huge potential for misinformation here, aka the "fake news" that Trump mentions.

I suggest everyone takes this with a grain of salt unless confirmed with other sources (ideally I'd like a reputable entity like the Internet Archive to release a similar service as so far they've been trustworthy and haven't shown any political bias).

Full disclosure: I am a Trump opponent but I'm not into US politics based on what I hear in mainstream international media which I know might be biased.

<comment><USER9> Quick question: what does "not into US politics" mean to you? You have opinions (you state that you're a Trump opponent) and seems at least marginally informed.

Just curious, not trying to bait you into saying anything stupid. I just ask as someone who is "very political" and trying to understand what people mean when they say they're "not into politics".

<comment><USER10> I think "not into politics" is just a phrase that means "please don't bite my head off just because I have a different political opinion."

<comment><USER8> Not really.

I'm not into politics and I don't take the time to do _proper_ research into who said what and I only take info from the mainstream news so I understand they're biased and I disclosed that to cover myself in case what I heard ends up wrong. I'm against him but I'm also open to the basis of my opinion being incorrect.

<comment><USER10> I understand.

Not that this has anything to do with what you said specifically -- it is just sad how polarized our nation is and the folks at the extreme ends have created a dumpster fire that the media magnifies for profit.</comment></comment></comment></comment></comment>


Fed judge rules that a downloader's IP address is not proof of identity - <AUTHOR> http://boingboing.net/2014/01/22/fed-judge-rules-that-a-downloa.html

<comment><USER2> This just reblogs the original article from TorrentFreak:

[http://torrentfreak.com/judge-ip-address-does-not-prove- copy...](http://torrentfreak.com/judge-ip-address-does-not-prove-copyright- infringement-140121/)</comment>


Morse beep: A simple text to Morse Code player for the web - <AUTHOR> http://mcwhittemore.github.io/morse-beep/

<comment><USER2> This is really cool, just one small bug.

When I click to start a new translation, it pauses the previous translation(s) instead of canceling what hasn't been beeped.

This led to a fun test where I asked it to spell eight words simultaneously and suddenly found myself listening to electronic music.

<comment><AUTHOR> I just punched in a bunch of random text in over its self a few times to see what this is like. It is either a new form of music or torture.

I guess I can make it so each call to an instance of morse adds to a queue and that when one bit of text is played it goes on to the next. This seems better for a singleton though and as of right now, this isn't a singleton... hmmm.</comment></comment>


In Defense of Utility-First CSS - <AUTHOR> https://frontstuff.io/in-defense-of-utility-first-css <comment><USER2> Particularly weak: the example about "cards" where the author refuses to do the right thing (splitting the card class into three or four variants, possibly with "utility" classes that add different ribbons to the common card style) because it would be a "refactor" (never heard about search & replace tools and/or using templates to avoid manual editing?), and she prefers to use convoluted tricks in order to complain that the card has become a "fragile base class".</comment>


Y Combinator Secret Recipes on Working with Remote Engineers - <AUTHOR> https://youteam.co.uk/blog/y-combinator-on-working-with-remote-engineers/ <comment><AUTHOR> Why do some founders choose to hire remote developers, while others are "in- house only"? How do YC alumni hire remote and manage remote developers? Why is outsourcing considered drug-dealing by some?

This and more - in the exclusive interview of YC VP of Marketing Craig Cannon.

</comment><comment><USER2> "Once you tried it – you're hooked". That's a very good point. If you've got enough experience in managing your distributed team across different locations and time zones, then you'd taste your real impact over great distances, especially when working with the best engineering talent in the world.</comment>


Thousands of birds crash into a Walmart parking lot - <AUTHOR> http://usnews.msnbc.msn.com/_news/2011/12/14/9445121-thousands-of-birds-make-crash-landing-in-utah <comment><USER2> Interesting. I wonder if they could paint patterns on the parking lot to make it not seem like a "nice flat body of water"? I suppose they would have to be large, as there are already the lines for the parking spots, and those obviously aren't working, but subtle, so they don't confuse the drivers.</comment>


Conrad Barski Land of Lisp presentation at Philly Lambda  - <AUTHOR> http://www.motionbox.com/videos/4c96dabc1817edc2c3?iid=switch_player_&type=hd <comment><USER2> This is marvelously whimsical. I almost never watch videos like this, but this guy's stuff is so original and charming that I couldn't help getting sucked in. (I mean... Grand Theft Wumpus?!)

<comment><USER3> Quite a character eh? A medical doctor by training and profession, lisp programmer, and a kickass cartoonist :-)

</comment></comment><comment><USER4> The video was just removed from Motion Box because it exceed view rate for that account. We need to find a new home. Feel free to contact me if you know of a place.

</comment><comment><USER5> The old link is protected, here's another one <http://nostarch.com/lisp.htm>

</comment><comment><USER6> Hey, we're also looking for more speakers, so far the group has been high quality and attracted a lot of interesting people from the local tech community. If you're willing to visit us, please drop myself or Aaron Feng an email.

<comment><USER7> You should put a way to contact you in your profile. That'd be much more effective.

<comment><USER6> My email is there...what else should I do?

<comment><USER7> Hmm.. I never saw it before. Sorry.</comment></comment></comment></comment>


Exhale – Check yourself before you wreck yourself - <AUTHOR> http://www.getexhale.com/ Site URL: http://www.getexhale.com/ Presentation URL: http://goo.gl/BKDGU0
Have you ever woke up after a late night party fearing you will not be fit to drive to work? Our study has shown that over 30% of drivers admitted driving under the influence.
The answer to this problem is Exhale, our smartphone breathalyzer.
Simply exhale into the device and instantly get relevant information such as how long until you are street legal again, or if you are in a hurry, be able to get a ride by cab or by friend. Exhale enhances your ability to drink responsibly and gets you to your destination safely. If you don't intend to drive we've got you covered too.
You will be able to compare your "score" with your friends in a new era of drinking games. <comment><AUTHOR> Hey guys, I am working on a start up idea with some friends and we would like some feedback! Thank you for your time!

Have you ever woke up after a late night party fearing you will not be fit to drive to work? Our study has shown that over 30% of drivers admitted driving under the influence.

The answer to this problem is Exhale, our smartphone breathalyzer.

Simply exhale into the device and instantly get relevant information such as how long until you are street legal again, or if you are in a hurry, be able to get a ride by cab or by friend. Exhale enhances your ability to drink responsibly and gets you to your destination safely. If you don't intend to drive we've got you covered too.

You will be able to compare your "score" with your friends in a new era of drinking games.

Presentation URL: [http://goo.gl/BKDGU0](http://goo.gl/BKDGU0)</comment>


Asperger Syndrome Tied to Low Cortisol Levels - <AUTHOR> http://news.yahoo.com/s/hsn/20090402/hl_hsn/aspergersyndrometiedtolowcortisollevels <comment><USER2> It seems to me that people with Asperger Syndrome have a clear career path:

* they would probably prefer to work by themselves on a computer all day

* they would probably NOT want to climb the corporate ladder in a large company

So, it seems that working on their own computer-related startup would be ideal. And today, that sort of thing is becoming quite common.

BTW, it's not clear to me that people with this condition would want to be cured. This "disease" allows people to focus on the task at hand and be more successful at it.

In fact, we may be seeing evolution at work here as the human race adapts to the computer age -- at least in certain regions such as Silicon Valley.

<comment><USER3> Don't dwell on idea that certain type of very specific neurological differences pre-disposes anyone to/from any sort of career/social path or success.

It's what you know, what you are willing/able to learn and how hard you're willing/able to work that matters (together with a certain degree of "luck" as well).

<comment><USER4> >It's what you know, what you are willing/able to learn and how hard you're willing/able to work that matters.

In turn, what causes people to be willing/able to learn and work on certain things? Our preferences and aptitudes are primarily stored in our neurological makeup. So neurological differences (whether inborn or acquired) will cause people to behave/emote differently.

Of course, there will be lots of people with Asperger's who love interacting with others and enjoy great interpersonal success, but that's the point of a pre-disposition -- it refers to a correlation, not a hard-and-fast rule.

I don't have statistics for people in the autism spectrum, but I would not be surprised if they trended heavily toward professions that focused on intellectual work over interpersonal interaction.

<comment><USER5> I feel certain that people w/ AS trend away from professions like, say, sales. I feel certain that a large chunk of people w/ AS are knowledge workers for exactly the reasons given in this thread. But it's worth pointing out that AS encompasses people w/ a broad range of abilities, and narrowness of focus and social anxiety are only two aspects of the syndrome. There are often so-called sensory-integration issues, rigidity, a low tolerance for frustration, compulsiveness, difficulties w/ executive function, and on on -- all part of, or concomitant to, AS.

So, I'm just saying, it _is_ a disability, and I expect adults w/ AS also trend to underachievement. Anybody know a brilliant but difficult person (or two) delivering pizzas or working as a museum guard or the like? I do.

FWIW, my 5 y.o. has AS, so I've thought about this quite a bit.

</comment></comment></comment></comment><comment><USER6> I actually have Asperger Syndrome and I'm a programmer. I was diagnosed by a neurologist in 2008 at the age of 34. There are some interesting comments here. I definitely have seen a few comments from other autistic people on forums about preferring a "menial" job if it meant they could work more or less alone. Some would rather be a filing clerk than a manager in the same department. Many of them do well in academics.

Simon Baron-Cohen has said that their research indicates a link between autism and systemizing genes. So people who have the systemizing genes are more likely to enter into professions like math, science and software - which is part of the reason why autism is more common among math majors, and why you often see a history of engineering jobs in the family of a person with autism. [http://www.opposingviews.com/articles/research-scientists- mo...](http://www.opposingviews.com/articles/research-scientists-more-likely- to-have-autistic-children)

I wrote up some of my thoughts about this in more detail on my blog here: [http://ontap.riaforge.org/blog/index.cfm/2009/4/2/AprilAutis...](http://ontap.riaforge.org/blog/index.cfm/2009/4/2/AprilAutism)

I myself am working on raising awareness for an effort to improve the employment rate of people with autism called Autelligent Laboratories. The hope is that the business model for this software company can be extended and reused by companies in other industries. <http://www.autlabs.com>

</comment><comment><USER3> This raises some interesting questions--

I wonder than if this means Asperger's could at times have been erroneously diagnosed as GADD/social anxiety? How else does stress/anxiety affect patterns of cognition and social function?

Would this mean that to the extent it encouraged narrow and driven focus and to the extent such a focus is beneficial, is anxiety/stress actually helpful to society? Does this explain (to some extent) success of societies with high- stress education systems?

Interesting find.</comment>


Ask HN: What do you do when your client asks for something stupid? - <AUTHOR> I work for a startup that sells consulting services on the side (software and data science). Sometimes I am asked by clients to do something stupid. E.g. running a clustering algorithm on 2D data where there obviously are no clusters (but hey the new segmentation is the result of a machine learning algorithm and the client likes it), or building performance metrics where we clearly have no relevant volume of data. How do you deal with that ? <comment><USER2> Talk to the client and find out what their reasons are for them to make that request. During this process you can probe how much your client understands the processes involved in doing what they want. If they understand the processes and the problem you have with the request presents itself obviously, straight up ask what they expect to receive given the problems that exist. Who knows maybe they think they want z from X but really what they want is z from y and talking through it you might work this out.

If the client doesn't understand the process enough for the problem to be obvious to them, then I would explain it. After both of these things I would continue ahead and complete the task unless requested otherwise by the client ,aka full steam ahead unless they change their mind. Even if it's dumb shit your still getting paid to do something atleast and your making your client happy which is all that matters.

Also this might come across formally but in irl you can do all of this in really unobtrusive ways using some good casual banter about the task at hand. Keep it friendly, remember "there are no stupid questions only stupid answers".</comment>


New steel treatment could enable lighter, stronger, cheaper cars (2015) - <AUTHOR> http://newatlas.com/flash-bainite-automotive-testing/40774/?li_source=LI&li_medium=default-widget <comment><USER2> "Japan making steel 20-30% lighter and 25% stronger than the toughest high- tensile steel at the same price":

[http://www.nextbigfuture.com/2016/07/japan-making- steel-20-3...](http://www.nextbigfuture.com/2016/07/japan-making- steel-20-30-lighter-and-25.html)

<comment><USER3> There's a number of high-strength steels like this. Bisalloy [1] are an Australian group that produce Bisplate and SSAB [2] are a Swedish company that make similar products under the Weldox/Strenex/Hardox brands. As you mention, Nippon Steel also make a range of them.

That said, neither is quite like this flash bainite. Both are very hard steels, so manufacturing and fabrication techniques need to suit the steels at hand. For example, machining the steels I listed can be very difficult and murders tooling bits compared to machining mild steel. Welding can also be difficult and usually involves significant preheating and post-weld heat treatment processes. Flash bainite apparently has some benefits in those areas but to what extent is hard to quantify.

I'd love to know more about this flash bainite process, but their website is really scant on details. Other sources of info suggest that you weld the structure together then flash process it afterwards, which I'd assume is completely useless for anything with complex geometry or substantial size. A military report [3] of its performance shows that welding after FB treating literally halves its strength, as you'd expect since the heat of welding is basically like traditionally heat-treating it over longer durations. In that sense the ones I mentioned are better because you can more slowly heat treat them post-welding via more flexible methods that can deal with more complex shapes. This lets you get restored strength properties because those steels aren't reliant on a flash-style process.

Where I think this reigns is in its ability to be formed easily whilst still being strong. Forming those steels I mentioned is a nightmare. In that sense it would certainly have applications where you can fabricate via fastening (rivets, bolts, etc.) but it seems to fall short when you need to weld it into anything more than a small butt-weld of two sheets.

Certainly an interesting development and I'd love to see it realised to a commercial product as it'd definitely have some uses, but it's not the be-all- end-all holy grail of steel.

[1]: [http://www.bisalloy.com.au/](http://www.bisalloy.com.au/)

[2]: [http://www.ssab.com/products/brands/strenx](http://www.ssab.com/products/brands/strenx)

[3]: [http://www.dtic.mil/get-tr- doc/pdf?AD=ADA588144](http://www.dtic.mil/get-tr-doc/pdf?AD=ADA588144)

<comment><USER4> I currently source a number of castings in bainite for ground engaging agricultural parts and it is what I would call semi-weldable - you wouldn't rely on a structural mig weld but I've had success with both tig welding and silver solder for attaching other parts with non-structural joins.

The big win for me is the parts can be air quenched - the slower cooling eliminates one of the biggest rejection flaws, straightness

<comment><USER3> If I'm understanding you correctly, you touch on the point that I (probably badly) tried to make - by slowly cooling it during heat treatment, you can post-weld treat it to remedy issues that the HAZ introduces. I'll try to explain it again because I've probably also confused others.

For example, when I deal with the castings I procure, we mandate that the supplier either repairs them prior to the heat treatment stage or they must be fully heat treated again after weld repairs. This helps resolve the otherwise brittle HAZ. You can do this, because castings are usually quench-and- tempered, which is a relatively slow process.

Welding stuff like Bis, Weldox, etc. requires both pre- and post- heat treating in order to let the weld form and also address the HAZ properly afterwards to restore its strength. You can do this because the processes to heat treat it are traditional and relatively slow. This lets you get (somewhat reduced compared to the parent metal) structurally sound levels of strength out of the weld locality. Because of it, Weldox and Bis both see widespread use in truck bodies, crane arm trusses, etc.

This is in constrast to flash bainite, which relies on it being a very fast process. By virtue of it being a fast, tailor-made process you can't just do it to a complex geometry. By welding it, you dump heat into the weld which then air-cools slowly as the weld cools, completely running counter to the flash bainite process that is necessary to produce the strength. That's why you see a halving in UTS in the mil report I linked in source 3 of my first post - you simply can't recover from the slower heat-and-cool process without doing the whole treatment again, and you can only do that on easy geometries (it seems).

As said, if I understand what you're saying we're essentially saying the same thing, but I think I phrased it quite badly in my post. Not that you disagree with me, but it just made me realise that I don't think I worded it well and wanted to clarify.

<comment><USER4> Yep we are in 100% agreement. To rectify my own lack of clarity, the sort of parts I am talking about are largely prismatic with a handful of holes and pockets, or for the more complex geometry, not more than around 300x300x300 in total envelope, so definitely not large.

For reference, bainite has completely replaced 8630 in all ranges of quenching and tempering as a material for us, and I'm currently in the process of phasing out most of our Hardox parts in lieu of bainite as well. Haven't used Bisalloy plate for years due to its even-worse-than-expected machinability.

</comment></comment></comment></comment></comment><comment><USER5> The bummer here is that you have to heat treat very quickly and that means it won't work for thicker shapes.

<comment><USER6> Serious Question: doesn't induction heating solve some of this? Also, it seems like they're focusing on tubing type structures.

<comment><USER5> A little, but not really. You can only heat and cool things so fast, and the time is somehow related to the square of the thickness plus a bunch of constants.

So if you worked really really hard you might be able to do stuff that's 1/4" or maybe even 1/2" thick but it'd probably never work for 6" thick.

Yes they're focusing on tube because that's where it can be done. But if you could get very thick steel that's also stronger than Ti, that'd be AWESOME. Which is why I'm a little disappointed. This stuff isn't unobtanium, but it is a bit magical.

</comment></comment></comment><comment><USER7> What really interests me is that it sounds like this isn't something high tech, just "never figured out before". It's a variation on the existing processes and yields a huge improvement at lower cost.

How many more opportunities are the out there just sitting in front of us, unconsidered?

<comment><USER8> If by unconsidered you mean "yeah we could mix X, Y and Z in different ratios to make an alloy with different performance characteristics but it's not worth doing because there's currently no market for an alloy like that" then there's s lot.

</comment></comment><comment><USER9> How can a metal be more ductile and also perform as well in crash tests?

<comment><USER10> One view can be taken from applying conservation of energy. As a material deforms, it is absorbing energy and not transferring it to the vehicle nor the passengers. A brittle material will absorb less energy before shattering, letting the rest of the energy then be transferred to where you don't want it to be.

<comment><USER11> Yeah this is correct. Less often talked about but actually very important, the amount of energy required to break something[1]. Also as ductile structures deform under load they tend to redistribute the load more evenly.

[1] Hammer a piece of glass vs a piece of rubber.

</comment></comment></comment><comment><USER8> What's the catch? Weldability, piss poor corrosion resistance/reactivity?

"while aluminum is good for hoods, decklids and door skins, Flash offers higher strength per pound for structural safety components."

So no more "like a m __ __ _f_ __ __g submarine " commercials or will they start making submarines out of it too?

<comment><USER12> _What 's the catch? Weldability...?_

I've just been chatting with a mech-eng materials specialist friend of mine, and according to him, you hit it, right there; he writes _hot work will cause the microstructure to revert to classic regular BCC ferrite which isn 't that impressive. that's the reason why you can't / shouldn't weld the stuff... ...essentially it's a "cast/quench this part and leave it the hell alone" material_.

</comment></comment><comment><USER13> Is anyone aware of other, non-automotive applications being discussed? I might have missed it in the article but it seemed like they only alluded to any. Construction? Maybe even aerospace?

<comment><USER8> Aerospace would be a big one. The few steel parts in aircraft are usually highly critical like landing gear attachment stuff and similar. Part of the reason they're steel is because they're spec'd to outlive the rest of the airframe by a huge margin and doing that with aluminum is impossible/impractical depending on the part and the safety margin.

<comment><USER14> Also failure mode, Aluminium tends to degrade gradually over time, it's cumulative and then fail where steel holds it's strength over it's life (as long as it's not exposed to loads over it's limits) which for a high impact/load environment like landing gear makes sense I guess.

I'm a keen cyclist and some of the new steel frames are incredibly, they approach the same weight as aluminium frames with higher strength, better rigidity and they have (looked after) a basically indefinite lifespan.

I think my next bike will probably be steel.

<comment><USER15> That's funny. My bike is steel; I got it in college 20 years ago, so it's not new at all. At the time, it was pretty advanced I guess: it's a butted (triple? not sure) chrome-moly steel road bike by Trek. It's a little over 25 pounds I think, so it's really not that much heavier than comparable aluminum bikes. The frame's still in fantastic shape even though it's been ridden all over and not taken care of particularly well, been rained on a lot, etc.

Not long after I got it, it seemed that steel frames became totally passé; everything went to aluminum, titanium, and then carbon fibre. These days, road bikes all seem to be either aluminum or CF. And now history repeats itself...

Personally, though, I'm looking forward to ditching it and getting a recumbent trike. I'm getting sick of having a sore neck and shoulders and hands and having my arms go numb on long rides.

<comment><USER14> If the hand numbness is really bad consider switching to a carbon fork if you haven't already, on my old aluminium bike the numbness was pretty bad since I switched to a carbon bike it's largely gone.

<comment><USER15> How is having a stiffer front fork going to help? (My front fork is steel; my bike is not stiff.)

<comment><USER14> It's not so much the stiffness that matters but that carbon damps the 'buzz' from the road, Steel is better than Aluminium but Carbon is better than both in my experience.

That said if you are having real numbness problems switching up to a 25mm tyre (most road bikes will take them) and running at 80psi vs 23mm at 110psi will make the most difference.

It also depends on the surface you ride on, UK roads are not known for been particularly smooth (particularly rural two lanes) so the differences are more marked.

<comment><USER15> Thanks for the advice; I do believe I have a 25mm tire in front (I'll have to check, but it's not super-thin). But a CF front fork sounds like way more money than I want to spend on fixing up a 20+ year old bike; if I'm going to spend any money, I might as well get a new bike, which is why I'm seriously looking at getting a Catrike: I can get away from the uncomfortable road bike posture altogether that way, get better aerodynamics, avoid crotch pains, etc.

<comment><USER14> Recumbents have a lot to recommend them but I don't like the lack of visibility in traffic, UK drivers aren't that considerate of cyclists generally so I at least like to be visible, that said they do really really move compared to a road bike since the aerodynamic shape helps hugely.

<comment><USER15> I'm in the US, and roads here are really bad for riding bikes on, unless you're in a very small town or something. (Even that isn't a great place; I live in a small town currently and the street in front of my house has a 25mph speed limit, but people are constantly speeding on it, and frequently hitting cats that cross the road near my house.) That's why I simply don't ride on roads with cars if I can help it; I mostly stick to rail-trails or towpaths. I can ride 40 miles on a rail-trail and barely see any cars at all, and frequently not even any humans.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> This is a really exciting development in materials science. It's surprising and somewhat disheartening that it's taken me ten years to hear about it.

[https://patents.google.com/patent/WO2008042982A2/en](https://patents.google.com/patent/WO2008042982A2/en) seems to be the Flash Bainite patent application; if I'm reading this right, he's applied for a patent in the US and Canada, but neither has granted the patent after ten years.

Note that Flash Bainite is a different material than bainite; Flash Bainite contains bainite crystals, but also contains crystals of other phases, including (in the case of AISI 4130) 82.5% martensite. Bainite as such has been known since the 1920s. I'm not completely clear on whether _sammcf is talking about this kind of flash-processed steel in their comments or about some other kind of steel in which bainite plays an important role, though it sounds like they're talking about this stuff.

Putting the Rearden-Steel-like claims he makes in [https://www.galtsgulchonline.com/posts/c0a47/hi-my-name- is-g...](https://www.galtsgulchonline.com/posts/c0a47/hi-my-name-is-gary-cola- developer-of-flash-bainite-technology) in context (thanks NamTaf!), the 2080 MPa strength he's claiming there is within a stone's throw of thin music wire, which is far and away higher than that of any other steel. But there's a huge difference in that the 10% elongation at break he's claiming is truly astounding — more like a plastic than a metal. Normal steels break at about 1% elongation, aluminum typically around 3%. Nylon 6,6 is typically around 30%.

The ASM HTPro article [http://www.asminternational.org/documents/10192/17082024/Pag...](http://www.asminternational.org/documents/10192/17082024/Pages+from+HTPro_December_2013_amp17111.pdf/61afa899-7863-4f83-9d5e-a7caa5e22eba) says they got UTS of 1.99 GPa and 10.2% total elongation for "flash processed AISI 4140". I'm not sure yet how much of that elongation is plastic, though judging by the OP's photo of the crumpled thing, maybe most of it.

Bringing those two facts together, it would seem that it's substantially less stiff than ordinary steels, which means that even if all the claims are true, it won't replace them in uses where stiffness matters more than strength — uses like compressive structural members. Furthermore, the strengths discussed so far are ultimate stresses (after plastic deformation is exhausted), not yield stresses (stresses from which the steel will spring back), which may be unspectacular.

In short, it's not a better steel. If these claims are true, it is in effect an entirely new class of material, that just happens to be _made_ out of steel.

Since you reach the Flash Bainite state by quenching, it seems likely that it's metastable and will eventually decay back into a more ordinary steel, but that's true of austenite too — for human applications, metastability is as good as stability if the time to relaxation is measured in billions of years.

</comment><comment><USER17> This looks like a hoax to me.

I can't find any coverage of it in any authoritative news sources.

If you google the address given on the company's website, it points to "Sculptors Fitness Center".

Does any one have any knowledge to suggest that it's anything other than a hoax?

<comment><USER18> Here's a detailed metallurgical survey of this material.

[http://www.dtic.mil/get-tr-doc/pdf?AD=ADA588144](http://www.dtic.mil/get-tr- doc/pdf?AD=ADA588144)

</comment></comment><comment><USER19> Very nice, sounds like Rearden Steel, if you excuse my objectvism

<comment><USER20> Objectivism Shrugged :-)

<comment><USER3> This is an amusing statement given it seems like he's a bit of a Randian: [https://www.galtsgulchonline.com/posts/c0a47/hi-my-name- is-g...](https://www.galtsgulchonline.com/posts/c0a47/hi-my-name-is-gary-cola- developer-of-flash-bainite-technology)</comment></comment></comment>


A game designed to be played 2,700 years in the future - <AUTHOR> http://io9.com/a-game-designed-to-be-played-2-700-in-the-future-509927441

<comment><USER2> Discussed at length here:

<https://news.ycombinator.com/item?id=5767379></comment>


Cells - A dataflow extension to CLOS - <AUTHOR> http://common-lisp.net/project/cells/

<comment><USER2> Looks cool, I tried to install it under ubuntu and got the error (SB- KERNEL:ASSERT-ERROR (STRING-EQUAL ASDF-INSTALL::URL "<http://> :END1 7)

Full procedure if anyone's interested is:

sudo apt-get install sbcl sbcl-asdf

$ rlwrap sbcl This is SBCL 188.8.131.52.debian, an implementation of ANSI Common Lisp. More information about SBCL is available at <[http://www.sbcl.org/>](http://www.sbcl.org/>).

SBCL is free software, provided as is, with absolutely no warranty. It is mostly in the public domain; some portions are provided under BSD-style licenses. See the CREDITS and COPYING files in the distribution for more information. * (require 'asdf)

NIL * (require 'asdf-install)

; loading system definition from ; /usr/lib/sbcl/sb-bsd-sockets/sb-bsd- sockets.asd into #<PACKAGE "ASDF0"> ; registering #<SYSTEM SB-BSD-SOCKETS {AD248A1}> as SB-BSD-SOCKETS ; registering #<SYSTEM SB-BSD-SOCKETS-TESTS {AE975D9}> as SB-BSD-SOCKETS-TESTS ("SB-BSD-SOCKETS" "ASDF-INSTALL") * (asdf- install:install :cells) Install where? 1) System-wide install: System in /usr/lib/sbcl/site-systems/ Files in /usr/lib/sbcl/site/ 2) Personal installation: System in /home/john/.sbcl/systems/ Files in /home/john/.sbcl/site/ \--> 2

debugger invoked on a SIMPLE-ERROR in thread #<THREAD "initial thread" RUNNING {AA5E589}>: The assertion (STRING-EQUAL ASDF-INSTALL::URL "<http://> :END1 7) failed.

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):

<comment><USER3> use Quicklisp[1] for installing/management of libraries, it works across platforms and implementations.

[1] <http://www.quicklisp.org/beta/>

<comment><USER4> Cells isn't in this month's Quicklisp because it didn't build for me. Kenny fixed it a few days later and it should be in December's edition.

</comment></comment></comment><comment><USER5> The new homepage is here: <https://github.com/kennytilton/cells/wiki>

</comment><comment><USER6> Shameless plug: I wrote something similar for Clojure. <https://github.com/gcv/dgraph>

<comment><USER7> Thats cool! I love Clojure and I love dataflow :) Just wondering how this compares to the dataflow library in clojure-contrib?

<comment><USER6> clojure.contrib.dataflow uses refs and works with side-effects on node cells. dgraph is (mostly) purely functional and its dependency graphs are persistent data structures, just like Clojure maps and vectors. I wrote dgraph specifically because I wanted those semantics.

<comment><USER7> Thanks!

Thats really awesome. That certainly makes it fit better with the rest of clojure than clojure.contrib.dataflow does. I'll probably end up using your library, it looks really good. Thanks for sharing.

</comment></comment></comment></comment><comment><USER8> <http://ycombinator.com/ideas.html> #22 then <http://news.ycombinator.com/item?id=429477> (Ask HN: What can't you do in Excel?) then <http://news.ycombinator.com/item?id=897701> (Ask HN: who will buy PG's startup idea #22?)

I would love to work in this. In Lisp.

</comment><comment><USER9> In Python:

<http://pycells.pdxcb.net/>

As I mentioned in the Python spreadsheet thread (where I'm assuming this was found), this package has worked for everything I've tried to do with it but I do not believe it's maintained.

Does anybody know of something similar for Javascript? A cells implementation would be preferred, but a spreadsheet engine will do.

<comment><USER7> I'm not familiar with Cells or Pycells. Do you have any idea how this compares with Phillip Ebys Trellis[1] library?

[1] <http://pypi.python.org/pypi/Trellis/0.7a2>

<comment><USER9> From the linked page:

> Other Python libraries exist which attempt to do similar things, of course; > PyCells and Cellulose are two. However, only the Trellis supports fully > circular rules (like the temperature conversion example above), and intra- > pulse write conflict detection. The Trellis also uses less memory for each > cell (rule/value object), and offers many other features that either PyCells > or Cellulose lack.

I believe PJE was the mentor for PyCells and Trellis is PJE's take on the problem. I was following PyCells from its announcement since it seemed useful and if PJE isn't the mentor, he was heavily consulted.

</comment></comment></comment><comment><USER10> When I clicked to download the source, there was an error. Is funny that common-lisp.net use python, and use it with errors.

Just click on [http://common-lisp.net/cgi-bin/viewcvs.cgi/cell- cultures/?cv...](http://common-lisp.net/cgi-bin/viewcvs.cgi/cell- cultures/?cvsroot=cells)</comment>


Ask HN: What makes IT certificates more valuable than most programmer certs? - <AUTHOR> Generally speaking, when people discuss IT certificates the are usually seen as a good thing to have for IT jobs. When people discuss programmer certificates, though, they tend to say that they don't hold water, or worse, it's a waste of your money. So what generally is wrong with programming certs? Or rather, why are they perceived as not valuable? <comment><USER2> > when people discuss IT certificates the are usually seen as a good thing to > have for IT jobs

Are they? Which certificates exactly? The only ones that come to my mind are Red Hat's, Cisco's, and Oracle's (for the database), and only the high level ones are conveying any sort of proficiency.

</comment><comment><USER3> Developer certifications: If you can code, do you really need them? [https://techbeacon.com/developer-certifications-friend-or- fo...](https://techbeacon.com/developer-certifications-friend-or-foe)

The 4 most in-demand programming languages [https://www.creativebloq.com/advice/the-4-most-in-demand- pro...](https://www.creativebloq.com/advice/the-4-most-in-demand-programming- languages)

15 Top-Paying IT Certifications for 2018 [https://www.globalknowledge.com/us- en/content/articles/top-p...](https://www.globalknowledge.com/us- en/content/articles/top-paying-certifications/)</comment>


Our Methane Problem Could Be Bigger Than Scientists Thought - <AUTHOR> https://www.bloomberg.com/news/articles/2020-02-19/new-research-says-humans-may-have-an-even-bigger-methane-problem <comment><USER2> Not surprising to me - the NYT article last year where they went around filming giant methane leaks from seemingly innocuous natural gas wells made it seem like the industry is treating it like a giant head in the sand kind of problem. If they don't measure it then they can't be accountable to it, but it's pretty easy to see the problem is huge.

[https://www.nytimes.com/interactive/2019/12/12/climate/texas...](https://www.nytimes.com/interactive/2019/12/12/climate/texas- methane-super-emitters.html)

</comment><comment><USER3> The headline makes it sound like this is bad news, but isn't this actually pretty good news?

Total methane emission estimates are unchanged, but now we know that humans are responsible for a larger fraction. This means that we have the potential to reduce total emissions more than previously believed!

</comment><comment><USER4> Not surprising, considering the massive increase in natural gas extraction in the recent years...

</comment><comment><USER5> Why do I feel like I've read this headline a bunch of times before?

<comment><USER6> Same. This article was less than two weeks ago: [https://news.ycombinator.com/item?id=22268611](https://news.ycombinator.com/item?id=22268611)</comment></comment>


Higher-Order Functions in JavaScript - <AUTHOR> http://eloquentjavascript.net/05_higher_order.html <comment><USER2> I recently read this, worked through the examples, and was pleasantly surprised at the depth and quality. Subsequently we recommended it to our 800+ member meetup group as the top learning resource for new JS programmers. The content is enlightening and enjoyable and could be just the thing for reaching a breakthrough in understanding about functional programming.

<comment><USER3> Eloquent Javascript was the first programming book that I ever worked through online and subsequently went and bought because I was so happy with it. I was young and playing Diablo 2: LoD and stumbled upon some bot that would let me do Mephisto runs for loot all night, I was amazed with it and went back to the forums where I'd found it and did some reading, this was the book that they recommended for anyone who was interested in learning some programming.

I'd have to say that this book was one of the more gentle and concise introductory books I've ever read and so far I couldn't be happier that it was my personal introduction to JS and programming. It certainly set me leaps ahead in the JS section when I attended a web dev bootcamp. It is my personal go to for any of my friends who approach me about their interest in getting started with programming. Big Nerd Ranch books are a close second but I've only recently found them and begun reading them.

<comment><USER4> I profoundly appreciate the nostalgia you brought back by talking about Mephisto runs.

</comment></comment></comment><comment><AUTHOR> It's also worth mentioning Lodash[1] if you're new to this idea of functional programming. They have an awesome description of each function name and they're very closely aligned to the functional terminology.

[1] - [http://lodash.com/docs](http://lodash.com/docs)

<comment><USER5> Also this ? [http://ramdajs.com/](http://ramdajs.com/)

<comment><USER6> Also this: [http://facebook.github.io/immutable- js/docs/#/](http://facebook.github.io/immutable-js/docs/#/) and this: [http://swannodette.github.io/mori/](http://swannodette.github.io/mori/)

<comment><AUTHOR> Wow, this is wonderful input. I always love finding an overlap in terminology. If you find the same description of something in more than two places, I think it's safe to say that it's some kind of standard definition.

</comment></comment></comment></comment><comment><USER7> I love this book for it's, ah, eloquent and inclusive way of describing more advanced JS topics. Definitely of value, even for the more experienced JS dev.

</comment><comment><USER8> On the topic of functional JavaScript, a few interesting articles and books I have been reading that have helped shed more light on this subject matter. I particularly enjoyed the Functional JavaScript book [2].

[1] - [http://www.cse.chalmers.se/~rjmh/Papers/whyfp.pdf](http://www.cse.chalmers.se/~rjmh/Papers/whyfp.pdf)

[2] - [http://shop.oreilly.com/product/0636920028857.do](http://shop.oreilly.com/product/0636920028857.do)

[3] - [http://stackoverflow.com/questions/36504/why-functional- lang...](http://stackoverflow.com/questions/36504/why-functional-languages)

[4] - [http://scott.sauyet.com/Javascript/Talk/2014/01/FuncProgTalk...](http://scott.sauyet.com/Javascript/Talk/2014/01/FuncProgTalk/#slide-0)

</comment><comment><USER9> > The second relies on two external functions and is one line long.

> console.log(sum(range(1, 10)));

> Which one is more likely to contain a bug?

I'd say the second one. Because the first one is totally transparent. The second one relies on functions I can't see. Especially the "range" function may cause problems because here it generates the full range, including both delimiters, unlike the range function in e.g. python.

EDIT: functional programming is extremely useful, but I don't think this example really highlights the most important advantages.

<comment><USER10> but sum and range are able to be tested in isolation and will be reused across the application, making a bug in them more visible - rather than repeating the logic of the loop in every instance where you need a loop. Also, when maintaining the code later, the signal to noise ratio is much higher, you can see exactly what is being attempted, not the implementation details of it.

There are certainly times when you need to see the implementation details or that your needs don't fit the prescribed and available functions (eg, range being exclusive vs inclusive), but then if that is the exception rather than the rule, it will serve as another indicator when you come across that code that `this is doing something different than usual`, so pay attention to the details.

<comment><USER11> and then you forget range(1, 10) is a half-open interval because it's meant to be used with `length` as in `range(0, foo.length)`

<comment><USER12> That part has always annoyed me.

But then Python beat me into submission with its seductive collection comprehension... Now I see it as a standard convention, like indexing should start with 0.

</comment></comment></comment></comment><comment><USER13> In ES6 there are iterables that one uses `for...of` with. Rauschmayer of 2ality has said that `for...of` should be used instead of forEach and I wonder how that will affect composability in functional programming. I quite like the concept of iteratables and creating data structures that can make use of for of and generators. I just have thought about how that affects functional style programming.

<comment><USER14> for..of simply desugars into getting an iterator from the iterable and then iterating it, right?

To compose iterables, you'd presumably work with iterators directly instead of the sugar.

</comment></comment><comment><USER15> in case anyone missed it, it's by the author of CodeMirror [1], Acorn, Tern, etc. [2]. He also contributes to Rust.

[1] [https://github.com/codemirror/codemirror](https://github.com/codemirror/codemirror)

[2] [https://github.com/marijnh](https://github.com/marijnh)

</comment><comment><USER16> The theory is good, but the specifics of JS syntax, the type system, and the lack of support from the standard library make functional programming much less fun to use than in proper functional languages or even C#.

</comment><comment><USER17> great book!</comment>


Makeschool admissions policy: the beginning of institutionally supported ageism? - <AUTHOR>

On their admissions and FAQ page [1], the following may be found:
"What age do I have to be?
Our typical student is aged 18-25, 18 is the minimum age (for legal reasons) but there's no upper age. Whether you have a CS degree and want to beef up your skills or you're a high school grad and want to jump into your career, you should apply!"
[1] https://www.makeschool.com/admissions
Startups in the Valley have a documented problem with ageism (sexism too, but let's stick to one issue at a time for now). Makeschool is not an employer, so the same rules about age discrimination do not apply for their admissions. They say that there is no upper limit for admissions. However, by explicitly providing an age range like this, it gives the impression that it will be difficult for older students to be accepted, and that they may feel out of place if they were accepted. It easily intimidates them from applying in the first place.
As Makeschool is trying to position themselves as a kind of talent pipeline into the start-up ecosystem with their partners/investors, this feels like the beginning of institutionally supported ageism in the hiring process. Makeschool is funded and/or partners with some of the biggest names in town, who also support a lot of other companies. If these companies start saying that they only take graduates from this program or programs like it... well, it all seems set up to exclude otherwise talented people discovered their love of programming or entrepreneurship after the age of 25.
I just really don't like seeing a recommended age range on a program for which there is no practical reason to do so. People can learn a new skill at any point in their life, not just their late teens or early 20s. <comment><USER2> You might want to publish your own blog and try submitting that... But to your point "our typical student is aged 18-25" is true of just about every university on the planet. I don't see how stating a fact is ageism. Are you claiming we have to hide demographic information because _____?

I think you've completely misread and then misrepresented their statement. They specifically say they want all age ranges 18+.

<comment><AUTHOR> Sure, most _university_ students fall into that age range.

But, why are they only interested in taking current first-time university students onto their roster in the first place? What about career-changers and so on? A lot of people go back to school, at some point, for just that purpose.</comment></comment>


OpenPDF 1.2.1 released - <AUTHOR> https://github.com/LibrePDF/OpenPDF/releases/tag/openpdf-1.2.1 <comment><AUTHOR> OpenPDF 1.2.1 has been released! DSS is now able to produce PAdES Baseline Profiles B/T/LT/LTA with OpenPDF.</comment>