A Badass Way to Connect Programs Together - <AUTHOR> http://joearms.github.io/2016/01/28/A-Badass-Way-To-Connect-Programs-Together.html <comment><USER3> I think OSC is interesting, but Armstrong goes too far in his disparagement of XML and JSON:

> I think it is totally crazy to send JSON or XML "over the air" since this > will degrade the performance of the applications giving a bad user > experience and higher bills - since ultimately we pay for every bit of data.

If every JSON and XML API switched to OSC, the difference in data usage would scarcely be measurable. First: The vast majority of mobile data is video, audio, images, and application updates. Second: When sent over the wire, JSON and XML are typically compressed with gzip or deflate.

And let's not forget: JSON and XML have some significant advantages over most other serialization formats. They're ubiquitous. Practically every programming language has libraries to parse and generate them. Practically every programmer knows how to work with them. They're human-readable. No special programs are needed to view their contents.

In other words, JSON and XML are only "wasteful" if you don't count developer time. Once you do, it suddenly makes a lot of sense to "waste" hardware resources. After all, programmers are expensive. Hardware is cheap.

<comment><USER4> > And let's not forget: JSON and XML have some significant advantages over > most other serialization formats. They're ubiquitous. Practically every > programming language has libraries to parse and generate them.

One of the interesting things about Erlang is it has binary pattern matching. Matching any binary in it is just as trivial or even more trivial than parsing json in other langauges.

Here is what an IP packet parsing might look like:

        <<4:4, HeaderLength:4, _DiffServ:8, _Length:16, _Identification:16,
          _Flags:3, _FragOffset:13, _TTL:8, Protocol:8, _HeaderChecksum:16,
          SrcAddr:32/bits, DstAddr:32/bits, OptionsAndData/bytes>>

It looks almost like casting a binary blob to a C struct, but you can do even crazier things like take Length and match it later in the pattern, if it specifies a length prefixed binary, for example.

> the difference in data usage would scarcely be measurable

It depends. See, Joe's background is from Ericsson. Their stuff controls access of 50% of world's smartphone <-> internet traffic. When people say "but who uses functional languages in the industry?" the answer is if functional languages won't work, chances are high, you won't see picture of cats on your smartphone.

But the idea is that mobile bandwith is still a precious resourse. Even if our CPU and hard drives are getting bigger. That is one shared resource that is expensive. Maybe if a 1M clients use JSON vs a binary protocol doesn't make a difference much for some startup, when we talk about billions of connected devices talking over radio waves, those things add up. Well, also, game servers use UDP and binary often because of latency. Facebook knows a thing or two about chatting with lots of users, so they use Flatbuffers [https://code.facebook.com/posts/872547912839369/improving- fa...](https://code.facebook.com/posts/872547912839369/improving-facebook-s- performance-on-android-with-flatbuffers/) that's binary as well.

<comment><USER5> I think it's also important to note that json isn't exactly something that can be streamed while parsed.

<comment><USER6> From personal experience, I can tell you that is can. The i3 window manager in Linux comes with a status bar program called i3bar. It also includes a program called i3status which constantly feeds i3bar information to display via JSON through a standard pipeline.

I wrote an i3status replacement that does exactly this. It sends JSON to STDOUT at a set time interval. i3bar takes the JSON as it comes through STDIN and changes the look of the bar as it's read.

</comment></comment></comment></comment><comment><USER7> Major supporter of this thinking, and did several sketches in this direction a few years ago: [http://www.illucia.com/](http://www.illucia.com/)

Made of: 1) a suite of interconnectable videogames & apps and 2) physical patchbays to connect them

Came from thinking about software like modules in a modular synth. Playgrounds of interconnectable control structures. Was patching games into samplers, slaving text editors to drum machines, etc.

related writeups: [http://www.illucia.com/faq/](http://www.illucia.com/faq/) another from 2010 or so when I was just starting coding (so a lot of it feels silly now.. but still some related nuggets): [http://www.paperkettle.com/codebending/](http://www.paperkettle.com/codebending/)

<comment><USER8> Side Q: can I ask what typeface you used for illucia?

<comment><USER9> It's 'Square Serif Medium' (Look at the css, or do Right Click => Inspect Element in your browser)

</comment></comment></comment><comment><USER10> Ah OSC, my first encounter with it was with the Make Controller[1] (basically an ARM chip with an OSC service endpoint). OSC always struck me as one of those protocols that did something really useful in the wrong way. It just "feels" awkward to me for some reason and I never quite put my finger on it.

That said it was great fun building a robot with the controller but hard to get asynchronous feedback. If I were doing it again I'd try to figure out a full duplex OSC channel for something like that.

[1] [http://makezine.com/2006/05/11/make-controller- kit/](http://makezine.com/2006/05/11/make-controller-kit/)

</comment><comment><USER11> > This is wonderful news for systems like Node.js whose concurrency model is > non-existent and whose idea of having a fun time is throwing promises into > the future and hoping that nobody breaks them.

Oh so true. I wish I learned Erlang (and to a lesser extent Go) much earlier in my career after wasting so much time with Node. I now laugh when I see people on Twitter/Reddit talk about Node's concurrency as a reason to learn it over other languages.

<comment><USER12> The concurrency model in Node is essentially the reactor pattern. While there are lots of concurrency patterns that you should learn, reactor pattern is also one of them. The big thing to keep in mind is when you should use it and when you should not use it. After you spend time learning about concurrency in Erlang and Go (and practicing it), I recommend doing a mental kata and thinking, "When would the reactor pattern be more appropriate than this." If you answer is "never", then you should go back to Node (or simply implement it in whatever language you like) and practice until you know what it's good for. (Hint: it is quite useful when implementing UIs or anything else that has a series of messages/events that have to processed in linear order. If you wanted to do something else at the same time while having full control over how much resources you are using...).

<comment><USER4> A few places I could see using the reactor pattern over the "concurrency unit (i.e. green process, thread, co-routine) per connection context" is in very high performance scenarios and where callback chains are very short.

Think proxies (haproxy), routers, forwarders, web servers (nginx) etc. Where memory context per connection should be minimal, and everything should be as close as possible to the select/poll/epoll loop.

Funny enough, this also includes demos, quick example scripts, and benchmarks. I wonder if that what hooked most people to the reactor pattern -- small examples in Twisted, Node, etc, look pretty easy and simple. But when you start adding business logic and callback chains evolve into callback/errback trees 10 levels deeps when things get very scary.

<comment><USER13> Funny thing about "high-performance scenarios" is that the reactor pattern is often slower than other patterns. If you want to use the reactor pattern, you have to use asynchronous IO. But, asynchronous IO involves making more syscalls. Blocking IO is actually rather fast. The performance is differences are going to depend on a lot of particulars.

<comment><USER4> > Blocking IO is actually rather fast.

Right. Yeah there was a presentation about Java concurrency patterns about that. Basically dispelling the myth that is everything non-blocking and asynchronous will be faster than the old school blocking thread / socket.

Interestingly, I believe, haproxy and nginx use a hybrid model. They have a worker thread per CPU, all listening to the same socket using epoll from multiple threads! When data arrives they all get woken up and then use a shared mutex to decide which one will handle the request. (Now later kernels fixed that one can have exclusive wake-up across the same socket).

<comment><USER14> Nginx implementation may have changed since the last time I delved into it (and I delved pretty deep), but at least 2 years ago that was not the case. Nginx did have some vestiges of an abandoned multi-threaded implementation attempt from the 0.x days behind compiler flags, but beyond that it was thoroughly single-threaded, but there is a master process which forks itself into multiple processes.

There is a so-called accept_mutex, but I'm pretty sure you can't avoid that if you want to have multiple cores handle connections from the same port. Even Erlang would have to do that somewhere behind the scenes. Newer Linux kernel versions support the SO_REUSEPORT which is meant to address this situation - <USER2> guess this is what you're referring as exclusive wake-up accross the same socket?

<comment><USER15> Interestingly, Java 7's "native non-blocking IO" actually uses exactly that – you have a ServerSocket, and, if a user connects to the server, it spawns a Thread and gives it a normal SocketChannel.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> The basis of the protocol is similar to that of protocol buffers [1]. Though the tag field containing the map/list of segments in data is pretty novel IME.

[1] [https://developers.google.com/protocol- buffers/docs/encoding](https://developers.google.com/protocol- buffers/docs/encoding)

<comment><USER17> Message Pack[0] is another protocol that follows this very successful simplicity.

A leading thought in a lot of this is the "unset and a zero value are equivalent". It simplifies a lot of what the serializer and deserializers have to understand, and places the burden on code generation or libraries rather than complex serialization. It was unnatural for me to think this way, as I take the opposite for memory (record whether something is set or not, don't just assume it equals zero), but on the wire this makes for very compact and backwards compatible messaging.

Cap'n Proto[1] I have not played with, but would love to learn more about to see the advantages and disadvantages between protobuf, msgpack, and capn.

[0]: [http://msgpack.org/](http://msgpack.org/)

[1]: [https://capnproto.org/](https://capnproto.org/)

<comment><USER18> For a standardized version of Message Pack, see CBOR (RFC 7049): [http://cbor.io/](http://cbor.io/)

<comment><USER17> What makes it a standardized version of Message Pack?

Message Pack has a specification that is well documented[0] and even the rfc you refer to specifically states it has different goals (though, eliding specifics with pretty sad generalizations)[1]

[0]: [https://github.com/msgpack/msgpack/blob/master/spec.md](https://github.com/msgpack/msgpack/blob/master/spec.md)

[1]: [https://tools.ietf.org/html/rfc7049#section-9](https://tools.ietf.org/html/rfc7049#section-9)

<comment><USER19> > ...and even the rfc you refer to specifically states it has different goals > (though, eliding specifics with pretty sad generalizations) [link to > RFC7049, section 9]

You find those generalizations sad because that is the _acknowledgements_ section!

If you start from the beginning, you only need to read three paragraphs to see that "Appendix E lists some existing binary formats and discusses how well they do or do not fit the design objectives of the Concise Binary Object Representation (CBOR)." [0]

If we look at Appendix E, [1] we find that section E.2 contains an explanation that you're likely to be more satisfied with. [2] However, before you go off and read section E.2, I _strongly_ urge you to read the couple of paragraphs in Appendix E, first. The authors of RFCs generally tend to try hard to remove redundancy in their prose, and later sections _often_ elide information covered in earlier sections.

[0] [https://tools.ietf.org/html/rfc7049#section-1](https://tools.ietf.org/html/rfc7049#section-1)

[1] [https://tools.ietf.org/html/rfc7049#appendix-E](https://tools.ietf.org/html/rfc7049#appendix-E)

[2] [https://tools.ietf.org/html/rfc7049#appendix-E.2](https://tools.ietf.org/html/rfc7049#appendix-E.2)

<comment><USER17> The sad generalizations are in E.2

Things like stating that "evolution has stalled" while also recognizing that the format is stable is hand wavy when you consider we're discussing things that go over the wire and even end up on disk. Yes, stability should be a goal.

The real difference between CBOR and MessagePack is that CBOR wants to be "schemaless" in the _applications_ themselves instead of just on the wire. They hold up json as the example format for something that doesn't require schemas, and yet I see "json schemas" being published[0], and even people trying to standardize the schema format[1]! Looking at any modern JSON API would tell you that "schemas" in the xml sense are not required, but applications all must be very knowledgeable of the format.

Having a data type for "PCRE" is just insanity on the wire, and I can't imagine the type of API you'd be publishing where you would accept URLs or Regular Expressions or Text or Binary, _AND_ want to be able to decode them into proper types in memory all without applications on both ends knowing that ahead of time.

Which brings me back to my initial point: CBOR is not just a "standardized Message Pack", it's a very different approach to what they think the applications on either end of a protocol should be doing.

[0]: [http://json-schema.org/](http://json-schema.org/)

[1]: tools.ietf.org/html/draft-zyp-json-schema-03

</comment></comment></comment></comment></comment></comment><comment><USER20> OP hasn't addressed the fact that UDP will willfully drop packets and send them out of order. What if I need to stream some data? What if I care about the order my IPC messages arrive in?

<comment><USER21> Consider SCTP as an alternative if you want messages but want them in order.

<comment><USER22> Also QUIC[0] should be a good candidate to be used instead of UDP.

[0] [https://docs.google.com/document/d/1lmL9EF6qKrk7gbazY8bIdvq3...](https://docs.google.com/document/d/1lmL9EF6qKrk7gbazY8bIdvq3Pno2Xj_l_YShP40GLQE/edit)

</comment></comment></comment><comment><USER23> OSC is in use for a lot of DIY hardware interfaces fed into custom modular (software) synths, DSP, or weird art programs using Pure Data, Max/MSP, Super Collider, Ableton Live and MIDI bridges to other pieces of sound plugins or external music hardware.

Nice to see a good write up on this project!!

[http://en.flossmanuals.net/pure- data/ch065_osc/](http://en.flossmanuals.net/pure-data/ch065_osc/)

[https://puredata.info/community/pdwiki/OpenSoundControl](https://puredata.info/community/pdwiki/OpenSoundControl)

[http://livecontrol.q3f.org/ableton- liveapi/liveosc/](http://livecontrol.q3f.org/ableton-liveapi/liveosc/)

</comment><comment><USER24> > nobody does this properly for purely local applications.

You may be interested in qmail and its sub-applications, which does it properly IMHO. It's a great example of the article's key point, which is the value of simple messaging.

</comment><comment><USER25> Wow, odd that this comes up as I was casting around in another domain, but my working assumption is that I would implement my GPU processing library using a 'tags data' style binary protocol.

However, I was thinking of it more from a Amiga COPPER instruction list perspective, but it amounts to the same thing.

The really cool thing is that approaches like this tend to be language- agnostic, easy to program to, and extremely fast. All points raised in the article.

<comment><USER26> Tag lists more generally appears all over AmigaOS as well - especially as they started running into limitations with the existing APIs that depended heavily on fixed structs with AmigaOS 2.0, they more and more opted for adding taglist parameters to avoid running into the same situation again.

And while it's request-response based over message ports, personally I see AREXX ports in most larger Amiga applications as a good example of the overall approach of cooperating processes to build larger systems.

Dbus and similar systems today has lots of great functionality, but what they miss is what ensured AREXX was "everywhere": It was trivially simple to support.

Pointing to the simplicity of OSC in the article really resonated with me, because a lot of these systems are far less useful than they could be because it's extra work. Simple systems on the other hand end up shaping application structure:

AmigaOS was massively message based from the outset: Message ports and messages were "built in" and used all over the place. E.g. when communicating with filesystems or drivers or the GUI you do it via messages.

Then came AREXX and there was suddenly a standard message format for RPC - both application-to-application and user-to-application.

If Amiga-applications were message oriented before, a lot of "post-AREXX" Amiga applications took it to the next level by being shaped around a dispatch loop that included not only e.g. GUI updates, but defining internal APIs that exposed pretty much every higher level action in the application, and used that as an explicit implementation strategy.

</comment></comment><comment><USER27> The best thing about OSC IMO are the many wonderful configurable controllers. When I was messing with OSC a few years ago TouchOSC [http://hexler.net/software/touchosc](http://hexler.net/software/touchosc) was my favorite

It is really fun to use these beautiful Star Trek looking interfaces to make your robots move around for example ;)

<comment><USER28> TouchOSC has been some kind of model app for me - was available on the iPad very early and is still going strong to this day while countless other controllers came and went.

</comment></comment><comment><USER29> So what happens if you want to transmit some data in a nested hierarchical format? Just pack it into some (ad-hoc?) higher level protocol inside one of the flat pieces?

Seems like a recipe for inevitable incompatibilities when two languages no longer have codecs for the new underspecified layered format.

<comment><USER30> Although the article may not have made it clear, OSC is designed primarily to pass around _control signals_ , rather than arbitrary, _non-contextualized_ data. Control signals have inherent meaning, like "fast-forward <n> seconds", "set color to <x>", etc. The important distinction is that "set color to <x>" (a command) is distinct from "{ 'color': 'x'}" (non-contextualized data).

The layout of _controls_ is hierarchical in the protocol; each control has an associated endpoint, which looks very much like a unix file path. For example, to unpause an audio player, you would send the message "/player/is_playing/set t" (or f, to pause). If you wanted to control the bands of a 10-band equalizer, you could implement that as "/player/eq/band/4/amp/set 0.5" (there are certainly other ways to approach it too).

If you want to send control signals to multiple parts of the audio player at the same time, you could use a "bundle" composed of a separate message for each parameter you're altering. All the messages will then be handled simultaneously.

Because of this, data does not need to be hierarchical. If you _really_ want to, you can consider the endpoints to be "keys" and the control data to be "values" in a hierachical key -> value map, just to prove that everything you could do with hierarchical data is still possible using OSC. But I would encourage you to not think of it in that abstraction because the fact that OSC is built to pass messages, and not non-contextualized data is a large part of what differentiates it from other protocols like json streaming.

</comment></comment><comment><USER31> For an especially bad-ass implementation of OSC, check out the SuperCollider project at [https://supercollider.github.io/](https://supercollider.github.io/). SuperCollider is a programming language for audio synthesis/analysis, and algorithmic music composition. It works using a client-server paradigm, and they communicate with each other via OSC.

Shameless plug time! I've been using SuperCollider to design a machine- learning solo electroacoustic music performance platform, called Sonic Multiplicities. You can hear it at [http://www.sonicmultiplicities.net/](http://www.sonicmultiplicities.net/).

</comment><comment><USER32> Reminds me a lot of bencoding, which is not as popular as should (outside of bittorrent of course)

<comment><USER13> It's unfortunate that bencoding doesn't support text strings.

</comment></comment><comment><USER33> Binary protocols are only cheap if your time is free. If you can't connect to your service via telnet, you're going to spend a lot more time debugging. The only way to fix this is to develop a textual representation of your format, and write your own telnet, which is feasible, but nobody seems to have done that to OSC.

Also, I find Armstrong's fanaticism grating, and am inherently distrustful of anybody who claims that their community and language has all the good ideas. Because odds are, they're wrong.

<comment><USER34> > Also, I find Armstrong's fanaticism grating, and am inherently distrustful > of anybody who claims that their community and language has all the good > ideas. Because odds are, they're wrong.

You might find this[0] blog post by Armstrong interesting, wherein he comments on some things that were/are done wrong in Erlang. I would also argue that this 'fanaticism' is made to look more severe as you can find at least 4 different talks where Armstrong argues for the same things over and over.

In any case, Armstrong is actually very humble, which I think seems fairly obvious if you actually watch a few talks and read more than a couple of blog posts by him.

Could you point to something specific where you feel Armstrong misrepresents a strong side of Erlang, or is it just a general thing?

(Edit: Just to add, I think it should be said that the Erlang team created their favorite language and that it probably represents the most useful language in use today to them, so I don't think it's surprising that they'd see more good ideas there than in any other language. On top of that Armstrong is a very straight shooter, it seems, so I think this might be something to take into account.)

0 - [http://joearms.github.io/2013/05/31/a-week-with- elixir.html](http://joearms.github.io/2013/05/31/a-week-with-elixir.html)

<comment><USER33> It isn't so much that Joe doesn't think that erlang did anything wrong, it just feels like he believes that erlang's way of doing things, and erlang's ideas are the only good way of doing things, and are the only right way of doing things. This makes me suspicious, because that is almost never true of any language or community.

</comment></comment></comment><comment><USER35> I don't understand his emphasis on session on TCP and UDP. A session requires nothing more than a "unique" number to identify it. You can certainly have session in UDP; just attach a session number on all the messages belonging to the session. And you can certainly be sessionless in TCP; just close the connection after each message. HTTP request has no session by definition and it sits on top of TCP.

<comment><USER4> > just close the connection after each message.

That is if you don't expect to handle more than one connection at a time in a reasonable way. You can certainly do this loop:

       server_socket = create_and_listen_on_socket(...)
       while True:
          csock = server_sock.accept()
          csock.send(process(csock.recv()))
          csock.close()

TCP setup and teardown is not too cheap (especially compared to sending UDP packets).

<comment><USER35> UDP is certainly faster than TCP, no question about it, because of different levels of quality of service. However, coding for both is similarly simple, given the same requirement for short receive-only message. TCP session has nothing to do with the complexity. The complexity comes in how to do process() in parallel.

A receive-only message can be handled in TCP:

       server_socket = create_and_listen_on_socket(..., MAXCONN)
       while True:
          csock = server_sock.accept()
          msg = csock.recv()
          csock.close()
          process(msg)

A UDP loop has similar steps, minus the accept and close. The complexity to use threads or async to run process() is the same for UDP and TCP.

For a normal data volume remote command protocol, the simple TCP loop is more than adequate. Just set a reasonable MAXCONN to queue up client connection requests, which can drop connections if there are too many requests, just like UDP dropping packets.

Edit: I don't believe lock can be avoided in Sonic Pi server when handling concurrent incoming commands, whether it's written in Erlang or not. Sonic Pi I believe has a single audio device, which makes it a shared resource. Concurrent access to a shared resource has to be managed with lock somewhere along the call path. In that case a single thread TCP server is perfectly fine, serving as a lock as well.

<comment><USER36> Shouldn't you handle fragmentation? I don't think TCP guarantees that csock.recv() will give you all of the message.

<comment><USER35> Fragmented IP datagram is re-assembled at the IP layer before it is handed up to UDP or TCP layer. If it can't be re-assembled, the datagram is considered lost.

UDP is unreliable and has small packet size. The TCP code is emulating that simple requirement. Why expand the requirement? Looping to read fully would block on one connection. One rogue client would hold up the whole server.

<comment><USER36> I looked it up, and it seems that while IP will reassemble packets, there is no 1-1 mapping between _send_ calls and IP packets, when using TCP.

You are only guaranteed to get the bytes in the correct order but you have to find the boundaries between messages yourself.

<comment><USER35> That's correct. A send call could call with a 1GB buffer and the IP layer would have to break it up into multiple datagram packets. That's the nature of TCP. Again sending large message is expanding the requirement beyond what is capable in UDP, while we were striking to emulate UDP in sending short unreliable message.

</comment></comment></comment></comment></comment></comment></comment><comment><USER37> Can anyone explain what a sequential programming language is?

Context here:

"I guess I'd underestimated the difficulty of implementing Anything-over-TCP in a sequential language. Just because it's really really easy in Erlang doesn't mean to say it's easy in sequential languages."

<comment><USER38> Imperative programming. Lists of statements, vs Erlang's declarative programming, where you describe the program without specifying control flow.

<comment> white-flame Erlang is absolutely a fixed in-order control flow programming language, on message receipt. It is (generally) referentially transparent, but not declarative.

<comment><USER38> Oh, I don't know much about Erlang so I thought for sure that's what he meant. What was that supposed to mean, then?

</comment></comment></comment></comment><comment><USER39> My 5¢ is that 9P2000 protocol would be much better and canonical example.

Also I hope some day one would show how to implement most of functionality of Hadoop orders of magnitude more effeciently in bunch of Plan9 shell scripts. Or in Erlang with 9P protocol driver.

</comment><comment><USER40> Is there any similarity between "tag-length-value" and netstrings (1997)?

</comment><comment><USER41> Woah, funny I see this. I've been working on a distributed shell, basically trying to combine sockets and pipes to create remote pipes, aka inter-host piping.

Something like:

      $ echo foo | host2:grep bar | host3:grep baz

<comment><USER42> > _basically trying to combine sockets and pipes to create remote pipes_

Sockets, or ssh? To get a remote shell, you're going to want ssh.

</comment></comment><comment><USER43> From the title I thought that the ultimate monad tutorial had finally arrived.

</comment><comment><USER44> The problem with flat messages is that optional composite types can be partially present.

</comment><comment><USER45> gRPC seems like a good alternative.

</comment><comment><USER46> Title probably should be edited to remove "Joe Armstrong: ". He might be badass, but he isn't a way to connect programs together.

<comment><USER11> I read the article because it said Joe Armstrong. That way I knew it was someone who knows what he's talking about. Especially given the topic.

<comment><USER47> Same here. If I have not seen "Joe Armstrong" in the title I wouldn't have clicked on it.

</comment></comment></comment><comment><USER48> | ?</comment>


Bicycle created out of recycled cardboard for $9 - <AUTHOR> http://www.geek.com/articles/geek-cetera/bicycle-created-out-of-recycled-cardboard-for-9-20120725/

<comment><USER2> Love the wife support: "if you don't try this you are going to go crazy and then will make me crazy... so just try it"

</comment><comment><USER3> This is really awesome, well done cleantech product</comment>


Good Old Neon by David Foster Wallace [pdf] - <AUTHOR> http://stanford.edu/~sdmiller/octo/files/GoodOldNeon.pdf

<comment><USER2> My favorite DFW essay of all time is this one: [http://harpers.org/wp- content/uploads/2008/09/HarpersMagazin...](http://harpers.org/wp- content/uploads/2008/09/HarpersMagazine-1996-01-0007859.pdf)

(and previous discussion: [https://news.ycombinator.com/item?id=6694749](https://news.ycombinator.com/item?id=6694749))

<comment><USER3> i remember reading that one in "Supposedly Fun Thing I'll Never Do Again", and indeed it is awesome. My favorite is from the same volume, and i can't remember the name but it's about a day spent at a State Fair with an old (female) friend who he refers to as "Native Companion"\--so excellent that for a while after reading it i wanted to become a carnie.</comment></comment>


David Grant aka Starchy's Unusually Exciting Resumé - <AUTHOR> https://docs.google.com/document/pub?id=1YY1btK2kvl4CneWcMhVPhfPa0M78fl3rppbbD4OjJx4&pli=1

<comment><USER2> I assume (but assumptions have bitten me before) nobody likes boring resumes. Can anybody provide some feedback with respect to the tone of this resume? Does it say "good-humoured employee who can still enjoy himself while playing by the rules", or is it more "this guy doesn't take his job hunt seriously"?

<comment><USER3> FWIW, this resume got me an offer on my dream job (the contract isn't signed yet, so I don't want to say what/where). I can't say for sure I wouldn't have pulled it off with a boring one, but it sounded like it helped get my foot in the door.

If I wanted to work at, say, a bank, or a military contractor, or a big- whatever consulting douchery, I wouldn't have bothered. Since I want to work with smart, creative, like-minded people, I thought expressing my own personality more honestly than on my old resume might be a good approach.</comment></comment>


4 Types of Apps That Never Succeed - <AUTHOR> http://www.entrepreneur.com/article/238711

<comment><USER2> This article is incorrect.

1 - Lots of apps don't solve any "problem". Lots of apps don't sell anything other than ad space. Some of them succeed

2 - Lots of 'Apps' can be successful with one founder. Perhaps this writer means "startups"? I'd say most entrepreneurs would rather go it alone than make a bad founder choice.

3 - Sometimes all you need is to remove a single pain point to be a world apart from your competitors. Whatsapp was just another messaging app. But it made it easier to find your friends, by using your phone number and contacts to quickly 'seed' your network. Boom.

4 - The one valid point. If you can't explain it to someone, how do you sell it?

</comment><comment><USER3> Intrested in the single founder theory, often creators have such strong visions on how something will work that it drives other co-founders away. Some call it stubbornness I guess.

<comment><USER4> It comes down to percentages. I think what the author is trying to say (and referencing others) is that your chance of success is lowered by being a single founder vs a team. He references the support network and skill sharing. I would argue that a large additional part of the value of co-founders are that by having to at least convince someone else of your decisions, you avert the true howlers. Similarly, you have someone that validates your priorities (really, assessing another shade of green on the logo vs calling the customer/PR/etc?).</comment></comment>


Last Refuge: A Bay Area RV community bands together to fight City Hall - <AUTHOR> http://extras.mercurynews.com/lastrefuge/ <comment><USER2> >his rent in East Palo Alto doubled to $4,000 a month

It'd be repetitive to observe how insane that is so I'll say it's going to be hard to beat interests with that much money.

Maybe if prop 10 had passed there'd be some glimmer of hope.

<comment><USER3> Rent control is a terrible policy and it is good for California that Prop 10 failed. The only solution is to allow more housing to be built.

<comment><USER2> Landlords opposed it and tenants put it on the ballot, it is unlikely all parties were acting against their own interest.

Rent-control has been essentially banned since 1995 yet housing costs have exceeded wages during that time. It's also quite extreme to claim that rent- control is so bad for every possible community everywhere that it must be universally outlawed.

Towns which now have fewer construction restrictions than in '95, also have raising land costs.

Pricing of necessary goods differs from ordinary goods.

The expanding and primarily ideologically driven Lezze-Faire approaches have clearly failed in both medicine and housing. And while the US might be growing tired of wasted GDP on mediocre medical outcomes, it is clear the society will tolerate vastly more homelessness and degradation in housing conditions, regrettably.

<comment><USER3> If you think we have had laissez-faire housing policies you're completely wrong. Housing policy is probably less free than any other part of the market. We have an enormous number of zoning laws that prevent people from building what they want to build on the land they own. Whenever new housing projects are proposed they get locked up in court for years because the existing homeowners feel entitled to freeze their neighborhoods in stasis so they will never change.

Meanwhile the most expensive Bay Area cities are the ones that have rent control, because rent control is a form of price control and all price controls create shortages. Why would any reasonable person want to invest in building housing when the city government gets to tell them how much they can charge for rent?

<comment><USER2> >Why would any reasonable person want to invest in building housing when the city government gets to tell them how much they can charge for rent?

Why do landlords oppose rent control if it will raise prices? Why do tenants favor it?

Theories notwithstanding, it simply is untrue that rent control halts development. New York city has had rent control for generations and has had an abundance of development. At this moment more than 2 million units are under some form of rent control.[0]

>the most expensive Bay Area cities are the ones that have rent control

This is a myth. The 5 most expensive Bay Area rental areas are in Sunnyvale, Mountain View, Cupertino, Foster City, Palo Alto. None of which have rent control. Of the top 20, only 4 are in SF and 1 in Berkeley.[1] And comparing medians, Berkeley is cheapest[2].

And while relaxing construction requirements will help, the over valuation of land guarantees the effect will be small. For example, this slum centered small triangular dirt lot is 1.6million [3]

[0][https://en.wikipedia.org/wiki/Rent_control_in_New_York](https://en.wikipedia.org/wiki/Rent_control_in_New_York)

[1] [https://www.sfgate.com/expensive-san- francisco/article/most-...](https://www.sfgate.com/expensive-san- francisco/article/most-expensive-zip-codes-San-Francisco-Bay- Area-13197633.php#photo-16304014)

[2][https://sf.curbed.com/2018/5/3/17316196/berkeley-rent- median...](https://sf.curbed.com/2018/5/3/17316196/berkeley-rent-median- numbers-san-francisco-2018-cost)

[3] [https://www.zillow.com/homes/for_sale/Oakland- CA/pmf,pf_pt/l...](https://www.zillow.com/homes/for_sale/Oakland- CA/pmf,pf_pt/land_type/2111233543_zpid/13072_rid/globalrelevanceex_sort/37.823904,-122.261031,37.805732,-122.292703_rect/14_zm/)

</comment></comment></comment></comment></comment><comment><USER4> This is a link to the slashdot summary; the original article is [http://extras.mercurynews.com/lastrefuge/](http://extras.mercurynews.com/lastrefuge/)

Could @dang or someone else change it?

<comment><USER5> Yes. Changed from [https://news.slashdot.org/story/18/12/22/0418241/two- miles-f...](https://news.slashdot.org/story/18/12/22/0418241/two-miles-from- facebooks-headquarters-working-poor-live-in-trailers). Thanks!

</comment></comment><comment><USER6> Facebook HQ is just across Bayshore (84) and Willow Road from East PA, owned by drug gangs, crushing poverty and classism/racism. It's where people would think to look to buy an NFA Class 3 machine gun or destructive device illegally... I know a homeless RV guy who got a MAC-10 for free from a drug dealer in lieu of repaying a loan. It's an entirely different world from Palo Alto proper just across Highway 101, with $5 million homes, families walking their dogs around the block and kids going to the best universities in the world.

<comment><USER7> > I know a homeless RV guy who got a MAC-10 for free from a drug dealer in > lieu of repaying a loan.

That doesn't sound like free to me...

</comment></comment><comment><USER7> These people have already done the hard part of fitting their lives into an RV. Accept the reality that you've been priced out of the market and drive somewhere you can afford.

<comment><USER3> The article mentioned that many of the RVs are not drivable and the residents cannot afford to repair them.</comment></comment>


Tesla has finished building the biggest battery in the world - <AUTHOR> http://mashable.com/2017/11/22/tesla-battery-powerpack-australia/ <comment><USER2> Am I the only one who is completely fed up of this "cult of personality" mentality in tech and tech-related media?

The article itself is not that bad, but the title here on HN makes it look like he built the damn thing himself. I know everybody is smart enough to understand that there were tons of people involved, but why put Elon Musk instead of, idk, Tesla.

I don't have any problem with any single article on Musk/Jobs/you name it but on aggregate it makes me slightly mad.

EDIT: I'm not trying to take anything away from Musk. He is a very succesful person for many good reasons.

<comment><USER3> To be fair though, if Tesla build say a giant electic powered jet airplane next year, it will happen because Elon Musk decides he wants an electric jet airplane, not because John Doe in the Tesla workshops is really good a welding.

Some people really do make that much of a difference. If none of the other people at SpaceX had existed in 2002 when Elon decided to build the company, so he'd had to hire all different people, there's a pretty good chance we'd still have reusable orbital booster rockets by now.

<comment><USER4> > not because John Doe in the Tesla workshops is really good a welding.

As a counterpoint, the idea and concept of the now-successful HondaJet light jet was developed by a then-mid-level Honda engineer, Michimasa Fujino.

It took nearly two decades for the idea to take form but at least there was capacity for the organisation to evolve an idea from bottom-up.

<comment><USER3> Right, so without Fujino it wouldn't have gone anywhere.

My point isn't that welders are crap, it's that when you have a product that exists because of the singular ambition, drive and vision of a single individual pushing a company to achieve their goal, take that individual out of the picture and there's really nothing left but an undistinguished mob of people. That applies to Fujino just as much as to Musk. I say this as a lifelong card carrying member of the mob of people.

</comment></comment></comment></comment><comment><USER5> Not mentioned in the article - its capacity is 129 MWh. So, at full pelt it would output 100MW for an hour and 20 minutes... ish?

Which I think is about 120 peoples' worth of power. (correction 1MW is not 1KW, so 120,000!)

[https://www.tesla.com/en_AU/blog/tesla-powerpack-enable- larg...](https://www.tesla.com/en_AU/blog/tesla-powerpack-enable-large-scale- sustainable-energy-south-australia?redirect=no)

<comment><USER6> I don't know what Australian electricity needs are, but we averaged 500 W over the last year in our 2-person household. This battery would be good for 10000 similar households for a day or 200000 households "for an hour and 20 minutes...ish".

<comment><USER5> I used UK per capita electrical energy per annum, translated to an average power usage = 0.8KW. 100/0.8 = 120 ish peoples' power use. So yep - off by a mere *1000!

</comment></comment></comment><comment><USER7> I'm impressed with the pace at which they delivered this. If only all government projects were this efficient.

<comment><USER8> 100 days or it's free was the deal. The urgency was the arrival of summer and an ongoing spat between state and federal politicians.

<comment><USER9> I hope it's gonna make Australia more friendly to Tesla, they need some cash right now.

</comment></comment></comment><comment><USER10> I am not sure about that (biggest battery in the world). This looks like a battery "pack" (an array of batteries connected in parallel/series). This looks like just a marketing thing to me, because there is nothing new or special about it. Just "the biggest".

Germany is also working on big batteries for years, but with a completely different strategy. A redox-flow battery with polymers and saline solution ([https://www.nature.com/articles/nature18909](https://www.nature.com/articles/nature18909)) Here is a recent german article about it ([http://www.spiegel.de/wissenschaft/technik/brine4power-so- fu...](http://www.spiegel.de/wissenschaft/technik/brine4power-so-funktioniert- die-groesste-batterie-der-welt-a-1179827.html))

This kind of batteries will hold 700 MWh.

<comment><USER11> Do you understand that the word "battery" means "array"?

<comment><USER12> Or the more polite variation: "'battery' actually means 'array', so it's being used appropriately in this case"

</comment></comment></comment><comment><USER13> I am not a battery expert by any means. But the article says:

> with 100 megawatts of capacity.

Isn't megawatts the measurement of power? Wouldn't Watt Hours be the measurement for capacity? Sometimes people use Apmere Hours also. Like the Chevy Bolt has 60 kWh of capacity.

<comment><USER14> Turns out that power output is one of the most important measures for a battery.

On some applications it's even more relevant than capacity. (If you have an internal combustion car, take a look at its battery, odds are power is written in way larger letters than capacity.)

</comment></comment><comment><USER15> I'm Nitpicking, but it's a silly title. It should at least read, like "Elon Musk and his team built the biggest battery in the world".

<comment><USER5> I also don't think this is "one battery" \- is a warehouse full of large pizzas the biggest pizza in the world?

<comment><USER16> Isn't a battery just a name for the collection of battery cells? Tesla's (the car) battery is composed from a lot of units that can store electricity.

Some RC batteries are just different cells/smaller batteries that are combined together in a nice package.

I think even the batteries in cell phones are composed from different components (some of which doesn't even store energy).

<comment><USER5> Yeah this occurred to me after posting that pedantry. You're right. Even consumer batteries can have multiple cells.

</comment></comment></comment></comment><comment><USER17> that's still pricey at almost $400 per kwh of capacity... or about $0.2 per kwh of storage, several times the grid prices.

<comment><USER18> edit: I too can mix up GW and MW.

<comment><USER19> I would actually be very surprised if they only lasted for 500 cycles. Apple currently says their devices last 1000 cycles and Tesla is very careful with their batteries. They recommend not charging it below and above a certain percentage in their cars and it would surprise me if it was any different in their battery packs (though I believe they do not have such an option -- they just do it automatically). Furthermore, those packs have dedicated cooling and a low discharge rate, and are made for a lot of discharges (unlike iphones, which are made to be purchased every two to four years).

According to Wikipedia[0], the original Powerwall was rated for 1000-1500 cycles and it would suprise me if Tesla's new powerwalls are not better.

So, they should be even cheaper then your estimate, especially when you consider that they will probably be used well after the 20% capacity lose.

[0]: [https://en.wikipedia.org/wiki/Tesla_Powerwall#cite_ref- te201...](https://en.wikipedia.org/wiki/Tesla_Powerwall#cite_ref- te2015-05-06_11-0)

</comment></comment></comment><comment><USER20> aww

</comment><comment><USER21> he will charge it with his own personal energy)) Wonder where he takes so much enthusiasm from)

</comment><comment><USER9> God, I read "biggest building in the world" .. I need to get my gigafactory obsession in check.</comment>


Start up review - case studies of succesful internet startups - <AUTHOR> http://www.startup-review.com/blog/index.php <comment><USER2> Is there anyone doing case studies of *unsuccessful* internet startups? The successful ones are helpful, but it's easy to fall prey to survivorship bias, i.e. there's no guarantee that any commonalities have to do with them being *successful* rather than *internet* or *startups*. A group of unsuccessful startups would be a nice control group, and maybe then we could draw some better conclusions about what makes a startup successful.

<comment><USER3> I second that question.

<comment><AUTHOR> Sounds like a good plan - putting together a wiki of unsuccessful startups and their lessons. Anyone read Boohoo? the story of Boo.com?

</comment></comment></comment><comment><USER4> Oh WOW. This is an absolute gold mine. Case studies of dozens of them. They even have the CEOs of Rotten Tomatoes posting there in response. This is great. Thank you so much.

<comment><AUTHOR> Yeah, also its quite interesting to see the commonalities between the successful startups in different industries - stuff like focusing on cheap distribution first then monetisation, and also seeing how team dynamics and business models evolve. In addition to founders at work - essential reading.</comment></comment>


Scott Adams: The Imagination Interface  - <AUTHOR> http://dilbert.com/blog/entry/the_imagination_interface/

<comment><USER2> > I wouldn't be able to get through an entire press conference without saying > "Blow me."

This is why I'm not invited to sit in on meetings with clients.

</comment><comment><USER3> I'm reading this just at the right moment. I've been staring at a long mental list of skills I don't have. Normally this wouldn't be so gloomy, but when the things you don't know how to do seem like important solutions to problems that exist right now, it can be a bit discouraging.

The post reads a little flip but it feels like a genuine look into how Adams works. I'm going to try it out.

Reminds me of a little mental hack I picked up after watching _Thank You for Smoking_. Never say "I don't know," which sounds defeatist and permanent. Always say "I don't have that information," which sounds transient and correctable. It's a better position from the outside, sure, but most importantly it keeps you hungry to continue learning.</comment>


Twitter Announces "Twttr" — Starts Charging $5/Month To Tweet Using Vowels - <AUTHOR> http://techcrunch.com/2013/03/31/twitter-announces-twttr-will-start-charging-5-a-month-if-you-want-to-tweet-using-vowels/

<comment><AUTHOR> Luckily, Twitter really cares about its users and will offer up the "sometimes Y" free of charge... forever. Also free are vowels in link URLs.

So none of us are affected as long as they continue the free "sometimes Y".

</comment><comment><USER2> Good thing I've been learning Hebrew.</comment>


Show HN: A modern, web based private diary app - <AUTHOR> Hi! I just released https://musepeach.com
If you are into journaling I would love to know your thoughts on the app and if there are any features in particular that you would be looking for.
Also, if do you keep a journal, what is your approach? Do you have a routine or do you write when you have something on your mind?
If you keep a paper journal, your thoughts are more than welcomed too and would also love to hear what makes this option more attractive vs an app. <comment><USER2> You should probably make an anonymous-accessible demo (a guest account, a video or some screenshots). Having to sign-up just to evaluate the look, the feel and the functionality is a turn-off.

<comment><AUTHOR> Good point. Thanks for the feedback!</comment></comment>


Show HN: Find your best times of day - <AUTHOR> https://dailyrhythm.app <comment><USER2> Website could use a description of how this works.

<comment><AUTHOR> Thanks for the feedback. I will update it within 24 hours. Here's a description in the meantime:

The app notifies you regularly (you pick the interval) and you self-report your energy level and mood. It tracks it and gives you a dashboard with graphs and predicted energy-level spikes.

I made this for myself and decided to use the opportunity to learn how to publish an app on the Play store, so it's very much in the early stages. Any and all feedback on how to make it more useful to others is appreciated!

<comment><AUTHOR> Short description added to site.</comment></comment></comment>


Netflix raising prices for 58M US subscribers as costs rise - <AUTHOR> https://www.washingtonpost.com/entertainment/tv/netflix-raising-prices-for-58m-us-subscribers-as-costs-rise/2019/01/15/01145374-18cf-11e9-b8e6-567190c2fd08_story.html <comment><USER2> *Remember that WAPO's owner also owns Prime Video.

<comment><USER3> Well, half</comment></comment>


The corpse of Circuit City will rise again on February 15 - <AUTHOR> https://arstechnica.com/information-technology/2018/01/the-corpse-of-circuit-city-will-rise-again-on-february-15/ <comment><USER2> It helps to read the CEO quotes with the voice of MONSTER TRUCK MANIA

</comment><comment><USER3> +1 for a great post title :-)</comment>


Why is Silicon Valley so awful to women? - <AUTHOR> https://www.theatlantic.com/magazine/archive/2017/04/why-is-silicon-valley-so-awful-to-women/517788/?single_page=true <comment><USER2> Is Silicon Valley worse than, say, Madison Avenue? Wall Street? Hollywood?

Or is it held to a higher standard?</comment>


Rosette – A solver-aided programming language that extends Racket - <AUTHOR> https://emina.github.io/rosette/index.html <comment><USER2> For more on Rosette I recommend watching Emina's keynotes at the (sixth RacketCon) [0] and Clojure/west 2017 [1].

[0]: [http://con.racket-lang.org/2016/#speakers](http://con.racket- lang.org/2016/#speakers)

[1]: [https://www.youtube.com/watch?v=KpDyuMIb_E0&index=25&list=PL...](https://www.youtube.com/watch?v=KpDyuMIb_E0&index=25&list=PLZdCLR02grLp4W4ySd1sHPOsK83gvqBQp)

</comment><comment><USER3> Nice! For constraint solving, I can also highly recommend to look into Prolog for some useful ideas.

For example, consider the use case of Rosetta that is shown on the page. In Prolog, we can express it as follows: First, let us define suitable _operators_ , so that we do not need so many parentheses:

        :- op(200, fy, ∧).
        :- op(200, fy, ∨).
        :- op(200, fy, ¬).

With these definitions in place, we can implement the SAT solver that is shown on the page as follows:

        sat(F) :- interpret(F, t).

        interpret(∧Ls0, T) :-
                maplist(interpret, Ls0, Ls),
                apply(and, Ls, T).
        interpret(∨Ls0, T) :-
                maplist(interpret, Ls0, Ls),
                apply(or, Ls, T).
        interpret(¬Expr, T) :-
                interpret(Expr, T0),
                not(T0, T).
        interpret(t, t).
        interpret(f, f).
        interpret(v(f), f).
        interpret(v(t), t).

        apply(and, Ls, T) :- foldl(and, Ls, t, T).
        apply(or, Ls, T) :- foldl(or, Ls, f, T).

        and(t, t, t). and(t, f, f). and(f, t, f). and(f, f, f).

        or(t, t, t). or(t, f, t). or(f, t, t). or(f, f, f).

        not(f, t). not(t, f).

Thus, we can post:

        ?- sat(∧[v(R),v(O),∨[v(S),v(E),¬t], v(T), ¬v(E)]).
        R = O, O = S, S = T, T = t,
        E = f ;
        false.

On backtracking, all satisfying assignments of variables to truth values are reported. In this concrete case, there is only a single solution.

Interestingly, the Prolog version can not only be used to find satisfying assignments, but also to _generate_ whole formulas that evaluate to true:

        ?- sat(F).
        F = ∧[] ;
        F = ∧[∧[]] ;
        F = ∧[∧[], ∧[]] ;
        F = ∧[∧[], ∧[], ∧[]] .

However, this particular enumeration is called _unfair_ , since there are true formulas that will _never_ be generated.

</comment><comment><USER4> The coolest thing I saw in the applications page is the Chlorophyll DSL compiler for Chuck Moore's green arrays many-core Forth chips.

<comment><USER5> Ohh you're teasing me.

<comment><USER6> Here's the tease:

[https://www.youtube.com/watch?v=zMfdef- nYGY](https://www.youtube.com/watch?v=zMfdef-nYGY)

<comment><USER4> Amazing. Is the Forth interpreter / compiler from Green Arrays?

<comment><USER6> The DSL is a Berkley project:

[http://pl.eecs.berkeley.edu/projects/chlorophyll/](http://pl.eecs.berkeley.edu/projects/chlorophyll/)

</comment></comment></comment></comment></comment><comment><USER7> Could this be added to Hackett, creating, perhaps, Hosette? [1]

1\. [https://lexi-lambda.github.io/blog/2017/05/27/realizing- hack...](https://lexi-lambda.github.io/blog/2017/05/27/realizing-hackett-a- metaprogrammable-haskell/)

<comment><USER8> You might be able to use Rosette to implement refinement types on top of Hackett, giving you (I guess?) Liquid Hackett.

</comment></comment><comment><USER9> Great stuff, love the names for some of the applications, especially Bagpipe.</comment>


The Y chromosome is not vanishing - <AUTHOR> http://www.nature.com/news/reprieve-for-men-y-chromosome-is-not-vanishing-1.15103?WT.ec_id=NEWS-20140429

<comment><USER2> _She says that two species of spiny rats in Japan have lost the mammalian Y chromosome completely, shifting many genes to other chromosomes._

That's interesting! Let's ask the google:

 _Although they have no Y chromosome, this species still has males and females. In the opinion of Asato Kuroiwa, an associate professor at Hokkaido University, "A new gene formed within an autosome, replaced SRY and became the switch that determines gender."_ [0]

[0] [http://ajw.asahi.com/article/behind_news/social_affairs/AJ20...](http://ajw.asahi.com/article/behind_news/social_affairs/AJ201208230009)

<comment><USER3> Curiously, they don't say how the switch in the rats flip-flops. The article notes that crocodile sex is determined by the temperature of the egg, which is also fascinating -- but how would it work in mammals?

<comment><USER2> My reading of that statement would be that the presence of the hypothesized "new gene" would produce a male while its absence would produce a female. After all, that's how SRY works, which it is hypothesized to replace. Presumably this new gene would code for a very similar set of proteins to that coded by SRY.

ISTM that there must have been some period during which both the new gene _and_ SRY were present in the breeding population, and the inheritance of either (or both) would have produced a male. Since we're talking about fairly small populations on these islands, it was just luck that caused SRY to disappear before the new gene. I doubt we'll see this occur in larger, more- geographically-distributed populations.

<comment><USER3> But wouldn't that just make whatever chromosome carries this gene the new allosome? I was reading the statement as SRY moves to an autosome and then some other process regulates expression.

FWIW, biology was the one science course I never took, so I have no idea what I'm talking about.

<comment><USER2> _But wouldn 't that just make whatever chromosome carries this gene the new allosome?_

Haha, maybe so, I guess that's a matter of definitions...

 _I was reading the statement as SRY moves to an autosome and then some other process regulates expression._

SRY translocation is not unheard-of (cf. SRY-positive 46,XX testicular "disorder"), but that's not what Prof. Kuroiwa is saying. He's talking about a change that allows a different gene to code the same proteins that SRY codes. That change could be to the gene in question, or to something else that governs how it is expressed. There's a whole family of genes (SOX) that exist all over, on both allosomes and autosomes, which are similar to SRY, and one would imagine these might substitute for it. Looking around a bit more, I find wikipedia links to a paper [0] that claims the substitute SRY is actually a group of multiple genes on _X_ , which group of genes _did_ translocate from Y. Fascinating stuff!

[0] [http://www.ncbi.nlm.nih.gov/pubmed/12900579](http://www.ncbi.nlm.nih.gov/pubmed/12900579)

</comment></comment></comment></comment></comment><comment><USER4> If the Y chromosomes contains vital genes, then how do women, who don't have a y chromosome, survive?

<comment><USER5> The Y chromosome doesn't contain vital genes, in fact by chromosome standards it doesn't contain many genes at all. The primary role of the Y chromosome is as an activator and modifier of gene programs that reside all over the genome. This makes sense because the male anatomy is mostly just a modification on top of female anatomy (preventing some growth here, promoting some other growth there... done).

That said, I don't think it's possible to create a fully fertile male by forgoing the chromosome and just giving hormones - there might be some very few sex-specific proteins on it, but I think it depends on the species.

<comment><USER4> That's what I thought but then the article says this:

"""

The Y has been stable for the past 25 million years, scientists say. And a major reason is that many of its remaining genes are crucial to the survival of all humans, going far beyond sex determination. There are genes that affect protein synthesis, how active a gene is, and others that splice RNA segments together. They are found in the heart, the blood, the lungs, and other tissues throughout the body. "These are powerful players in the central command room of cells," says David Page

"""

<comment><USER5> I guess it depends a bit on what genetic regions we're talking about but to my knowledge since the Y contains so few genes it's not surprising that almost none of them changed for a long time. It's already very stripped-down. I'm far less sure about non-coding regions though, I'd have to check up on that.

From what I can tell the text doesn't contain a lot of new or surprising information, but it does present it in a misleading way.

It's clear that sexual dimorphism in humans is profound in some respects and superficial in others. Since the Y chromosome regulates sexual development, and since males do get some metabolic modifications, saying the Y influences protein synthesis in vital tissues is mostly a truism.

Saying that for example autoimmune diseases with lopsided sex distributions are not connected to sex determination is a fruitless semantics game disconnected from the actual science. To be fair, it's not any more sensationalist than the "rotting Y chromosome" spiel which has been in the press earlier, but all of this is really more a testament to all the things that are wrong with science reporting (and the scientists who enable it) than anything else.

</comment></comment></comment></comment><comment><USER6> Which is more detrimental to the survival of a certain gene, losing vital data or gaining useless data.

Some genome sizes, the marbled lungfish carries a lot of weight in its cellular nuclei.

ftp://www.fourmilab.ch/pub/goldberg/sizes.html

</comment><comment><USER7> Awww, it's okay boy, you'll survive even if gender is not fixed the way you thought it were and even if your gender becomes irrelevant.

<comment><USER8> It's not gender identity, but biological sex that's the issue here, which is kinda important when it comes to reproduction.

<comment><USER9> Well, we are close to capability to ignore biological sex when it comes to reproduction. We probably don't/won't want to ignore it, but if we had to, then we most likely could make do with artificial means of reproduction that don't neccessarily need both sexes.

<comment><USER8> But we're not there, and even if we were, the methods are vastly more expensive and inaccessible than natural methods.

Sure, if we _could_ then biological sex wouldn't matter quite so much, but until we are, the old Y chromosome is still rather important.

<comment><USER9> If we're talking about a chromosome going away quickly, then "quickly" in that context means at least thousands of generations. We're not there, but it's not _that_ far away.

<comment><USER8> Oh, I agree, and research down that line is worth pursuing, but until we're at that point and Y is still important. The implications would be staggering, and no doubt mostly for the better. It could open up the ability to have children to so many couples who currently have few options, be they same sex, infertile, or whatever. The primary downside I can see in the short term is the effect it would likely have on adoptions.

That said, part of me would prefer is we didn't need to rely on non-built-in means to propagate. The idea of becoming utterly reliable on a particular piece of technology for our survival as a species isn't one I'm fond of.</comment></comment></comment></comment></comment></comment>


Saudi Arabia Allows Women to Travel Without a Male Guardian's Permission - <AUTHOR> https://time.com/5642228/saudi-arabia-ends-guardianship-system/ <comment><USER2> It's always funny for me to see articles like this, the last one I remember was about women being able to drive. What does Saudi Arabia have that prevents the world from interfering in its politics? Don't say oil, if it was just that the US would have been in there long ago.

<comment><AUTHOR> Why is that even a good idea at all? First most of these laws are a result of the culture here and if a vote were to happen are likely to remain or at least be controversial. Even the silly driving ban which have no religious basis is/was controversial even amongst women. Enforcing non popular laws from a foreign entity is a good recipe for disaster and may increase resistance to these laws and start wars or other bad stuff. Heck I think most Saudi citizens, even the liberal ones, would not want such actions.

In addition, I think they are also too many countries which doesn't match US ideals, will US start WW3? For example there are many islamic countries with differing laws but I would guess most don't match US ideals.

<comment><USER3> The western world has sad tendency to believe its ideals are the only ideals, so you're unlikely to attract much productive comment. Fanaticism is found everywhere, it's just common for some cultures to give it another name when convenient

<comment><USER4> It's not that simple to equate the two. Modern western ideals are _modern_ western ideals. If living under an authoritarian monarchy were just another way of living, there wouldn't have been a history of revolt against it in the west, because western civilization is no stranger to this kind of society. Western societies have _tried_ autocracy many times. How many times has Saudi Arabia tried liberal democracy?

</comment></comment></comment></comment><comment> D-Coder To quote a comment from other places, "Welcome to the 19th Century."

</comment><comment><USER5> Time has one of those data-collection consent forms that are seemingly impossible to opt out of, before being able to read the article. I refuse to fall for that dark pattern.

Here's a better link: [https://www.theguardian.com/world/2019/aug/01/saudi- women-ca...](https://www.theguardian.com/world/2019/aug/01/saudi-women-can- now-travel-without-a-male-guardian-reports-say)

"Women in Saudi Arabia will no longer need the permission of a male guardian to travel.."

"Still in place, however, are rules that require male consent for a woman to leave prison, exit a domestic abuse shelter or marry. Women, unlike men, still cannot pass on citizenship to their children and cannot provide consent for their children to marry."

<comment><AUTHOR> I would like to add, quoting from times:

"Other changes issued in the decrees allow women to register a marriage, divorce or child's birth and to be issued official family documents"

IANAL but I am a Saudi citizen and it seems male consent to leave prison and abuse shelter may be included in these changes. I have seen Saudi citizens speculate about both possibilities so it is not clear yet.

Only one of the four major Islamic Sunni madhhaps allow females to marry without consent. Saudi Arabia follows a different madhhap. So if I were to speculate I don't think it will happen soon because it may risk a revolt as I believe most citizens are religious or at least conservative. However, I also did not expect the current changes to happen this soon for the same reasons so I may be wrong.

<comment><USER5> Thank you, that's really interesting to hear a first-person perspective about the cultural changes.

> [Allowing] females to marry without consent..may risk a revolt..

Wow, I didn't realize how strongly people (I guess in this case mainly men) felt about this issue. I'm all for women's rights and liberation, but I see that it must be done in a sensitive manner, as it relates to fundamental values of religion, gender roles, and I suppose power dynamics in society.

<comment><USER6> > I'm all for women's rights and liberation, but I see that it must be done in > a sensitive manner.

These laws are ruthless and insensitive towards women though...

<comment><USER7> Yeah, but women need to consider the desires of men who want to keep them oppressed. /s

Replace the word "women" with "black people abducted from Africa" and change the time period to the 15-1800s in the US/Europe. "I'm all for the liberation of enslaved black people, but it needs to be done slowly, in a sensitive manner..." It's amazing how, when you get a religion involved that says oppression is good and right, that you can justify stuff like slavery and oppression.

<comment><USER5> I get what you mean, especially when compared with historical examples of fighting for civil rights.

The anger from the oppressed, those demanding their rights, is justified. And it does sound absurd to ask anyone to be sensitive to their oppressors' feelings and reaction.

I guess by "sensitive", I meant changing the system together, rather than against each other. But in retrospect, that may be a naive and unrealistic expectation.

If Saudi Arabia continues to improve civil rights for women and there's a "gender riot", angry men on the streets calling for return to "traditional values".. Well, so be it, that might be the price of progress?

<comment><USER8> Yes, if someone wants to riot because they're no longer allowed to oppress someone else then fuck them.

<comment><USER7> I agree, but the problem is when 1) those people have large enough numbers to be politically powerful, and even worse 2) when those people have convinced those people they've oppressed that they _should_ be oppressed, so those victims join them in upholding the oppression. When #2 happens in sufficient numbers, I'm not really sure what the answer is, except to lead by example.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> Bonesaw has done it again!

<comment><USER10> Please don't do this here.</comment></comment>


ZeroCater (YC W11) is Feeding Silicon Valley - <AUTHOR> http://online.wsj.com/article/SB10001424052702304022004577516912524877338.html

<comment><USER2> We were actually the first ZeroCater customer at Scribd, and we now use ZeroCater at Parse too. We're huge fans. They take care of everything -- from making sure the food actually shows up to changing up the menus based on our feedback and handling dietary restrictions. Also with Leslie managing our account we have absolutely incredible customer service -- she responds to every comment we make on the meals on their site. ZC saves us a ton of time so we can focus on our product and not on worrying about what/when to eat. The catered lunch/dinner also gives our team a nice dedicated time to hang out and chat. Congrats Arram and company on this story! Now don't get distracted and forget about my dinner tonight! :-)

</comment><comment><USER3> So I work for GREE (the company pictured in the article), and while I do like ZeroCater, I actually think Munchery is way better. Just a personal opinion. ZeroCater's service is awesome and their food selection is good, but I always feel kinda sick after eating. I think because they source their meals from restaurants.

Why do I like Munchery more? Because its made by chefs who typically use healthy ingredients. They change it up alot and I've even heard stories of some employees calling the chefs to see what's on the menu for the evening. Pretty cool! And after dinner, I feel great!

<comment><USER4> Hi Christopher, We actually have a ton of personal chefs and caterers. If you talk to your office manager at GREE, we'd be happy to switch it up.

Employee ratings help determine what gets ordered, so what's probably happening is that people are up voting restaurants more.

<comment><USER3> Ah I see. I really like the personal style. I'll try to rally others to my cause! Its nice to see where your food comes from and who makes it. I feel privileged that we get food in the first place, but always prefer the lunch that comes served by chefs over the stuff that comes dumped out of plastic containers.

<comment><USER5> Ironically, the complaint goes the other way at Google. We have in-house chefs that source the best ingredients and design the healthiest meals possible, and then people complain about the food being too healthy. (Lately the pendulum seems to have swung in the other direction, however. Last night I had waffles with whipped cream, bourbon butter, and syrup for dinner. Oh well, you only live once...)

<comment><USER6> Munchery chefs' rule #1: taste is King. By using fresh and local ingredients, healthiness comes naturally.

</comment></comment></comment></comment></comment><comment><USER7> A related note about UI design. I've lately been seeing a lot of ads (mostly on Muni) for both ZeroCater and Cater2 (a competitor <http://cater2.me>). What's interesting is how much better the clean ZC style looks compared to Cater2's ... frankly, amateurish resembling-developer-designed logo.

<comment><USER8> We were a ZeroCater customer and actually switched to Cater2.me.

Service-wise, they are both pretty much equal with Cater2.me maybe having less repeats and being a little more friendly to special needs (vegans, gluten allergies, etc). Our office manager is on some kind of mailing list for other office managers and said there seemed to be widespread trend of offices switching to Cater2.me.

<comment><USER9> We have made significant improvements to our service in regards to repeats and special needs in the last 8 months.

We have a dedicated team of food scouts who are constantly searching for new, exciting vendors to send to our clients. Our current repertoire includes over one-hundred of the best, most reliable vendors in the Bay Area.

We also keep detailed notes on every company's dietary restrictions and preferences and provide labels for all items that include notes if the item is vegan/gluten free/etc.

If SeatMe ever decides to give us another shot, I promise I will personally bake and deliver cupcakes for the entire office. And my cupcakes are pretty good: <http://i.imgur.com/fFlC5.jpg> . :)

Daniel Piers - Engineer / Czar of Cupcakes @ ZeroCater

</comment></comment></comment><comment><USER10> We've been using them here at SugarCRM for a few months and they have been doing a pretty bangup job so far. Food selection has been pretty varied and the quality has been solid...and from what I hear from the folks who do the booking, their service has been exemplary.

</comment><comment><USER11> PLEASE GIVE SCRIBD MORE KALE!!! THEY LOVE KALE!!!

<comment><USER4> We've just dispatched a courier with a big bag of Kale. ETA 7 minutes. I am not joking.

<comment><USER11> thank you this is awesome.

</comment></comment></comment><comment><USER12> What's the minimum number of people necessary to use ZeroCater?

<comment><USER4> Right now it's 15. One of the reasons that we're able to offer much higher quality restaurants and caterers is that we focus on sizable groups.

<comment><USER2> At Parse we started using ZeroCater with just 9-10 people by ordering the minimum food for 15 and splitting it with others or giving some away. Totally worth it.

</comment></comment></comment><comment><USER13> good to see zerocater expanding beyond tech companies!

</comment><comment><USER14> ZeroCater looks pretty sweet. I'm at Etsy though and you know... our Eatsys are pretty awesome too.

</comment><comment><USER15> _the free-food culture is so ingrained in the tech world that it would be much harder to eliminate there._

free food in tech startups isn't free at all. You (as the employee) are just donating more time & money to the employer.

I'm fortunate enough to work for a company that has a fabulous suite of cafeterias that host a huge variety of foods, but in the startup world, free food just felt like the NYC power lunches of the 80's

<comment><USER16> Literally, TANSTAAFL.

This falls in the class of benefits that serve to remove worries for employees so they can spend that time thinking about work instead.

I really don't see how that's a bad thing. If you're feeling shortchanged by the deal, let your boss know. Ultimately, quit.

My last job didn't have catered food. I was a daily chore to figure what to get and go out and get it. Not difficult, but annoying and it broke my concentration. Also we didn't have a lunch area, so most people ate alone at their desks. In my current job (free catered lunch), I've experienced to drone down to the cafeteria and get food without really breaking my train of thought, and I've experienced meeting some people in the cafeteria and picking up a great non-work related conversation.</comment></comment>


FDA Issues Warning about Security Vulnerabilities in Pacemaker Programmers - <AUTHOR> https://news.softpedia.com/news/fda-issues-warning-about-security-vulnerabilities-in-pacemaker-programmers-523230.shtml <comment><USER2> >The U.S. Food and Drug Administration (FDA) issued a cybersecurity vulnerability warning for users of Medtronic's CareLink 2090 Programmer and CareLink Encore 29901 Programmer devices.

Medtronic is also the company that made vulnerable insulin pumps that could be wirelessly instructed to stop all insulin delivery, or inject a fatal dose into the user.

<comment><USER3> Ugh, was this ever exploited? I shudder to think about someone walking around a stadium or shopping mall with a Raspberry Pi, killing people.

</comment></comment><comment><USER4> I heard stories of engineers using decades-old, unsupported and vulnerable stacks with the assumption that since it was already approved by the FDA they will have an easier time getting in though than if they tried to update their product.

<comment><USER5> > decades-old, unsupported and vulnerable stacks

Oh, dear. Is this the same kind of decades-old TCP/IP stacks that crash if you ping them the wrong way?

</comment></comment><comment><USER6> I'm really glad to see this on the front page of HN. My company is building API-based security tools to help medical device vendors prevent these kinds of vulns. There is huge risk in this class of IoT device, but not a ton of engineering effort going into addressing it.

<comment><USER7> It isn't just the internet connectivity. There are devices that are controlled by wireless handsets. Even it those handsets aren't internet connected, they constitute a potential vulnerability.

I recently worked on an insulin pump that was both wirelessly controlled and potentially internet connected. Unit tests and communications security seemed to be an more of an afterthought than anything.

<comment><USER8> Using radio at all is probably always going to be a terrible design choice for any medical device that relies on a non-rechargeable internal battery. Last year's pacemaker security alerts included the usual braindead protocols and broken authentication, but the really interesting vulnerability was about _power usage_. The pacemaker didn't rate-limit it's "RF wake-up" actions; anybody with a radio could spam those commands just to get the pacemaker to turn on it's transmitter to quickly ("hours") drain the entire internal battery.

The older designs that used magnetic coupling to communicated required holding a bulky device right next to where the pacemaker was implanted may have been annoying to use, but that kind of roadblock is a _feature_ for pacemakers and other devices where changing the battery requires major surgery.

Also, for anybody that missed it: Karen Sandler gave a very good followup talk[2] earlier this year where she discusses her attempts to get the source code for her own pacemaker.

[1] [https://ics-cert.us-cert.gov/advisories/ICSMA-17-241-01](https://ics- cert.us-cert.gov/advisories/ICSMA-17-241-01)

[2] [https://www.youtube.com/watch?v=8wPAHu_zYDw](https://www.youtube.com/watch?v=8wPAHu_zYDw)

<comment><USER9> >The older designs that used magnetic coupling to communicated required holding a bulky device right next to where the pacemaker was implanted may have been annoying to use, but that kind of roadblock is a _feature_ for pacemakers and other devices where changing the battery requires major surgery.

Right, not so unexpectedly, physically limiting access to devices (air gapped) remains the safer practice.

</comment></comment></comment></comment><comment><USER10> I read the headline as "vulnerabilities in the programmers themselves" (the humans), and thought it was just awkwardly worded. I thought it would be something about bribery and blackmail.

</comment><comment><USER11> What motive would anyone have for hacking a pacemaker?

<comment><USER12> As seen in "Homeland"

<comment><USER13> Or Watch_Dogs. Or Person of Interest (insuline pump).</comment></comment></comment>


openresolv – The DNS Management Framework - <AUTHOR> https://roy.marples.name/projects/openresolv <comment><USER2> Even after reading the description and the "Why Use" section I still don't understand what this does. The introduction makes it seem like you invented resolveconf and that's what the repo is for, it clearly that isn't the case.

The plugins make it look like your perhaps able to use the resolveconf confine to automate zone creation, but this doesn't make much sense either.

What is the use case of this? Does it replace resolveconf?

In my past life as a sysadmin the preferred way to use multiple domains and resolvers was to disable resolveconf and manually (or using config management) edit /etc/resolve.conf.

<comment><USER3> Same here: I don't get what this is supposed to do after reading the page and I also disable resolvconf so it doesn't get constantly overwritten when I make manual changes. Would be nice if this is some sort of system that can find a middle way, but it doesn't seem to be explained.</comment></comment>


Attacking Zcash for Fun and Profit - <AUTHOR> https://twitter.com/dukeleto/status/1259852271791284224 <comment><AUTHOR> Duke Leto and the Hush Developers inventing the "Sietch" security system and exposing Zcash lies about their blockchain safety

</comment><comment><USER2> Zcash privacy vulnerabilities explained in this 15 page whitepaper, solved by Hush! Amazing work <3</comment>


Second-quarter US GDP growth revised up to 4.2 percent on software, trade - <AUTHOR> https://www.thegazette.com/subject/news/nation-and-world/second-quarter-growth-revised-up-to-42-percent-on-software-trade-20180829 <comment><USER4> I haven't seen US economy this versatile and powerful in a long time, maybe since the 80s. This economy is diversified - manufacturing jobs used to be 32% in the 60s, now it is around 9% currently, but it is growing fast this year. We now have new jobs in every sectors growing, from finance (NY), college (Boston), healthcare (east coast), government (Washington DC), entertainment (Los Angeles), oil and gas (Texas), import/export (Cali/Florida), tourism (Florida), agriculture (flyover), and of course, tech (Silicon Valley, Seattle). And each industry is evenly distributed and growing. Thus the low unemployment rate and wage increases (higher in industries with higher demands)

US has gone through lots of challenges (globalization, gas/oil crisis, 9/11, cold war) in the last 50 years, and has come out on top every time.

4% growth is huge for the largest economy in the world, and the economy is nearly double the size of the closest competitor country. Bay Area alone is nearly a trillion dollar economy, and has double the growth rate of any other county in US.

Coupled with the flooding of capital back to US via the reduced expatriation tax rate, US is firing on all cylinders.

<comment><USER5> I've been trying to learn a little about economics. Do you have any favorite economists, etc that you follow? I'm trying to learn more about the interaction of QE, rising fed rates, growing deficits, etc.

Basically, I'd like to move beyond the headlines and the spin.

[Update]

Here are some people I try to follow:

Jan Hatzius - Goldman Economist

Robert Schiller

Stephen Roach - Yale Economist [https://www.project- syndicate.org/columnist/stephen-s--roach](https://www.project- syndicate.org/columnist/stephen-s--roach)

Jeremy Grantham - <USER2>

Ray Dalio - <USER3>

Larry Summers

<comment><USER4> Great question, thanks for asking!

I like Nikolai Kondratiev, Pettis, Alfred Marshall, Carmen Reinhart, and Bill Gates (read his recent stuff on software economics)

I don't like Krugman and Greenspan.

<comment><USER6> I'm particularly curious about why you prefer Reinhart over Krugman, specifically because of the disagreement over the famously erroneous Reinhart- Rogoff results (Krugman comment here: [https://krugman.blogs.nytimes.com/2013/04/16/reinhart- rogoff...](https://krugman.blogs.nytimes.com/2013/04/16/reinhart-rogoff- continued/). As far as I know, Reinhart-Rogoff never republished or responded further than what Krugman discussed in the linked post). Specific examples supporting/disproving the case of either would be helpful.

I tend to ignore Krugman when he's talking politics (eg. his prediction of a Trump recession). However, when he goes through the process of laying out the assumptions of an economic model (happens in many of his blog posts labeled 'wonkish'), his discussion of economic consequences of various policies seems to map very well with reality.

</comment></comment></comment></comment><comment><USER7> One thing I've noticed hiring in both the USA, Australia, and Europe is the huge amount of 'hidden' taxes in Europe.

For example, if I hire a worker even on minimum wage, I'm paying up to half of their gross labour cost (depending on the country) as taxes to the Government! This is called things like a social security tax, healthcare tax, disability tax, etc etc.

By contrast in the USA you have one pretty simple and low payroll tax, plus health insurance. Australia has it even better, with no health insurance, though you do have mandatory superannuation/retirement fund contributions on behalf of the employee (all still much lower in Europe).

This creates huge incentives in Europe to just pay cash in hand, or say pay the annual bonus or overtime as cash. There are also a lot of companies afraid of growing larger and hiring more staff, because it will make their cash payments harder to conceal.

I hope from this boom in the US that the Federal Government can remove payroll taxes there. Combined with a move to a single-payer healthcare system, hiring and paying US employees could be the simplest on the planet.

</comment><comment><USER8> The challenge of the next 10 years will be housing. We are not building nearly enough. A fraction of what we need even to slow price growth. We still have these quaint subdivisions built in the 60s and 70s full of nimbyism and voting down all development. We need a big move here.

<comment><USER9> The only area that I am aware of that has that problem is the bay area. Yeah, you guys are fucked but every other city that I am aware of is aggressively building to supply demand for housing.

<comment><USER10> Boston, NYC, and DC are all similarly fucked. Not as bad, but not good...

Part of the problem is that a lot of _wage_ growth is concentrated in areas that are experiencing a housing crunch.

<comment><USER11> > Part of the problem is that a lot of wage growth is concentrated in areas > that are experiencing a housing crunch.

This is actually a really good point. There's actually a great paper that covers how much higher housing prices have hurt growth due to workers being discouraged from moving to high productivity areas[1]. The tl;dr is that if only NYC, SF, and San Jose adopted the land uses restrictions of a median US city, GDP would be about 9% higher (about $8,775 per worker assuming the labor share of GDP and number of workers doesn't change).

[1] [http://www.nber.org/papers/w21154.pdf](http://www.nber.org/papers/w21154.pdf)

</comment></comment></comment></comment><comment><USER12> Thoughts?

[https://www.businessinsider.com/wages-growth-is-weak-due- to-...](https://www.businessinsider.com/wages-growth-is-weak-due-to- widespread-underemployment-study-finds-2018-8)

<comment><USER13> A reasonable hypothesis. I also wonder if its a (business) culture issue: companies these days just seem really reluctant to give raises, with people (or rather, those with the ability to do so) just changing jobs to get a "raise"

</comment></comment><comment><USER14> Mods, can we retitle this to point out that it's specifically the US economy that's grown?

<comment><USER15> At your service.</comment></comment>


Show HN: Emma, your best financial friend - <AUTHOR> https://emma-app.com/ <comment><AUTHOR> Hey guys,

I am Edoardo, co-founder of Emma! :)

We have spent the past 3 years relentlessly working on banking APIs on a mission to empower people to live a better and more fulfilling financial life. Emma is, as of today, one of the most beautiful and comprehensive finance apps out there, we call her your best financial friend.

We have been live in the UK for a year and got more than 100,000+ downloads without a single $ spent in ads. At the same time, we were featured by Apple as App of The Day and have raised VC funding from top European investors.

We are now thrilled to bring Emma to both 🇺🇸 and 🇨🇦!

These are some of the cool things we do:

\- Manage your money in one place. \- Set budgets and goals. \- Track spending \- Avoid overdrafts fees. \- Track and cancel wasteful subscriptions. \- Help you payoff debt. \- Save money every month. \- Track and find bank fees. \- Get smart Weekly Reports about your budgets and spending. \- Countdown paydays and know when you get paid! \- The Emma Quiz - win $100 by playing our weekly money quiz.

ps: In case you are wondering, we are using Plaid to connect to banks, which is for us the undiscussed leader in aggregation in North America.

By the end of the year, we'll be live in every single english speaking country. 🇿🇦🇳🇿🇦🇺

<comment><USER2> Great job Edoardo, the app is solid! One thing that I notice with Canadian accounts Emma is having a bit of trouble identifying Loblaws transactions, is marking them as AWS

<comment><AUTHOR> We can fix this. Let me ask the team. :)

<comment><AUTHOR> This should be fixed at the next app sync.

<comment><USER2> Amazing, thank you!

</comment></comment></comment></comment></comment><comment><USER3> Been a UK user of the Emma app and it is indeed one of the best financial apps out there (as a personal finance nerd, trust me I've tried them all). However, i'm still not sold on Emma Pro and hope you can improve my perceived value of it by adding more features relevant to me soon.

</comment><comment><USER2> I downloaded the app, and after playing with it for a couple of hours I went for Emma Pro. This is great, the amount of insight is fantastic.

<comment><AUTHOR> Wow! Amazing!

Let me know if you need any help. ;)

<comment><USER2> The only thing I can think of, is the ability to share the same account with my wife. It would be great if we could see the same budgets / transactions

</comment></comment></comment><comment><USER4> Congrats to you and the team Edoardo! We've been excited for this for a while

</comment><comment><USER5> How do you make money?

What do you do with my financial data?

Do you support gemini for bitcoin tracking?

<comment><USER6> > How do you make money?

We offer a paid Pro plan for extra features.

> What do you do with my financial data?

We use it to provide you the service. We don't share it or sell it to anyone without your permission.

> Do you support gemini for bitcoin tracking?

Not at this time, sorry</comment></comment>


Lawyers eye NSA data as treasure trove for evidence in murder, divorce cases - <AUTHOR> http://redtape.nbcnews.com/_news/2013/06/20/19061109-lawyers-eye-nsa-data-as-treasure-trove-for-evidence-in-murder-divorce-cases?lite <comment><USER2> From "it's only to catch terrorists, guys" to potentially "it's also used to prove guilt in minor domestic cases."

I, for one, hope this succeeds. Maybe then we'll have a way to get the masses to understand just how bad this surveillance state really is, for all of us.

<comment><USER3> It's only a matter of time until this data is used for political means (see the recent IRS story). All it will take is someone coming into power that threatens the agency or its valued partners in any way. Then out comes the embarrassing tweets or tax evasion evidence pulled from Amazon. This will only become more easy as the young people of today become the Senators and Presidential candidates of tomorrow.

<comment><USER4> "Out comes the blackmail" is an optimistic scenario. More likely, it's quietly made known that they have such information, and magically, their position changes - with the public none the wiser.

<comment><USER5> Pretty much describes J Edgar Hoover's career. And why, once the Mob got dirt on him, they were free to do as they pleased with no FBI interference.

</comment></comment></comment></comment><comment><USER6> If I were on the jury, I would seek to nullify the jury for every single case where the NSA refuses to provide the defense with the information they want or where the prosecution uses NSA data to prove guilt.

The former because that data shouldn't be a one way street and the latter because the NSA shouldn't have that data in the first place.

</comment><comment><USER7> A bigger concern will be that "Lawyers" will realize that the NSA data came from internet companies and ISPs, and these companies often still have that data.

There is no national security shield for that data....

"Lawyers" just need an enterprising startup to build a private version of PRISM to do analysis and reporting on the data they extract from the companies via court orders.

OTOH, my understanding is that the defence has a special right to this data in criminal cases if the NSA has it because that means "the prosecutor" (ie, the government) has the data.

 _" The NSA is not above the law. It's a government agency, just like every other government agency. Just because it has this Harry Potter-like disappearing cloak, it's still an agency that is subject to the law"_

Call me cynical, but I'm yet to be convinced that is the case at all.

</comment><comment><USER8> This reminds me of a facebook status update:

 _You character is only as good a your browsing history_

</comment><comment><USER9> I am not worried about lawyers using these logs for evidence, I am more concerned about other government agencies doing so. Its not like the IRS isn't bad enough as it is.

Of course it could be just as much fun when employers demand access to this data. Soon we will get a Citizens Privacy Bill of Rights which will protect us from no one and codify the government's rights to continue as is.

<comment><USER10> I'm more concerned over people buying this data from disgruntled or otherwise compromised NSA employees or anyone else they hand the data to (like contractors) to use for blackmail or other criminal enterprises.

</comment></comment><comment><USER11> I really don't get any of this.

These lawyers and courts are no more privileged to secret data from the NSA, the military, or any of the other classified source today, then they were 1 year ago, 10 years ago, etc.

<comment><USER12> "The laws of evidence require that prosecutors turn over to the defense any records they have that might help prove a suspect's innocence."

In other words, they were entitled to them 10 years ago, but now that they know they exist they can actually request them.

<comment><USER11> Those courts and prosecutors have no access to classified datastores of the NSA.

That data is classified and protected by law.

What you are quoting is completely something else, and just references the data the prosecutors have on hand that is gathered and developed as part of the investigation.

<comment><USER13> The data is classified and protected by law, yes, but there are other equally (or more important) laws that say the government is required to hand over all potentially exculpatory evidence to the defendant.

Which law trumps? That's for the courts to decide.

<comment><USER12> Can't why to see Scalia argue as to why the government needs to put to death people it knows are innocent.

</comment></comment></comment></comment></comment><comment><USER14> The data was collected without a warrant. It cannot be used in court.

<comment><USER15> IANAL, but I believe the "fruit of the poisoned tree" doctrine only ties the hands of the State in criminal proceedings. The defense can put forth any evidence or argument at all, provided it's in good faith, and not knowingly false.</comment></comment>