Symbolic expressions can be automatically differentiated too - <AUTHOR> http://h2.jaguarpaw.co.uk/posts/symbolic-expressions-can-be-automatically-differentiated/ <comment><USER2> One can also calculate the derivative of a context free grammar with respect to a given terminal.

[http://matt.might.net/articles/parsing-with- derivatives/](http://matt.might.net/articles/parsing-with-derivatives/)

<comment><USER3> That's also a really cool article. Thanks for sharing it!

</comment></comment><comment><USER4> Great post, as an AD tutorial and as a (an?) Haskell exercise. Having known nothing about AD before, I feel like I have a good understanding of what it is -- as he says, it's so simple -- but I don't understand _why_ the algorithm is so much faster. Just looking at the differentiator function and the AD function, it actually appears that the AD should take longer because it does more computation per step (both the function and the derivative). But it seems like every article or paper is talking about how to implement AD, not why the algorithm is so efficient. Does anyone happen to know of a good article or paper about that? Ideally, one just as nice and comprehensible as this!

<comment><USER5> The first alternative builds a large tree structure, and then evaluates the whole tree structure afterwards.

So first it blows up the size of the expression to process and _then_ it calculates the result. A lot of those calculations will be redundant

The second one not only avoids evaluating the tree separately, but "prunes" a lot of the evaluation automatically by effectively short-circuiting the whole process. Consider (with the caveat that my Haskell understanding is rudimentary at best and it was about 20 years since I last did anything involving symbolic differentiation) :

       Product e e' -> Product e (diff e') `Sum` Product (diff e) e'

Followed by a separate run with:

        Product e e' -> ev e * ev e'

vs

        Product e e' -> let (ex, ed)   = ev e
                                (ex', ed')       = ev e'
                        in (ex * ex', ex * ed' + ed * ex')

(I pick the "Product" rule as an example because it is one of the ones that blows up the size of the tree)

Lets say you do something simple like Product X X. You get Sum (Product X One) (Product One X) out, and then you have to evaluate each node.

In the second case, you match Product e e'. You process X and assign (x,1) to (ex,ed), and process the second X and assign (x,1) to (ex', ed'), and then return (ex * ex', ex * ed' \+ ed * ex').

In the first case, you've first differentiated 3 nodes (Product + 2x "X"), then evaluated the 7 nodes that was produced as output, for a total of ten nodes processed.

In the second you've evaluated/differentatiated 3 nodes in one go without the intermediate step of having to evaluate a much larger tree.

In a large example, the number of nodes in the differentiated output quickly explodes and subsequent evaluation would increase rapidly in cost.

<comment><USER6> From an asymptotic complexity viewpoint, I don't see any difference between the two algorithms (AD versus building an expression tree and doing it symbolically, then evaluating). Both are linear in the "size" of the expression. So I don't understand what you mean by "quickly explodes".

<comment><USER7> See here:

[http://h2.jaguarpaw.co.uk/posts/why-is-naive-symbolic- differ...](http://h2.jaguarpaw.co.uk/posts/why-is-naive-symbolic- differentiation-slow/)

In summary, yes both functions are linear, but the size of the symbolic derivative is quadratic.

</comment></comment></comment></comment><comment><USER8> I would swear I read some Lisp-related paper about this with some nice Lisp advocacy in it, too.

Aha, here it is: [http://www.cs.berkeley.edu/~fateman/papers/ADIL.pdf](http://www.cs.berkeley.edu/~fateman/papers/ADIL.pdf)

> _For fans of Lisp, there is no question that one motivation is to show how > easy it is to implement in Lisp. Lisp provides a natural representation for > programs as data and a natural form for writing programs that write > programs, which is what we do in ADIL. The code is short, and is in ANSI > standard Common Lisp. Since it is not "naive" code written in just the > obvious idioms of introductory Lisp, it illustrates, for those with only a > cursory familiarity, that Lisp is more than CAR and CDR. In fact we did not > use those routines at all._

Ah, but you did use A and D. cAr-tomatic cDr-ivation!

:)

</comment><comment><USER9> Surprised to not see SICP's excellent section on symbolic differentiation not mentioned here: [http://sarabander.github.io/sicp/html/2_002e3.xhtml#g_t2_002...](http://sarabander.github.io/sicp/html/2_002e3.xhtml#g_t2_002e3_002e2)

</comment><comment><USER10> Algebraically, automatic differentiation is the same as adding a nilpotent element e, such that e^2=0 to your algebra. You can continue this pattern out to get higher order derivatives. For example, if you also add an element f where f^3=0, the coefficient of f is proportional to the second derivative.

<comment><USER6> Sounds interesting. But could you explain this so that people without a postgraduate degree in mathematics can understand this?

<comment><USER11> The idea might be similar to [https://en.wikipedia.org/wiki/Non- standard_analysis](https://en.wikipedia.org/wiki/Non-standard_analysis)

Edit: Actually, [https://en.wikipedia.org/wiki/Smooth_infinitesimal_analysis](https://en.wikipedia.org/wiki/Smooth_infinitesimal_analysis) seems much closer.

<comment><USER6> Interesting. But...

> by denying the law of the excluded middle, e.g., NOT (a ≠ b) does not imply > a = b

Ouch, that is where my brain starts hurting.

</comment></comment></comment></comment><comment><USER12> Conal Elliot's paper on the subject is a really good starting point: [http://conal.net/papers/beautiful- differentiation/beautiful-...](http://conal.net/papers/beautiful- differentiation/beautiful-differentiation.pdf)

</comment><comment><USER13> This example makes it really clear what's going on. Could someone translate it to do reverse automatic differentiation? That's the one I never quite understand.

<comment><USER14> You mean integration? That's much harder, but has been done automatically. Symbolic differentiation is easy, because you can just keep blindly applying a set of rewrite rules until none of them apply. That process converges on a unique result. Symbolic integration doesn't converge in that way. More strategy is required, and you're not guaranteed a closed form solution. Mathematica has a good symbolic integrator.

<comment><USER15> _Symbolic integration doesn 't converge in that way. More strategy is required, and you're not guaranteed a closed form solution._

However, if a closed-form solution exists which can be expressed in terms of the operations + - * / exp log, then it is guaranteed to be found.

</comment></comment></comment><comment><USER11> Great article! It might benefit from a comparison with Oleg's Typed tagless- final interpretations ([http://okmij.org/ftp/tagless- final/course/](http://okmij.org/ftp/tagless-final/course/)).

</comment><comment><USER16> The thing that's great about the typeclass approach, you can do anything you want behind the implementation. you can numerically evaluate the expression, but even cooler, you can recover the parse tree. I never could sort out how to deal with 'if', because it's not typeclassed. if it was, boy could you do some amazing stuff. partial differentiation, tree rewriting, with the LLVM stuff you could runtime compile arbitrary functions. super neat trick.

<comment><USER17> That's also what's great about pure dynamic systems like Smalltalk. 'ifTrue:' is just a message-send, the class "False" doesn't evaluate the block parameter, the class "True" does. And yes, you can then recover the parse tree, for example the Gemstone OODB lets you use arbitrary blocks (closures) as queries, recovers the parse tree and then creates an optimized query from it. Quite neat.

</comment></comment><comment><USER18> THE LISP DIFFERENTIATION DEMONSTRATION PROGRAM, K. Kaling, Artificial Intelligence Project, RLE and MIT Computation Center, AI Memo 10, 1959.

[https://archive.org/stream/bitsavers_mitaiaimAI_878286/AIM-0...](https://archive.org/stream/bitsavers_mitaiaimAI_878286/AIM-010_djvu.txt)

ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-010.pdf

</comment><comment><USER19> Could Automatic Differentiation learn by applying learnable weights to the compiled S-expression atoms - Backpropagating Errors applied with Stochastic Gradient Descent ?

A program would constrain a task with functional statements, which is then compiled to weighted s-expressions which learn the specific task from training data.

A sort of Neural-net functional program hybrid.

</comment><comment><USER20> Dual numbers are just a means of formalizing the properties of an epsilon (a tiny change in calculus), and are the means of preserving enough information to think of the function and its derivative at the same time. EG: (x + ε)² = x² + 2ε + ε², but ε² = 0, so we get x² + 2ε, (a tiny change squared becomes an insignificantly tiny change)

</comment><comment><USER21> Forward-mode AD doesnt't really scale. Reverse kode AD is useful for the backpropigation algo in machinelearning however

<comment><USER22> What part doesn't scale?

<comment><USER23> I'm a little late to the party, but hopefully this'll explain.

Basically, you have to be careful about what it means to scale or not scale. If all you want is a derivative with respect to a single variable, forward mode scales just fine, great in fact. However, if you want the gradient, or the derivative with respect to every variable, then the forward mode does not scale well at all with respect to the number of variables. Specifically, assume we have m variables. In order to calculate the derivative of an expression with respect to 1 variable is 2 times the cost of a function evaluation, 2 * eval. In order to see this, it's easiest to note that we don't need an expression tree for forward mode AD like the article uses. Really, we can get away with just a tuple that contains the function evaluation as the first element and the partial derivative as the second element. Then, all of the rules are basically the same as the article, but we're always doing one operation on the first element, whatever the function is, and a different operation on the second element for the partial derivative. This is twice to work, so 2 * eval. Since we have m variables, this becomes 2 * m * eval. And, yes, memory layouts, fewer optimizations for algebraic data types compared to floats, etc. mean that it's actually slower, but, honestly, it's pretty fast.

The reverse mode is different because it turns out that it can calculate the entire gradient, or all m partial derivatives, with 4 * eval cost. Note, this is independent of the number of variables. Proving this is a pain, so I can't give a good explanation here. Realistically, source code transformation tools perform around 10-20 * eval. Operator overloading tools perform around 20-30 * eval, so it's slower in practice, but pretty damn good.

Now, unlike the forward mode, where we really only need a tuple to carry information, the reverse mode does require an expression tree. In order to understand why, it helps to note that the forward mode is really a directional (Gatteaux) derivative and the reverse mode is the total (Frechet) derivative. This affects how the chain rule manifests. Specifically, the forward mode repeatedly applies two rules

(f o g)'(x) dx = f'(g(x)) g'(x) dx

(f o (g,h))'(x) dx = f'(g(x),h(x)) (g'(x)dx,h'(x)dx)

Basically, in the function evaluation, we do some operation g before f. In order to figure out the derivative, we also do the g derivative operation before the f derivative operation. The first rule is for unary operations like negation and the the second rule is for binary operations like addition. Anyway, the reverse mode takes the Hilbert adjoint of this. Specifically:

(f o g)'(x)^* = g'(x)^* f'(g(x))^*

(f o (g,h))'(x)^* = [g'(x)^* h'(x)^* ]f'(g(x),h(x))^*

We care about the adjoint because of a trick from the Riesz representation theorem. Specifically,

f'(x)dx =

(f'(x)dx)1 =

<f'(x)dx,1> =

<dx,f'(x)^* 1> =

<dx,grad f(x)>

where <.,.> denotes the inner product. Anyway, basically the gradient of f is the adjoint of the total derivative of f applied to 1. Therefore, if we knew the adjoint of a computation applied to 1, we'd get the gradient. In other words, we can rewrite the chain rule above as

grad (f o g)(x) = g'(x)^* grad f(g(x))

grad (f o (g,h))(x) = [g'(x)^* h'(x)^* ]grad f(g(x),h(x))

That's the core of reverse mode AD. Note, many, if note most descriptions of reverse mode AD talk about doing the chain rule in reverse and then they add dual variables, etc. That may be a description that's helpful for some, but not for me. In truth, it's just a bunch of adjoints applied two one and knowing the Riesz representation trick.

Now, the reverse mode AD does require an expression tree to be kept. The reason for this is that the computation about did g before f. However, if we look at the chain rule we have

grad (f o g)(x) = g'(x)^* grad f(g(x))

This means that in order to calculate the gradient of the composition, we need to know the gradient of f first even though we did the evaluation of g first. However, we need to know the evaluation of g in order to calculate the gradient of f. The way we resolve this is that we evaluate the functions in order, but keep an expression tree of what we did. This gives all of the g(x), f(g(x)), etc. Then, we run over that expression tree backward to calculate all of the gradients. Because we run over the expression tree backwards, we call this the reverse mode.

How we run over the expression tree backwards is important and tricky to do right. The way that we can sort of see that we can do everything in 4 * eval cost is that the trick is not to create multiple vectors to store the gradient when running over the tree, but to have 1 vector and to update this vector with the new derivative information when required. Basically, we're just inserting information in the right spots, which can be done efficiently. In practice, storing the expression tree in memory can be really expensive. For example, imagine a for-loop that had 10 billion loops. That's a really long expression tree to hold in memory. Now, source code transformation tools are really clever and don't actually store all of those expressions in memory, but just run back the for loop, which is why they're more efficient. Operator overloading techniques (algebraic data types) can technically optimize this as well by doing some interesting caching techniques. However, the overall idea is that it can be expensive and there are lots of ways to do this wrong, but also lots of places to do things right and be creative.

As aside to a comment left above, back propagation is indeed just reverse mode AD combined with a nonglobally convergent version of steepest descent. I've never seen a paper that worked this out, but it's something that's known within the AD community. Someone, someday, should really write that down.

Anyway, that's probably a much too long response to your simple question. In short, forward mode doesn't scale when calculating gradients because the cost is 2 * m * eval whereas the reverse mode can do it in 4 * eval. For a single variable, or an entire directional derivative, the forward mode scales fine and in fact works better than the reverse mode for this case.

Edit: This formatting is killing me. Hopefully, it all looks fine now.</comment></comment></comment>


Falcon: A high-performance web server for Ruby, supporting HTTP/2 and HTTPS - <AUTHOR> https://github.com/socketry/falcon <comment><USER2> As the previous maintainer of Reel ( High-performance Web Server based on Celluloid ) alongside the author of Falcon ( Samuel Williams ) I am proud to see this release get some attention, and heartily congratulate the author on work well done, both in the release itself, and in progress within the Ruby language.

Samuel is one of Ruby's best. He wrote RubyDNS as well, which was one of the best implementations of Celluloid, the asynchrony / concurrency / parallelism / distributed computing library written in Ruby, which has since come to EOL or hit a ceiling as trends shifted.

I am happy to see Samuel ( ioquatix ) continue his momentum personally, and contribute so much.

<comment><AUTHOR> Yes, I don't know Samuel, but form his blog he has been using Ruby for 10+ years. And he is only been in a more active role in Ruby VM over the past few years.

I think it was his Fibre[1] works that caught my attention. No idea why it hasn't committed yet.

[1][https://bugs.ruby-lang.org/issues/14739](https://bugs.ruby- lang.org/issues/14739)

Edit: Wow He is now a member of Ruby Core !!!

<comment><USER3> It will be soon.

<comment><AUTHOR> Congrats for being on Ruby Core, we really need more people to push Ruby forward. And thanks for the work on Fibre and Falcon, I hope I will have time to test it out and see if it could fully replace Nginx + PUMA / Unicorn.

</comment></comment></comment></comment><comment><USER4> It's a shame this has the same name as a high performance Python web framework as well. [https://falconframework.org/](https://falconframework.org/)

<comment><USER5> It's a shame neither of those Falcons made it here

[https://www.techempower.com/benchmarks/](https://www.techempower.com/benchmarks/)

<comment><USER6> They list the Python Falcon variant in their filters, and it used to be up there in previous editions.

</comment></comment></comment><comment><USER7> There's some more interesting information on his blog around fibers, ruby, and perf as well. Great to see more approaches being tried here.

[https://www.codeotaku.com/journal/2018-06/improving-ruby- fib...](https://www.codeotaku.com/journal/2018-06/improving-ruby-fibers/index)

</comment><comment><USER8> This sounds great! Are there any things I need to watch out for before switching from Puma to Falcon? And is it production-ready now, or does it still need some time to mature and have feature parity with other web servers?

This is a great article about the different Ruby web servers (from 2015): [https://www.speedshop.co/2015/07/29/scaling-ruby-apps- to-100...](https://www.speedshop.co/2015/07/29/scaling-ruby-apps- to-1000-rpm.html)

Would be great to have a comparison with Falcon. Also, speaking of performance, I still need to set up jemalloc. Have heard lots of good things about that.

<comment><USER3> I really think it depends on your use-case. The surface area of HTTP is huge. I'd like to think it's production ready, but I'm only just beginning to dog- food Falcon in production on my end.

Pragmatically speaking, it will be production ready when it reaches 1.0 - until then, make sure you test it well and keep an eye on how it behaves. I've literally run millions of requests against test servers, but... it's pretty wild out there!

</comment></comment><comment><USER9> Kudos to this project for having a funding model. At 120USD / year / per production instance many teams could convince management to pay it and help fund the project but also have the maintainers as support staff if needed.

</comment><comment><USER10> It is great to see people continually optimising Ruby and the experience of working with Ruby.

</comment><comment><USER11> I love stuff like this thanks. It's really interesting to see that Falcon is based on the [https://github.com/socketry/async](https://github.com/socketry/async) library.

I've previously been looking at [https://github.com/ruby- concurrency/concurrent-ruby](https://github.com/ruby-concurrency/concurrent- ruby) based on its use in Rails and was wondering if there's a comparison of the two approaches anywhere that would be newbie friendly?

I was also wondering will Falcon run on JRuby? (I see that nio4r does so hopefully that also means that things like Async-Container will.)

<comment><USER12> Would also love to know if it will support JRuby.

<comment><USER3> I've been doing my best to try and support JRuby but in actual fact, JRuby simply isn't that compatible with MRI where it matters. I hope we can fix this but honestly I can only do so much. I tend to focus my efforts on MRI since that's what I use day-to-day.

<comment><USER11> No worries Samuel, this is still really great work.

I'm guessing this is because process forking generally isn't supported on the JVM, is that correct?

</comment></comment></comment></comment><comment><USER13> I was just about a month ago trying to figure out if Rails and HTTP/2 could work together; and it seems this is about the only answer out there currently (or did I miss one?)

<comment><USER14> Well, you missed the obvious one: Puma

Writeup: [http://eileencodes.com/posts/http2-early- hints/](http://eileencodes.com/posts/http2-early-hints/) PR: [https://github.com/puma/puma/pull/1403](https://github.com/puma/puma/pull/1403)

<comment><USER3> This is a long way from native bi-directional HTTP/2.

</comment></comment></comment><comment><USER15> First, thank you! It looks like really solid work.

This project must be fairly new as I was not able to find it mentioned and compared with other ruby servers. Does anyone know some comparison running puma vs falcon or passenger vs falcon?

<comment><USER3> There is a rake task in the source which performs benchmarks. Feel free to try it out and propose more benchmarks.

</comment></comment><comment><USER16> Wow, this looks great! We had problems with p99 response times on Puma, so currently running nginx+unicorn.

<comment><USER3> I'm really interested in these use cases so let me know if I can help in any way.

<comment><USER16> Would be interesting to chat more about this - would like to learn more about how the request queuing works (that was where we ran into problems with puma). My email is in profile

<comment><USER3> I will email you, but I've also created a chat room specifically for discussing falcon.

[https://gitter.im/socketry/falcon](https://gitter.im/socketry/falcon)

</comment></comment></comment></comment><comment><USER17> Every language should have a framework named Falcon/Phalcon.

</comment><comment><USER18> ioquatix, just I'm clear, if this is an evented server it will use just one core? Or does it create one process per core? If not do you recommend we use [https://github.com/stripe/einhorn](https://github.com/stripe/einhorn) to split the work across N falcon processes (one for each core)?

And do you have advice / recommendations on database pool sizes when using Rails? I assume that each process will have access to as many connections as specified in the DB_POOL config? Does falcon need any pre/post fork re- creation of all connections?

<comment><USER18> Someone more knowledgeable about Rails can pitch in, but I believe in the absence of any connection management code, Rails will check out one connection per request the first time it is used? And checkin after the request terminates? If that is the case, wouldn't the number of simultaneous requests effectively be capped at the database pool size for DB heavy applications?

<comment><USER3> I don't know that but it would make sense.

</comment></comment></comment><comment><USER19> There is more than 9000 bird species and yet we have two web frameworks with the same name. Naming projects proves the-letter-agencies theory that people passwords are chose from very limited word space :) ([https://falconframework.org](https://falconframework.org)) was there already.

<comment><USER3> This is unfortunate, but at the time I only checked RubyGems.org and didn't think to check another language or package repository. So, I apologies, but there was no bad intentions, perhaps just a little bit of bad luck and ignorance.

That being said, it's actually named after the Peregrine Falcon, which is the fastest bird in the animal kingdom, and it was a friendly poke at Puma :)

</comment></comment><comment><USER20> WEBrick was ruby's standard library httpd back in the day... I remember it being mostly unusable in production for different reasons. But every now and then a new httpd would appear: mongrel, unicorn, passenger, puma, etc…

Sometimes the new implementation was not only "faster" under certain benchmarks, but deemed superior for "philosophical" reasons… I think it was the case for unicorn that load balanced over a pool of unix processes.

Eventually I left the ruby/rails world behind. Not the main reason, but I remember performance problems being very frustrating.

To quote [an old, 2011 blog post from] antirez: "it is not ok that by default [ruby] is so damn slow". [1]

I was expecting to find ruby state of affairs to be the same these days, but looking at TechEmpower's recent benchmarks [2] (benchmark reading caveats apply), seems like ruby implementations are reasonably speedy nowadays: benchmarks reflect results within the same order of magnitude to the fastest ones, except for the plaintext benchamark. I extracted some interesting metrics below.

Still, Ruby consistently comes after the 100th entry for all benchmarks.

A lot of people will say that the reasons to use ruby are the gains in productivity and the expresibility, DSL capabilities, etc. If that's the evaluation metric, maybe Clojure could be a good alternative. Also, it performs very well! (thanks to the JVM, no doutbts). I believe immutable by default is a better way to build apps, and in Clojure, the whole language is built around this concept. Ruby is the other way around: even parts of the language that shouldn't are open for modification!

I wonder if jRuby would be a good contender for performance.... but...

* I'm not sure why there are no jRuby implementations on the techempower benchmarks.. evidently, not a very popular technology?

* I'm guessing that startup time for tools like IRB must the one of the turnoffs for ruby people.

1: [http://oldblog.antirez.com/post/scalability-and-speed-of- web...](http://oldblog.antirez.com/post/scalability-and-speed-of-web- apps.html)

2: [https://www.techempower.com/benchmarks/](https://www.techempower.com/benchmarks/)

\--

Numbers: max requests per second for an specific implementation in TechEmpower's benchmarks

JSON serialization.

1st Java: 1,197,864 20th Rust: 1,135,647 (1.05X slower) 21st Clojure, 1,126,256 (1.06X slower) 141st Ruby 173,905 (6.9X slower)

Single query:

1st Java: 656,262 20th Go: 309,728 (2.12X slower) 54th Clojure: 209,466 (3.13X slower) 120th Ruby: 96,174 (6.82X slower)

Multiple Queries

1st Java: 43,245 20th Kotlin: 22,643 (1.91X slower) 21st Clojure: 22,536 (1.92X slower) 100th: Ruby: 11,216 (3.86X slower)

Fortunes

1st C: 424,712 20th Go: 193,079 (2.2X slower) 78th Clojure: 98,056 (4.33X slower) 131st Ruby: 51,043 (8.32X slower)

Data Updates

1st Java: 18,152 20th Dart: 6,785 (2.68X slower) 65th Clojure: 3,707 (4.9X slower) 95th Ruby: 2,839 (6.39X slower)

Plaintext

1st: Rust: 7,040,642 18th Clojure: 4,178,241(1.69X slower) 20th Java: 3,858,510 (1.82X slower) 134th Ruby: 239,652 (29.38X slower)

<comment><USER3> The tech empower benchmarks for Ruby are a bit foobar, I tried to fix it but ran out of time. I wouldn't trust it completely. I'm not saying it's wrong, I just don't think it's the complete picture.</comment></comment>


Signal for Android: RedPhone and TextSecure in one app - <AUTHOR> https://whispersystems.org/blog/just-signal/ <comment><USER2> Signal is pretty awesome, it's by far the best that we have right now:

      • state of the art crypto
      • open source
      • free as in beer
      • Available for Android and iOS

There are a few minor features that are missing but I can live with that. However, there are also a couple of important shortcomings:

      • no decentralization
      • use of the phone number

I hope they can be fixed sooner or later.

<comment><USER3> But the centralisation and use of the phone number is necessary to make it not shit. Anyway you forgot the important features:

* Nice modern UI

* Integrates with SMS

* Supports group chats

* Uses MMS for group chat if not all members have Signal

* Not really buggy or hard to use

<comment><USER4> Huge respect for Moxie, but the requirement of a phone number really is a dealkiller.

      1. Phone number requires a service provider
      2. Service provider owns the baseband and root of your phone.
      3. $government makes a "lawful request" of Verizon et. al.
         to install keyloggers/screenshotters on your phone.
      4. Your "secure" commms are compromised.

Signal needs to work on comprehensively rooted devices connected only via wifi for the above threat model to go away.

<comment><USER5> If we were going to rank our priorities, they would be in this order:

1) Make mass surveillance impossible. 2) Stop targeted attacks against crypto nerds.

It's not that we don't find #2 laudable, but optimizing for #1 takes precedence when we're making decisions. It's totally possible for you to install Signal on an iPod touch with a VoIP number, for instance, but that takes more effort than the common case we're designing for.

<comment><USER6> Any chance of not requiring access to the whole contact list? I think there are pickers that allow selecting one contact - or better yet, one could allow adding contacts inside Signal.

<comment><USER7> Probably not because they check that against the list of people who have Signal installed so they can send encrypted messages to the people who support it. They talk more about how they try to do this privately in [0].

[0]: [https://whispersystems.org/blog/contact- discovery/](https://whispersystems.org/blog/contact-discovery/)

<comment><USER8> I had a problem where one of my contracts uninstalled Textsecure, and went back to the vanilla SMS app. Now all the messages he received from me are garbled. Somehow they need a way to disassociate phones AFTER the app has been uninstalled.

<comment><USER9> You can ask your contact to use the unregister app here [https://whispersystems.org/textsecure/unregister/](https://whispersystems.org/textsecure/unregister/)

Apple offer a similar tool when leaving iOS [https://selfsolve.apple.com/deregister- imessage](https://selfsolve.apple.com/deregister-imessage)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Wow, tough room! So much negativity. Whisper Systems, thanks for making encryption simple enough that my Mom can use it, and open enough that I can trust it. That is the success story here.

<comment><USER11> I can't wait to see the number of pull requests to their repositories for all the bugs/features people are demanding!

<comment><USER12> That's not really how the world works though. People have de facto ownership over projects. A lot of the features are things which the project have repeatedly rejected. Very few people are going to spend time on things they believe are futile. The technology isn't the problem here, it's the leadership of the project.

</comment></comment></comment><comment><USER13> TextSecure used to be on fDroid, then this happened [https://f-droid.org/posts/security-notice- textsecure/](https://f-droid.org/posts/security-notice-textsecure/). Now it's a GPlay exclusive. I don't have GAPPS so now I can't get it. I'd assume many privacy conscious people don't have GAPPS. I understand the technical hurtles, but it's too big a pill to swallow.

<comment><USER14> Just use Conversations. It can now use the same protocol and is the best XMPP client there is.

I'm completely baffled that the Textsecure people insist on using the gapps package, which is of course an extreme privacy risk.

<comment><USER7> > It can now use the same protocol

Conversations uses XMPP, not whatever custom stuff WhisperSystems worked up for Signal. Are you talking about OMEMO[0]? That's their implementation of Axolotl over XMPP. So same crypto, yes, but different protocol.

[0]:[http://conversations.im/omemo/](http://conversations.im/omemo/)

<comment><USER14> That's what I meant, sorry for the confusion.

</comment></comment></comment></comment><comment><USER15> One of the reasons I didn't install WhatsApp is the sheer quantity of permissions it wants (on Android).

Yes, I realise that this is part of Android's broken security model.

But the Signal app also wants access to practically everything. Device & App History, Identity, Calendar, Contact, Location, SMS, Phone, Photos/Media/Files, Camera, Microphone, WiFi Connection info and Device ID and call info.

Call me paranoid, but making an app with all those permissions seems kind of the obvious place for backdoors and similar.

If there was a 'light' version of the app which only required access the internet, then I'd be much more likely to install and use it. (And maybe if I ended up trusting it, then later install add-ons / the full version later).

<comment><USER16> I'm not associated with Signal or Moxie (though I've been a silent fanboy for ~15 years-- [[hey Moxie if you're reading this and still are hiring, ping me - contact info is in my profile]]), but I'd inherently trust the application more than an average application or company because: a) Moxie has a track history of having a lot of personal integrity with regards to security. Some might say this is blasphemous but I'd put him up there with Bruce Schieder. b) The whole source is available on GitHub, compile the APK and see if it matches. c) it's incredibly easy to take an apk and disassemble it, to see if there are backdoors to begin with if you are really that cynical.

Don't get me wrong, I'm a tinfoil hatter. I use GPG, run my own MTA for anything even remotely important, use DDG over Google, donate to the EFF and use their HTTPS Everywhere plugin, have all of the Ad-Opt outs enabled that Google/Doubleclick/etc make available but try to obscure, etc. I'd be willing to bet that Google is collecting way more information than Signal is.

But hey, that's why rev-eng is so important. A wiser man than me once said "Don't turn it on, take it apart" ;)

<comment><USER17>
      compile the APK and see if it matches

Are deterministic builds possible with the Android toolchain?

<comment><USER7> F-Droid is working on this:

[https://f-droid.org/wiki/page/Deterministic,_Reproducible_Bu...](https://f-droid.org/wiki/page/Deterministic,_Reproducible_Builds)

</comment></comment></comment></comment><comment><USER18> This is great news, and thanks to everyone involved. I've been using TextSecure for a while, and it's really "pretty good security made easy". Yes it is not perfect for the super privacy-conscious (depends on Google Play services and all that) and a fork with these features might be useful, but if I understand the motivation correctly, the main goal is to make good crypto accessible to the masses.

I do have a personal gripe with that, though. I'm hoping a "high up" might read it so I am posting it here. The only people in my contact list who use the app are crypto nerds. It's really hard to get traction. I thought that the TextSecure people had a great idea to solve this chicken and egg problem; a unified messaging app that would handle your sms, and send secure messages wherever possible. One feature that I find is missing though, is the ability to semd broadcast (unencrypted) sms texts. In my experience (Europe, people around 30) this is used a lot, and a drop-in replacement for the built-in messenger would need to have this.

Actually, I would like to see this happen so much that I would be willing to do the work, if someone is willing to provide the handholding...

</comment><comment><USER19> Guys, cut with the negativity. I'm a crypto nerd as well, and with my other truly paranoid friends we use Chatsecure which does not require your number, is compatible with Tor, etc. However, my mom uses Signal, my father yesterday called me via Signal and he's fuckin' 67 years old. That is truly amazing and I admire Moxie et.al for the work they do.

Do you seem to forget that it is encryption for the masses. Not only for the few tin foils like myself. And even if it uses GCM, it's still an great, since i could never persuade my non-paranoid friends to contact me only via Chatsecure. They would say - "why the fuck can't you be like a normal person and use whatsapp or fb messenger?".

</comment><comment><USER20> I really want to start using TextSecure (or Signal now I guess), but the only thing holding me back is it depends on Google Play Services. I love what they're doing and can understand the decision, but still thinks it sucks a bit that the best option for secure communications is so tied into Google.

<comment><USER5> It seems like you don't want to install Google Play Services on your device. My sense is that this isn't because you find the communication over GCM to be inherently offensive (it's just a tickle, after all), but because you don't want to run proprietary software.

There's a very small number of people who find this to be very important, and my experience has been that the strategy is to loudly complain whenever anything depends on play services. Just tactically speaking, I don't think this is going to work in the end, in the same sense that simply refusing to have a mobile phone won't work anymore -- slowly, the circumstances around this technology will make it impossible to refuse.

What I don't understand is why nobody just writes an API-compatible open source implementation of play services. Even if it only supported GCM and nothing else, that'd unlock an enormous swath of apps, and would only require writing a basic implementation of the GCM network protocol.

I'd love to know more if I'm misunderstanding the challenges around doing that. Right now it's part of the reason that I don't pay much attention to that crowd -- everyone seems very willing to complain, but nobody seems willing to do what seems like pretty straightforward work to solve their own problem.

<comment><USER21> There you go:

[https://github.com/microg/android_packages_apps_GmsCore](https://github.com/microg/android_packages_apps_GmsCore)

An open-source replacement of Google services. You can use Signal with this.

<comment><USER22> I wrote a little guide on how to set it up: [http://o9i.de/2015/10/23/howto- gmscore.html](http://o9i.de/2015/10/23/howto-gmscore.html)

Has been working reasonably well for ~10 days now. Note that I'm on Android 4.2, so I might have missed something with regard to newer Android versions.

</comment></comment></comment></comment><comment><USER23> Great! I've been using Signal for iOS and while it's not yet comparable to WhatsApp feature-wise, it's for sure good enough to use.

I find it very difficult to get people to switch from the walled gardens of iOS messaging and WhatsApp (WhatsApp dominates the Dutch market for interesting historical reasons). I've been able to get a handful of privacy conscious friends to switch to Signal/TextSecure, hopefully the cross-platform branding makes this a bit easier.

<comment><USER24> > switch from the walled gardens of iOS messaging and WhatsAp

Doesn't Signal require my phone number? Isn't it dependent on the Whisper servers? Why isn't it a walled garden then?

<comment><USER25> >Why isn't it a walled garden then?

Because the client and server are both OSS?

[https://github.com/WhisperSystems/TextSecure](https://github.com/WhisperSystems/TextSecure)

[https://github.com/WhisperSystems/TextSecure- Server](https://github.com/WhisperSystems/TextSecure-Server)

<comment><USER24> Can I download the the Signal client from any store and then point it to my own server instead of Whisper's?

Did anybody try to run his own server? Can such setup really work?

<comment><USER26> You can run your own server, but there's no federation.

The reason for that I imagine is that they want a privacy preserving automatic lookup method (a single server can confirm phone numbers and allow privacy preserving contact list comparisons for its own clients), and aren't convinced of using a model where the public key is the identifier instead of your phone number.

<comment><USER24> Have you actually tried it, or do you know somebody who have tried? Is the client really fully independent on Whisper servers? Can it work without the mobile connection, just with WiFi?

Does the voice communication work?

I'm asking all this because it seems that the server code was earlier in "you can look but it's not enough to run it" state?

<comment><USER27> I've run the server source as a private textsecure chat app. You can run your own without the proprietary gapps framework app too by mimicking what GCM does on your own back end, and it works with wifi if you change the identifiers to email/nicks instead of phone numbers, but this was for a small number of coworkers nothing of massive scale. This was for business communication from China since at that time TS wasn't working very well behind the GFC but they added another server around that time (I assume, all connections got better) so we abandoned our hacked fork for regular TS/Signal.

</comment></comment></comment></comment></comment></comment></comment><comment><USER28> I have been using Signal (and TextSecure before that) for a while. The two features that would make me use it more would be:

1\. Web client. (I send most of my texts from my laptop, which means I use Hangouts)

2\. Search messages on the client.

Thanks for a great product and keep up the good work.

<comment><USER29> A browser extension for Chrome/Chromium is being worked on! You can track it at [https://github.com/WhisperSystems/TextSecure- Browser](https://github.com/WhisperSystems/TextSecure-Browser)

<comment><USER30> That's excellent. Installing and using GPG (or GPGTools or GPG Keychain or whatever it's name is) on OS X is awful.

Something that's still OSS and cares about UX (like Signal on iOS) would be fantastic.

<comment><USER31> > That's excellent. Installing and using GPG (or GPGTools or GPG Keychain or > whatever it's name is) on OS X is awful.

I don't understand what's so difficult here. The biggest problem is understanding how PGP works, and having to type a password now and then. I use it all the time, to sign - not encrypt - my mail.

<comment><USER30> Finding the app (not the source code), finding out what three names mean (as already discussed), finding which app to launch, realising it only works with Apple Mail and the shell are all parts of the current experience.

Another study on a different client, but same thing: [http://www.scmagazineuk.com/modern-pgp-is-unusable- according...](http://www.scmagazineuk.com/modern-pgp-is-unusable-according-to- academic-study/article/450835/)

</comment></comment></comment></comment></comment><comment><USER32> As was mentioned on another HN thread, why the ridiculous name? "Signal" is an already widely used term when talking about mobile communications. With cell phones in particular.

"I'm trying to get signal on my phone" or "I'm trying to get Signal on my phone". Great(!)

<comment><USER33> Can you suggest a better name?

<comment><USER16> Naming conflicts are a major problem - legal trademark implications, branding issues, searchability, etc etc. A name collision with someone, especially in a remotely similar industry, is problematic.

IronChatApp.com is available. ("Steel"|"Lock"|"Forti"|<anything that conveys security>) + ("Chat"|"Talk"|...).

I'm not sure, there are tons of professional marketing/branding/PR firms who do this really well. TextSecure et al were acquired, IIRC. If the parent company has 50k to throw around, approaching W+K might be a good investment.

Edit: Mea culpa. It was WhisperSystems not OpenWhisperSystems which was acquired, both of which were founded by Marlinspike. This, incidentally, proves my point that naming similarities (WS vs OpenWS) within a similar domain (both mentally associated as "moxie" projects in my mind, in this case) can lead to problems.

<comment><USER29> > TextSecure et al were acquired, IIRC. If the parent company has 50k to throw > around, approaching W+K might be a good investment.

No, moxie's previous company (Whisper Systems) was acquired by Twitter (iirc), Open Whisper Systems is a different project. See [https://en.m.wikipedia.org/wiki/Open_Whisper_Systems](https://en.m.wikipedia.org/wiki/Open_Whisper_Systems) and [https://en.m.wikipedia.org/wiki/Whisper_Systems](https://en.m.wikipedia.org/wiki/Whisper_Systems)

</comment></comment></comment></comment><comment><USER34> Is Signal for Android open source like other things coming out of open whisper? I didn't see it on their github page [0]

[0] [https://github.com/WhisperSystems](https://github.com/WhisperSystems)

<comment><USER35> Signal for Android is effectively TextSecure v3+, with a new label. So it's TextSecure repo that holds Signal's code.

</comment></comment><comment><USER36> What happened to short authentication strings? The SAS protocol is nicely documented in the Silent Circle Instant Messaging Protocol paper [1], but when I go to "Verify identity" in the app I'm asked to verify an obnoxiously long pair of hexadecimal strings.

The phone call feature supports it (with a curious lack of documentation), but it would be easy to imagine a UI that allowed verification without making a phone call and without allowing users to screw it up: one phone shows the SAS string, the other phone asks you to type it in, and neither phone allows IMs to be sent while doing this.

<comment><USER37> Axolotl (the crypto protocol used by Signal/TextSecure) never used SAS. The calling feature uses ZRTP, which does do SAS.

</comment></comment><comment><USER38> I'm really hoping for some intersection of Signal, Ricochet.im and Burner.

* Signal for the security piece.

* Ricochet.im for the Tor (optional?) and anonymous endpoint

* Burner for the idea that we can have lots of throwaway identities (if so desired).

</comment><comment><USER39> Supporting android 2.3 is the equivalent of supporting Windows XP at this point. Why do it? Those Android 2.3 devices will be vulnerable as hell anyway, and I imagine it just makes it hard to support them, too, taking precious time from working on new features or cryptography. IMO, you should support only Android 4.1+ and up.

Also, I'm confused as to why Signal still asks to be my "default SMS app" when I thought the code to encrypt SMS texts was removed from TextSecure? Why would I still want my SMS's handled by Signal?

<comment><USER40> Because you want to store them on your phone encrypted, so that no one else can read them without knowing your passphrase?

Sure, the fact they're transmitted to your carrier in a 100% readable form removes most of the benefit of this, but it can still stop prying eyes from reading your texts.

Also, it's trying to be like iMessage. You have a single messenger, where you default to unsecure SMS for those contacts that don't have Signal, but default to secure messaging for those that do, all in the one app without you having to think about it.

</comment></comment><comment><USER41> I'm glad it's not called RedPhone for Android users, they may get it confused with YouRed I mean YouTubeRed I mean RedTube or whatever it's called now. In all seriousness though - what was (is) with the trend of apps with Red in the name? Red to me gives the idea of danger or something that's stopped / blocked.

<comment><USER42> There's a long history of calling a secure phone a red phone, like the connection between Moscow and Washington during the Cold War.

In the cheesy TV show from the 60s, Batman and the police commissioner had literal red phones that they used to talk to each other.

<comment><USER41> Ah! That's quite interesting and now that you say it I of course remember seeing red phones in films in such situations. Thank you for taking he time to reply.

</comment></comment></comment><comment><USER39> Any ETA for the desktop version?

</comment><comment><USER43> As long as it still requires Google Play I'll still consider it snake oil.

<comment><USER44> It uses Google Cloud Messaging. There needs to be a server in between and I believe GCM is free. Consider a situation where Bobs phone is switched off. Alice sends a message and turns off their phone. Now, Bob turns in their phone. How do we get the message Alice sent to Bob?

<comment><USER45> Give me some open source code that I can run on my own server to manage the notifications for me and for my friends, and allow me to tell the client app on my phone to use it.

That's way better than forcing me to rely on a specific Google server and protocol, which further requires proprietary software on the client.

<comment><USER5> See my comment here: [https://news.ycombinator.com/item?id=10500188](https://news.ycombinator.com/item?id=10500188)

</comment></comment></comment></comment><comment><USER46> I just updated, after which I checked the settings. I noticed that auto- downloading in MMS text messages was enabled (moxie stated for a prior version that it was not, at that time), whereupon I changed the settings to disable. I may well be misinterpreting what I was seeing, but better safe than sorry.

(I'm stuck on Android 5.1 (not 5.1.1) on a Verizon phone. I was thinking of the ongoing Stagefright problems.)

</comment><comment><USER47> If they would add support for sending pdf and doc files and any other file and release a desktop client it would be an unbeatable messenger.

</comment><comment><USER48> Unfortunately when I used Redphone previously the call quality is pretty bad. The volume of the call would get screwed up and I know it's not to do with the signals (lol) because I would hang up and call the person back without redphone and it would work perfectly.

</comment><comment><USER49> Redphone and Signal are all backdoor applications with bugs and exploits that i have found. Even the server is backdoor. Nobody in the security scene could use this, except a kid.

</comment><comment><USER37> Does the calling functionality support any wideband codecs? I've tried RedPhone in the past, but the audio quality left a lot to be desired.

</comment><comment><USER50> [https://www.reddit.com/r/netsec/comments/3rc9br/psa_signal_f...](https://www.reddit.com/r/netsec/comments/3rc9br/psa_signal_for_android_replaced/)

There seem to be concerns about the security of it.

<comment><USER26> Seems like the persistence for automatic VoIP authentication confirmation is currently disabled. Meaning you need to confirm our again each time. But have they confirmed this is in the release, not just in a development branch?

</comment></comment><comment><USER51> Do they have ZRTP in the baseband of normal GSM call?

This is what I have been waiting for.

<comment><USER52> No one has that

<comment><USER51> PrivateWave claim they have.

<comment><USER52> No they don't. It's not mentioned anywhere on their website.

<comment><USER51> Who am I to argue. You could use a standard modem software to create a data channel over voice.

[https://web.archive.org/web/20150303132755/http://www.privat...](https://web.archive.org/web/20150303132755/http://www.privatewave.com/pages/viewpage.action?pageId=5406768)

ZRTP/S

ZRTP/S is an extension to ZRTP protocol. It is designed to make ZRTP-secured calls work across Circuit Switched communication channels such as the traditional telephony networks (GSM, CDMA, PSTN, ISDN, etc) where internet protocol is not available.

On these telecommunication technologies peers can have a sort of "serial connection" through which they send and receive raw digital data.

The communication channel is so narrowband (9.6kbit/s) that it is not possible to run IP (internet protocol over IP) over it.

So, PrivateWave and Philip Zimmermann jointly designed and implemented ZRTP/S. It is a transport and security protocol for Voice over Circuit Switched channel, carefully adapted to be extremely narrowband and minimalistic.

After a year of researching and development, PrivateWave created a library, libzrtps. The library allowed PrivateWave to release the 1st version of PrivateGSM product - PrivateGSM CSD. It allows users to communicate securely in a point-to-point fashion with the ZRTP end-to-end encryption protocol and with a bandwidth as small as 5400bit/s.

Full specification of ZRTP/S and Source Code will be soon published. Anyone willing to create his own project, improve and eventually establish interoperability between Circuit Switched secure telephony (ZRTP/S over GSM) and Packet Switch secure telephony (ZRTP over IP) can benefit from the publications.

Interoperability represents one of the design goals of the ZRTP/S protocol.

<comment><USER52> Their android app description says they need an IP enabled network. GSM is not it. They may have it in their lab, but it's not in a real life useful product. Because it is not possible.

</comment></comment></comment></comment></comment></comment><comment><USER53> Why not on my Nexus 7?

<comment><USER54> If you use a Nexus 7, you probably have a Google account, so you could use a Google Voice number to register.

<comment><USER42> Google Play doesn't make it available to the Nexus 7 (at least, I don't see it on mine).</comment></comment></comment>


First Inaugural Address of Abraham Lincoln - <AUTHOR> https://avalon.law.yale.edu/19th_century/lincoln1.asp <comment><USER2> > We are not enemies, but friends. We must not be enemies.

Yet here we are... the US two party system continues to devolve into a _bitter no-holds-barred us-against-them battle_.

There are so many other foes - both internal and external - that need addressing, yet in-fighting is weakening the nation's foundation while the real enemies are rubbing their hands in glee.

<comment><USER3> I sometimes wonder if today's political divisions are substantially deeper than in the past. Infighting seems to go back to the founding fathers.

So is today the end of democracy? Or standard operating practice?

<comment><USER4> We had a civil war. I would be very interested to see an analysis try and argue that we are more divided now than when we had a civil war over whether states had the right to decide whether or not black people count as people.

<comment><USER5> > we had a civil war over whether states had the right to decide whether or > not black people count as people.

That actually wasn't why the civil war was started. It wasn't until later in the war that emancipation was a goal. Slavery was legal in DC for the first year of the Civil War.

<comment><USER6> Didn't some states _explicitly_ state in their declarations of secession that it was about their right to keep slaves? And with secession being the cause of the civil war, it was about slavery from day one.

<comment><USER4> The very first state to secede made it pretty clear what it was all about.

"The declaration stated the primary reasoning behind South Carolina's declaring of secession from the U.S., which was described as "increasing hostility on the part of the non-slaveholding States to the Institution of Slavery"."

[https://en.wikipedia.org/wiki/Declaration_of_the_Immediate_C...](https://en.wikipedia.org/wiki/Declaration_of_the_Immediate_Causes_Which_Induce_and_Justify_the_Secession_of_South_Carolina_from_the_Federal_Union)

</comment></comment></comment></comment></comment></comment><comment><USER7> In my mind, there are only two indispensable Presidents without whom there really would no be a United States of America: George Washington and Abraham Lincoln. Lincoln had the rare traits of dogged determination, clear headed pragmatism, and a rare humility that allowed him to do the seemingly impossible and hold the Union together while still ending slavery. Truly, one of the great people of history.

<comment><USER8> Yes there would be no USA without him, but as a foreigner, reading that, he seems like a brutal federalist.

He literally says 'we don't want bloodshed, but hey, the constitution says you cannot secede, so there will be bloodshed if you try to'.

We have several secessionist movements around the world: Canada, Spain, UK (Scotland/Northern Ireland), EU (Brexit) - to name just a few.

Literally the 'land of the free', a new country, with a lot of devolved power ... but 'if you try to leave we're going to invade you'. It seems really inconsistent with democratic principles.

Though histories and legalities are quite different, I was pretty shocked by his stark position.

His tone is not aggressive, but his position is pretty hardcore absolutist.

<comment><USER9> Secession in the case of the American South was not a clear-cut case of everyone in a region wanting to live in their own country. The owners of the large slave-based plantations wanted to secede, and since they were the wealthy political elites, they made it happen. However, poorer white farmers who owned no slaves were either ambivalent about secession or outright pro- Union, and of course the black slave population weren't enthusiastic about the Confederate elites' aims.

So, Lincoln was advocating for the large Southern population that did not want to divide the Union, not quashing regional democratic aspirations.

<comment><USER8> So that's a good point but - "was not a clear-cut case of everyone in a region wanting to live in their own country"

Neither was the American revolution in the first place.

Where was the referendum? What would have been the results? Would the secessionists even have won?

Lincoln maybe didn't live in a time where he had a lot of historical examples to follow, fair enough, but the argument that 'some didn't want to separate' doesn't quite cut it fully because that's pretty much a pervasive context.

</comment></comment></comment></comment><comment><USER10> What to a slave is the 4th of July? [https://youtu.be/NBe5qbnkqoM](https://youtu.be/NBe5qbnkqoM)

<comment><USER11> for those who prefer text: [https://teachingamericanhistory.org/library/document/what- to...](https://teachingamericanhistory.org/library/document/what-to-the-slave- is-the-fourth-of-july/)

Although I largely concur with Douglass, he does seem a bit disingenuous about the [https://en.wikipedia.org/wiki/Three- Fifths_Compromise](https://en.wikipedia.org/wiki/Three-Fifths_Compromise) in discussing the Constitution. Further reading indicates that's a deliberate stance: [https://en.wikipedia.org/wiki/Frederick_Douglass#Return_to_t...](https://en.wikipedia.org/wiki/Frederick_Douglass#Return_to_the_United_States)

"To side with the right, against the wrong, with the weak against the strong, and with the oppressed against the oppressor! here lies the merit, and the one which, of all others, seems unfashionable in our day." (that day being 1852)

</comment></comment><comment><USER12> "I have no purpose, directly or indirectly, to interfere with the institution of slavery in the States where it exists. I believe I have no lawful right to do so, and I have no inclination to do so."

Damn, Lincoln! Makes me think we need those statues of Jefferson Davis (upside-down, for my taste) -- because now it seems clear that if the south hadn't seceded, emancipation would not have happened for decades _if at all_

<comment><USER6> Yeah, seems the Confederacy was the in itself the cause of tis own downfall.

Edit: As a what-if question, where would the US have stood in that case during the two World Wars?

<comment><USER12> It is terrifying to think about what present day slavery would look like if it had been further enshrined as a right of the southern states.

Or, if Lincoln had simply allowed succession.

<comment><USER13> [https://youtu.be/Uyz-AyAOLek](https://youtu.be/Uyz-AyAOLek)

From: [https://www.imdb.com/title/tt0389828/](https://www.imdb.com/title/tt0389828/)

</comment></comment></comment></comment><comment><USER14> I've found his Second Inaugural to be his more interesting [https://www.ourdocuments.gov/doc.php?flash=false&doc=38&page...](https://www.ourdocuments.gov/doc.php?flash=false&doc=38&page=transcript)

The first sounds like a man trying to hold it together by word with some appeasements.

<comment><AUTHOR> Yes, but it's well known. It's inscribed on the inside wall of the Lincoln Memorial, along with the Gettysburg address. I had never read his first inaugural address before. I'm 48.

<comment><USER14> You really need to frame the speech with some understanding of the electoral breakdown of the election. [https://en.wikipedia.org/wiki/1860_United_States_presidentia...](https://en.wikipedia.org/wiki/1860_United_States_presidential_election)

</comment></comment></comment><comment><USER11> Context:

24.12.1860: [https://en.wikipedia.org/wiki/Declaration_of_the_Immediate_C...](https://en.wikipedia.org/wiki/Declaration_of_the_Immediate_Causes_Which_Induce_and_Justify_the_Secession_of_South_Carolina_from_the_Federal_Union)

08.02.1861: [https://en.wikipedia.org/wiki/Provisional_Constitution_of_th...](https://en.wikipedia.org/wiki/Provisional_Constitution_of_the_Confederate_States)

04.03.1861: First Inaugural Address of Abraham Lincoln

12.04.1861: [https://en.wikipedia.org/wiki/Battle_of_Fort_Sumter](https://en.wikipedia.org/wiki/Battle_of_Fort_Sumter)

</comment><comment><USER15> Op - thanks for finding and posting. I enjoyed reading it, and was pleased to see evidence intelligent rhetoric with heart. Now at this point Lincoln said he would not stop slavery -- that would change though.

</comment><comment><USER16> The last paragraph of this speech is perhaps the best appeal to our better selves a US politician has ever made, in my opinion. The way he seamlessly shifts from acknowledging the current madness to a lofty call-to-greatness gives me chills every time I read it.

> I am loath to close. We are not enemies, but friends. We must not be > enemies. Though passion may have strained it must not break our bonds of > affection. The mystic chords of memory, stretching from every battlefield > and patriot grave to every living heart and hearthstone all over this broad > land, will yet swell the chorus of the Union, when again touched, as surely > they will be, by the better angels of our nature.

</comment><comment><USER17> Yale should change his name.

<comment><USER12> That's the best idea I've heard! Rather than Yale changing its name, change Elihu Yale's name to something else, like Elihu Shitbag. Yale can get abstracted out and maybe become an acronym. Young Angry Leftwing Elitists, or something.

(Class of '03 -- I love Yale)</comment></comment>


Zuckerberg's Commencement address at Harvard - <AUTHOR> http://news.harvard.edu/gazette/story/2017/05/mark-zuckerbergs-speech-as-written-for-harvards-class-of-2017/ <comment><USER2> It is a great speech. He is hitting some very important notes that I don't see too many leaders ever make.

Purpose and community vary from culture to culture but they are core to all cultures. It's something we can all agree about strengthening.</comment>


IBM's response to Web 2.0 start-ups: We're Safer - <AUTHOR> http://www.cio.com/article/133000/IBM_s_Web_._Sales_Pitch_We_re_Safer With innovative web-based start-ups changing the business model for how software is delivered, IBM tries to play its cards by playing up its emphasis on security.
<comment><USER2> It's CIO magazine. Anything IBM says is gold, since most CIO's, and the companies they work for don't realize that they haven't been invited to this party.

</comment><comment><USER3> "Designing security in" is not enough to guarantee security. You also need to have good programmers. I wouldn't be surprised if the average web 2.0 app had better security than IBM's enterprise imitations thereof, simply because the guys writing it were so much smarter.

<comment><USER4> Reddit stored passwords in plaintext for a year... you can't make such assumptions. There are likely smart guys working for IBM, as well. I think avoiding bureacracy, not having dozens of people work on the same code, and being able to release to the public a small app with little code and little publicity and grow from there is what helps startups.

<comment><USER5> Reddit stored passwords in plaintext not because they were stupid, but because they thought they were being user-friendly. Spez knew all about hashing passwords, but the price of hashing passwords is that you cant't email a user their old password, you can only give them a link to reset it. In a comment after the plaintext password scandal broke, spez indicated that he considered this to be enough of an annoyance to be worth avoiding. Besides, nobody will actually use an important password for a social news site, right? ;-)

IMNSHO they made the wrong choice, and I think they'd agree now. But it wasn't because they were stupid or ignorant. They made a judgment call, and it turned out their users disagreed. It's not easy servicing a consumer website with hundreds of thousands of users: no matter what you do, _somebody_ will be pissed off.

Besides, at least they weren't like GreatestJournal.com, which not only stored their passwords in cleartext and used an open-source (LiveJournal) codebase, but _left their database server exposed to the Internet_. My friend did a simple "SELECT username, password FROM user" and ended up with 65K passwords.

<comment><USER6> Did reddit disclose that the pwd was being stored plain-text?

If they had, it probably wouldn't have bothered people much.

<comment><USER5> No, I don't believe so, at least not until after the scandal broke.

It's trivial to find out though, for any website - do a "Forgot password" retrieval, and if they send you the password itself, it's stored in cleartext. If they send you a link to reset it, it's hashed.

IIRC, Reddit, MySpace, all LiveJournal clones, and IMDB all store in plaintext. Drupal installations hash them.

</comment></comment></comment></comment></comment><comment><USER7> It's just marketing by F.U.D. (<http://en.wikipedia.org/wiki/Fear%2C_uncertainty_and_doubt>).

If you ever try selling to a corporation (especially as a startup), you'll come across it all the time.

</comment><comment><USER6> Part of the problem is that "Web 2.0" still doesn't really mean anything.

When that article says Web 2.0, it vaguely means any web application developed by a small company in the past year or two.

</comment><comment><USER8> Security is boring. If there's one thing that big companies do right, it is boring.

</comment><comment><USER9> If this is true, then all IBM needs to do is buy more web2.0 websites.</comment>


Ask HN: Why does broadband still suck in 2009? - <AUTHOR>

Is it me, or are providers just completely missing the boat? Does anybody except bittorrent addicts really care about the difference of 10Mbps down versus 50Mbps down?
Personally I want: - FAST uplink - low latency - Even faster uplink
Those of us with high-end Digital SLRs know the pain of staring blankly at our laptops slowed to a crawl while uploading many gigabytes of RAW files to flickr (or other photo sharing sites). Forget about video, I drive to the datacenter and do a local network copy for that.
As for latency, ISPs seem more concerned with limiting torrents than making sure they have even semi-decent peering arrangements. Video chat from SF to Seattle is a jittery, high latency nightmare, because my ISP is more concerned about rolling out and cashing in on VOIP features than running a stable network.
From my experiences, this is endemic. American broadband infrastructure SUCKS. I would expect it to be awful in the country, suburbs, or small cities.. But why don't we have fat uplinks to highly peered ISPs in dense urban areas like San Francisco? <comment><USER2> 1) Why did Verizon lobby broadband competition out of my area?

2) Why do I have to pay Verizon (oligopoly with Comcast in my area) $100 to get a static IP address?

3) Why does the fine print way down in my Verizon FIOS license agreement forbid me to hook any kind of server to their network?

4) Isn't the Internet supposed to be a MULTIWAY communication channel -- not just some kind of enhanced television network?

5) Look at how much Verizon invests in lobbying to understand how much they hate real competition and how little they care about providing the kind of service we'd really like to see.

</comment><comment><USER3> I am guessing economies of scale make it hard to compete with local cable monopolies. Next time I move I'm thinking of ditching cable and just getting faster ADSL for a bit less money, since I do not much care for TV. I entirely agree about the lack of choice for upload speeds.

Would love to hear from those with ISP experience about the logistics involved in setting this up. There must be a better way.

Some interesting background information on stimulus $ for rural broadband: [http://www.google.com/hostednews/ap/article/ALeqM5iK8SjjFiVf...](http://www.google.com/hostednews/ap/article/ALeqM5iK8SjjFiVfL5Fm- aDChr9gB9_Z9gD9CLA4BG7)

</comment><comment><USER4> I suspect people with high-end digital DLRs uploading RAW files on a regular basis constitute a small portion of your ISP's customer base, so it probably is just you.</comment>


The Definitive Data Scientist Environment Setup - <AUTHOR> https://davidadrian.cc/definitive-data-scientist-setup/ <comment><AUTHOR> Hi guys, wrote this post about how to get a decent Data Science environment. Appreciate your feedback :-)

<comment><USER2> What do you use for version control? Do you version your data as well?</comment></comment>


How to Get into Y Combinator - <AUTHOR> https://www.aptible.com/blog/y_combinator.html <comment><USER2> _Before our interview, Frank and I:_ \- _Collected all of the known Y Combinator interview questions we could find_ \- _Wrote out 1-2 sentence answers_ \- _Agreed on which founder would lead on the answer, and_ \- _Practiced with flash cards until we could answer every question fluently_

Sounds like YC has turned into something of a cram school.

<comment><USER3> You mean figuring out answers to important business issues like "who are you users?", "how will you acquire them?", and "how will you make money?" and then having a plan how to clearly communicate them is cramming and nothing more?

<comment><USER4> No, needing sessions with flash cards is cramming. Knowing those answers and communicating them should be something you can do on the fly.

<comment><USER5> So I guess people should stop preparing for Google interviews by looking at and practicing the myriad of coding puzzles they've previously asked. You'd be stupid not to.

<comment><USER6> Consider Management Consulting interviews, where the firm tells you exactly what to expect and even points you towards prep books.

They test for how prepared you are and how motivated you are in working to be given an offer.

Asking "what the interview tests for" is a pertinent one as any entrance process becomes increasingly formulaic.

</comment></comment></comment></comment></comment><comment><USER7> Very helpful! It's good to answer those questions even if you are not aiming to apply YC very soon.

I converted all the questions to a google spreadsheet. Feel free to make a copy and answer them privately :) [http://goo.gl/r3RXck](http://goo.gl/r3RXck)

<comment><USER8> You are awesome.

</comment></comment><comment><USER9> All this advice looks excellent for running a startup, succeeding at it, and pitching to investors. However, Y-combinator's partners in particular have a habit of advertising "we don't care as much about your idea as about your team because the idea usually gets overhauled drastically anyway". This advice seems a bit contrary to that; at best, it's proof that you can go through the thought exercise of imagining what all of this looks like. But being able to do plan out a killer business with one idea doesn't necessarily translate to being able to do it with another.

Has YC changed its standards about people vs. ideas now that they can afford to be so selective? Or is planning a business a skill that's generic enough that proof of doing it in one instance is good enough to prove that a person can do it generally?

<comment><USER10> > However, Y-combinator's partners in particular have a habit of advertising > "we don't care as much about your idea as about your team because the idea > usually gets overhauled drastically anyway".

This is not true for any ycombinator startup I have worked at. The idea has always been key, but the team is also very important.

<comment><USER9> That certainly used to be an attitude Y Combinator had ([http://old.ycombinator.com/noidea.html](http://old.ycombinator.com/noidea.html)), although it sounds like that didn't work out. Paul Graham's essays also perennially mention that the people are far more important than the ideas ("Another sign of how little the initial idea is worth is the number of startups that change their plan en route.", "What matters is not ideas, but the people who have them. Good people can fix bad ideas, but good ideas can't save bad people"), but it might be that I've been projecting too much of PG's views onto YC as a whole.

It makes a lot of sense to me that the idea would absolutely be key, which is why I've always been a bit suspect of the "people >> ideas" attitude. Not to say that the team isn't the more important piece, but I'm suspicious of the idea that a great team will usually gravitate towards a good business, left to their own devices.

</comment></comment></comment><comment><USER11> Most blogs that describe tips and best practices when applying to YC have one advice in common - "Get customers", "Prove that someone needs your product", "Get signups, email addresses" etc. And while that is a *very8 valid and important point, for some of us though its harder than that. Even if one has a prototype, the companies they work for have strict policies that prevent doing business on the side, let alone the fact that the H1 visa also explicitly prevents you from having any other source of income or starting a corp. The only options would be to go all in and go to their home country to develop the product further, at which point they've abandoned everything they've worked hard for all this while, - or - wait for a green card, which is elusive if you are from one of the populous Asian countries. What other options does one have? Have any H1s successfully made it to YC? Could they describe their experience?

Also, please correct me if I'm wrong here, but despite assurances from YC folk and Sam himself that you can and should apply even if you have just an idea or prototype, blog after blog suggest you need to be much further than that to get through the tough competition.

<comment><USER12> YC is just three months, you don't need a visa. (Although most experts say you'd put the chance on your side to get one and move to the bay.)

>> [...] should apply even if you have just an idea or prototype, [...]

Yeah.. this one I'm not sure. I would say it really depends of how formidable the team is and what's the idea. Most YC companies joined with _some_ tractions and market validation. If you really don't have a prototype, then you need to _somehow_ convey that it has product market fit and how you can execute it. Just speculating here, but it could be that you have had previous startup experience, or maybe some unfair advantage, or you have an exceptional team that have been working together for 10 years, whatever.

<comment><USER11> The question is not about the visa after you get into YC and moving to the Bay area, its about starting a business while on a visa that prevents that.

For After, you could move from an H1 to a B1, or apply for a H1 using the newly formed company with the money YC gives you. But what about before? Looks like no one has done this yet.

<comment><USER12> If this is really what is stopping you from starting your business or applying to YC, feel free to send me an email and I could walk you through what process we used (Same situation here: different country, applied to YC, establishing ourselves in the bay).

</comment></comment></comment></comment><comment><USER13> I have used Aptible and can confirm that Chas & Frank follow through with "Step 0: Make something people want." Deployment on their platform is based on git and a Dockerfile in your project directory. For me, it's definitely an improvement over Ansible and its hacked-on AWS support.

I wish them the best!

</comment><comment><USER10> > How to Get into Y Combinator

Luck. Competence, execution and a decent enough idea are requisite, but mostly luck.

</comment><comment><USER14> For being a disruptor, YC should do away with the interview as the gate. Focusing on the interview is similar to focusing on a resume. People are engineers, scientists, artists, makers, doctors, and certainly not resume writers.

<comment><USER15> I have a cousin who is a barrister. She studied Ancient Greek at Oxford. She was hired out of school on the grounds that anyone who can do well at ancient greek can learn to practice law. From a hiring perspective, this makes a large amount of sense.

</comment></comment><comment><USER16> Most questions seem to be geared for tech base companies, but with the request for startups some other type of businesses are going to apply. Which questions our Food based company should focus on?

</comment><comment><USER17> The questions provided cover everything in a business plan so it's interesting to see the overlap with a plain old business plan and an agile question-answer based template.

</comment><comment><USER18> Batchmate of Aptible here (Zen99) - this information is spot on! Great guide by Chas and team.

</comment><comment><USER19> lol @ the clinkle joke

<comment><USER20> I enjoyed that one as well :)

</comment></comment><comment><USER21> s/make something people want/make something people want to pay money for/</comment>


New York City issues first illegal Airbnb fines - <AUTHOR> http://www.theverge.com/2017/2/7/14532388/nyc-airbnb-first-illegal-renting-fines-issued <comment><AUTHOR> It looks like for now they are focused on the hosts with several listings on Airbnb. What surprises me is that there are still lots of "entire apartment" listings in NYC. I would think that at this point the risk wouldn't be worth it.</comment>


My Own Patent Apologies (2014) - <AUTHOR> http://blog.dustinkirkland.com/2014/06/elon-musk-tesla-and-my-own-patent-apology.html <comment><USER2> Honestly I think the apology is a bit unnecessary but I'm glad many are turning around on the ideal of technology patents. Yeah patents on obvious designs not only hinder but hurt innovation (one click, anyone?) but even patents on non-obvious but obviously-trending designs can slow progress in many areas.

I'll be honest though I wish patents worked. It would be nice to have a way to protect the "little guy" when they figured out a break through, showed it to the "big guy" and was then ripped off. But in practice the "little guy" would need millions of dollars just to create the case and go after the "big guy". That practically makes the patent system a place where only the "big guys" can play which defeats its purpose.

So maybe it's time to do something radical and just completely end or retard its abilities. I'm not sure if the current political environment will change this system any time soon though. Most patent holders have large sums of political influence.

<comment><USER3> > It would be nice to have a way to protect the "little guy" when they figured > out a break through, showed it to the "big guy" and was then ripped off.

It was the "big guys" that lobbied for increased IP protections in the 1990's, for a pretty good reason: protection from foreign competitors. I worked with a big router company once, who told me that a Chinese company had ripped off their router designs down to the English silk-screened assembly instructions on the PCBs. All of the little-company versus big-company stuff is small potatoes compared to that overarching concern.

That's why a lot of big technology companies are still strong supporters of patents. They don't want Chinese companies copying their chips down to bugs in the firmware and undercutting them on the market because they don't have any need to recoup R&D costs.

<comment><USER4> your statement is contradictory - you claim large corps increased IP protection yet what we see today is that patents are the weakest they've ever been.

<comment><USER3> That's not true. While recent Supreme Court decisions have cut back certain kinds of patents, the U.S. has successfully exported its patent system abroad through treaties and the WTO. Protection of IP in say China is a lot stronger now than a couple of decades ago.

<comment><USER4> sure, there are numerous jurisdictions outside of the U.S. where patents have become stronger, but enforcing a U.S. patent is the weakest it's ever been.

</comment></comment></comment></comment></comment><comment><USER5> The fact I can sit down and solve a problem and then get sued for it because someone else happened to solve it the same way without me even being aware of it is terrible.

<comment><USER6> Agreed. I believe a reasonably qualified engineer would produce similar solutions to those same problems. With this patent system, you have to search the patent databases before your start to implement your idea. I've had several buzzkills on ideas because I found them to have been patented. Perhaps my implementations would have made the world better, but we will never know because of the daunting prospect of facing a legal battle.

</comment></comment><comment><USER7> Releasing the patents is a bad idea. A prior discussion on Schneier's blog about dealing with the patents came to a different conclusion: amass patents to use in self defense. It's what all the big names do. Otherwise, you're just going to be sued into oblivion by big names and the trolls with little leverage to use.

So, if the concern is innovation, then it's best to patent everything possible into non-profits and public benefit corporations that promise to never use or charge any open developments. Not just promise but in their charters, etc. Might have a small membership fee just to keep it going. Then, any threats to open projects are made with lawsuits from this organization going against them. I think there's already an alliance in OSS doing something similar.

Yet, the lesson from prior discussion was: "a good offense is the best defense" given virtually anything can be patented and sued over. Too broken for an avoidance strategy or even fair, payment strategy.

<comment><USER8> I'm not sure leverage counts for much anymore, considering Oracle was still able to go after Google recently despite Google's own massive patent holdings.

<comment><USER9> 1\. Google likely had a much weaker portfolio when Oracle sued. It is much, much stronger now.

2\. There's probably both much overlap in Google's patents and Oracle's technology.

3\. The Oracle v. Google case is now primarily about copyright rather than patents.

<comment><USER8> Regarding point 1, what's stopping Google from leveraging those patents now, if point 2 allows for even a sliver of potential? I mean, a single function seems to be causing Google quite a bit of grief in this lawsuit, so that seems to be enough.

Regarding point 3, I had forgotten that part, but I don't quite get the distinction where it affects the "mutually assured destruction" feature of patent libraries. Even though the sword Oracle swings at Google says "copyright" on the hilt rather than "patent", can Google still not file patent-based countersuits regardless? In other words, if Person A and Person B are in a standoff with guns leveled at each other, why would Person A simply allow Person B to stab them instead?

<comment><USER7> You're better off looking at Apple vs Samsung or another case where it's apples to apples in the portfolio. Having leverage doesn't guarantee anything. However, a smaller vendor would likely not have lasted that long or cut a similar deal that preserved the bottom line. So, size of income plus patent portfolio helps.

There's been a number of suits and countersuits between companies in similar industries with overlap in portfolio that got resolved way differently than big companies coming after startups or SME's with nothing. It would probably be worth a law student in this area doing a full survey and analysis to see how the variables involved contribute to the situation.

</comment></comment></comment></comment></comment><comment><USER10> Would Twitter's Innovator's Patent agreement have worked out better for him?

</comment><comment><USER11> It's amusing to see Canonical held up as a good example. Of course they're anti-patent. They repackage the work of others and sell it.

</comment><comment><USER12> I own a few patents, as I'm sure many on Hacker News do. As I write this, I'm in the middle of a patent lawsuit with Square ([http://www.plainsite.org/dockets/24u13j6tr/california- northe...](http://www.plainsite.org/dockets/24u13j6tr/california-northern- district-court/think-computer-corporation-v-square-inc/)). I don't apologize for it.

I'm not a troll. I'm an inventor and I made a real product. I'm also someone well known for having dealt with intellectual property theft as a victim. I also spent a year at Stanford Law School poking around as a fellow as I developed what is now the most accurate patent assignment database there is-- far more accurate than the official one--on PlainSite.

I'll be deliberately terse with my comments here, but the upshot is that the problem here isn't the _idea_ of patents. They are a lottery ticket to a lawsuit as Elon Musk has said, but they're also an important insurance policy for serious innovators. (Another such insurance policy is VC, but not every serious innovator has VC backing.) The problem is the legal profession. Patent trolls (and other sorts of IP trolls) are by and large the creations of corrupt lawyers. Inventors are slighted in favor of large corporations because of "upstanding" lawyers. Transparency is impeded everywhere you turn in the patent world courtesy of the patent bar. And unlike the USPTO TTAB, where corporations can represent themselves at virtually no cost, in the USPTO PTAB, the patent bar has seen to it that you must hire a lawyer.

It's not a coincidence. The system is incredibly broken, but if you want to blame someone, blame the lawyers for ruining what might have been a workable and necessary paradigm.

<comment><USER13> If anyone is curious about the patent the parent is suing for, it is included in the documents he linked to. Here is an handier link: [http://www.plainsite.org/dockets/download.html?id=132275042&...](http://www.plainsite.org/dockets/download.html?id=132275042&a=3&z=d3106d66)

I'm afraid that I (and surely many others on Hacker News as well) will not be cheering you on. It's pretty much the definition of something I do not want to be patentable.

I understand it will probably not be possible to convince you to change your mind, so I won't insult you by trying. However, keep in mind that your stance really _is_ diametrically opposed to many groups who do not want software patents.

<comment><USER14> It's the "for payments" version of all those "but on a _screen_ " patents that people here hate on so much. Prior work includes but is not limited to Facebook tag suggestions, and and just about everything done in facial recognition on any laptop in the world.</comment></comment></comment>


Germany's Samwer Brothers Rumored to Launch a Square Clone Soon - <AUTHOR> http://techcrunch.com/2012/04/04/what-took-so-long-germanys-samwer-brothers-rumored-to-launch-a-square-clone-soon/

<comment><USER2> You can say about Rocket internet what ever you want, but in terms of strategic and tactical execution they are really good. They almost completely lack on the innovation part of it.

To me. they seem like the guys producing Transformers 13, they play it save on the idea side. On the other hand they exploit almost every hole the find in the execution of these ideas. Wether that will pay of or not in the long run, I'm not sure. It definitely payed of monetary already.

Funny thing is we still have people in Germany complaining about the Chinese stealing other peoples ideas...

</comment><comment><USER3> The biggest and best deed of the Samwer brothers was to make Internet entrepreneurship big in Germany. Before they sold Alando back in the day to ebay and later exited Yamba only few people regarded entrepreneurship as a viable career path. It was mostly due to their success that people started following their example. Nowadays, whenever you read about a startup being funded in Berlin chances are that both the CEO and her company's seed investors were at one point working for Rocket Internet, e.g. Wooga.

<comment><USER2> You mostly right, Yamba was basically the first time I slowly started that entrepreneurship was actually a viable option. Up to then, start-ups were companies like Yahoo, eBay and Amazon, meaning it was impossible to do that in Germany.

And while it is completely understandable that they now try to make the last cent possible,they took a good thing too far. IMHO there are better things to do with their ship load of money sitting around than founding yet another clone to exit to the original innovator.

</comment></comment><comment><USER4> iZettle (<http://www.izettle.com/>) are looking like a formiddable European opponent for Square.

On another note, the German Pinterest clone is so disgustingly similar to the original that I wouldn't be surprised if there were legal grounds to sue them.

I think it's important to inspire people by achieving success without resorting to scumbag methods. Especially with companies like Zynga around.</comment>


A Guide on Layout Types in Web Design - <AUTHOR> http://sixrevisions.com/web_design/a-guide-on-layout-types-in-web-design/

<comment><USER2> Cake or paper work!</comment>


AMD Ryzen-Powered Raspberry Pi Rival Uses Radeon Vega Graphics – Tom's Hardware - <AUTHOR> https://www.tomshardware.com/news/axiomtek-capa13r-amd-ryzen-radeon-vega-raspberry-pi <comment><USER2> There are so many SOC boards that pretend that they are Raspberry Pi rivals. If they are double the price, and consume more than twice the power (the one listed takes 12V instead of 5V power supply), and more than double the footprint size in area (same length, almost triple the width), then _of course_ they will have better performance for those things that aren't even Raspberry Pi targets. They are not rivals because they aren't even directed at the same market.

There are many actual rivals, in the same price range, in the same performance range, same power economy, same relative footprint size, targeting the same audience. But this one isn't one.

Having said all that, I might actually get one if the price is reasonable.</comment>


The Function of Discontent - <AUTHOR> http://nautil.us/issue/58/self/unhappiness-is-a-palate_cleanser <comment><USER2> If it's possible to always be depressed, why is it not possible to always be happy?

<comment><USER3> I'd imagine, although I'm not entirely sure, for a similar reason why a lightbulb won't always be on. Something needs to power it, and without the power it can sit in the off-state for eternity. If the power stops, the light stops. With happiness, something needs to start it, and without anything to keep it going, the happiness goes away.

You could also say "Evolutionary Reasons," although that's much less interesting and more of a cop-out. The argument on that front is just that sadness is the optimal state of a human being to succeed, whilst happiness is the way to reward them for succeeding. If they're always happy they'll change nothing. It makes sense, obviously, but it's very much a low-hanging fruit.</comment></comment>


High in the Cascades, a lone fire lookout still keeps watch - <AUTHOR> https://www.nytimes.com/2019/09/28/us/fire-lookout-tower-washington.html <comment><USER2> I used to hike up Granite Peak in the Cascades, maybe 6 times in the 90s and 00s. That's about 4 miles in, 3800 feet up, to reach a fire lookout tower much like the one in the article. One memorable time, I got passed by a lookout staffer muscling up the mountain with a propane tank strapped to his already heavy pack. By the time I caught up with him at the top, the tank had been put to good use, baking a batch of chocolate chip cookies. He shared :-)

<comment><USER3> You can still find sherpas in Europe, restocking the Chatas. Really makes you appreciate the food and beer more, knowing someone carried it up on their backs.

</comment></comment><comment><USER4> You play as a fire lookout in the "walking simulator" Firewatch ([https://www.firewatchgame.com/](https://www.firewatchgame.com/))

<comment><USER5> It's pretty amazing how well Firewatch captures the feel of that point in time. Your character's backstory was pretty well designed to give you an emotional connection to the game. Back when people first started discussing games creating interactive movies, what we ended up with were mostly electronic versions of Choose-Your-Own-Adventure books. Firewatch is a nice evolution of interactive fiction into something an order of magnitude better.

</comment></comment><comment><USER6> NPR ran a similar story two weeks ago:

 _A Fire Lookout On What 's Lost In A Transition To Technology_

[https://www.npr.org/2019/09/15/749547034/a-fire-lookout- on-w...](https://www.npr.org/2019/09/15/749547034/a-fire-lookout-on-whats- lost-in-a-transition-to-technology)

</comment><comment><USER7> Something I fantasized about after reading Dharma Bums by Kerouac in college.

</comment><comment><USER8> It's not possible to read this article without paying. Tried incognito as well as the web link.

<comment><USER9> I never get paywalls on the NY Times, I'm not sure why. I'm using Firefox with uBlock Origin and Privacy Badger, and my connection comes from the United Kingdom, if it helps.

<comment><USER10> I think it's an IP thing. Maybe something to do with an interpretation of the GDPR.

I'm in Switzerland and have no problem reading the NYT, but every time I'm in the US I notice the paywall.

<comment><USER11> Nope. I use Firefox + uBO from multiple machines/IPs in the US and I never see a paywall either.</comment></comment></comment></comment>