1. 27

    Please go and fix this!

    If you do not participate in any political movement or party, you are enabling these sociopaths. No amount of technology can fix bad policies. If this continues, more people will just plainly refuse to travel. Eventually, the very same sociopaths will prohibit encrypted cross-border digital communication. Then what?

    1. 6

      If you do not participate in any political movement or party, you are enabling these sociopaths. No amount of technology can fix bad policies.

      I don’t intend to debate my vaguely anarchist/reactionary political philosophy on lobsters, but I just wanted to point out that it is reasonable to disagree with this. It seems to me that technology (in the software/hardware sense, or institutional/social/etc.) is more or less the only thing that can fix and prevent bad policies in the long term. I am extremely skeptical that most Western democratic processes can do the same; indeed, one can reasonably blame many examples of bad policies or poor governance on democratic process under universal suffrage.

      I am very happy to remain passivist in most politics for exactly that reason - I believe that staying away from the fray and working diligently on technology is a far more realistic and peaceful method for effecting lasting positive change. If it’s “you’re either with us or against us”, then the only way to win is not to play.

      1. 8

        I don’t intend to debate my vaguely anarchist/reactionary political philosophy on lobsters, but I just wanted to point out that it is reasonable to disagree with this. It seems to me that technology (in the software/hardware sense, or institutional/social/etc.) is more or less the only thing that can fix and prevent bad policies in the long term.

        Counterpoint: No amount of technology will save you from rubber-hose cryptanalysis.

        1. 3

          Do you believe that the typical lobsters reader’s contribution to a) politics or b) technology is more likely to reduce the incidence of rubber-hose cryptanalysis? Why?

          1. 10

            The point is that it doesn’t matter how you’ve hidden your data if you’re required by law to give it up. The typical lobsters' users contribution to politics may be small, but it is the only way forward.

            1. 4

              We need to create a society that supports people keeping their data encrypted. Direct involvement in politics is one possible way to make that more likely, but it’s at least conceivable that e.g. creating more usable encryption tools so that more people use encryption might be more effective.

              1. 1

                But without political support for encryption the tech can be rendered useless.

                Edit: I may have misunderstood your point. Do you mean that creating more usable encryption could be an approach to bringing it to the general public’s attention and from there it can gain mindshare?

                1. 1

                  Yeah

              2. 2

                The point is that it doesn’t matter how you’ve hidden your data if you’re required by law to give it up.

                How do you figure? There are several obvious technological countermeasures to rubber hose cryptanalysis, including plausibly deniable encryption with different passwords unlocking “fake” or “real” volumes.

                1. 2

                  If this ever gets to be a common practice, authorities are going to start seeing through it. In particular, if the data you’re protecting is your social media presence, it’s completely implausible to try to claim that you don’t have one. And it does seem that that’s a lot of what these searches are aimed at, right now.

              3. 8

                Do you believe that the typical lobsters reader’s contribution to a) politics or b) technology is more likely to reduce the incidence of rubber-hose cryptanalysis? Why?

                Politics (ok, real answer: that’s a false dichotomy. Do both. But if you insist that it’s one or the other, I think politics is the more important). At the end of the day, the only thing that stops the government from beating you to death with a rubber hose is making sure the government doesn’t want to beat you to death with a rubber hose.

                As long as future governments share the attitudes of the last several (in favor of torture, in favor of surveillance, in favor of compromising civil liberties, convinced that the ends justify the means), I think that even succeeding in making strong encryption ubiquitous would simply encourage them to double down on using detention, force, and intimidation to achieve what they can no longer achieve through passive surveillance. I do not believe that there is a point whereat these people will look at the state of technology and change their behaviors and desires. To paraphrase Swift, you’ll never be able to present them with a set of facts about technology that will cause them to reason their way out of a set of positions they didn’t use reason to reach in the first place.

                Couple this with the fact that we’re staring down the barrel of a jobless future which is going to make technologists very convenient scapegoats for an unemployed and desperate populace, and I think you have a recipe for Bad Things.

                We’ve seen a broadly ignorant coalition of people with a shaky grasp of reality and a stock of poorly spelled signs successfully takeover the Republican party and now the Whitehouse inside of a decade. Mass political engagement from the traditionally disengaged tech sector has a real chance at changing the people making decisions.

                It’s slow and tedious and not as nice as sitting at home and typing at your computer, but getting involved in local politics is an important and necessary act if we want things to change, in my opinion.

                1. 1

                  I do not believe that there is a point whereat these people will look at the state of technology and change their behaviors and desires. To paraphrase Swift, you’ll never be able to present them with a set of facts about technology that will cause them to reason their way out of a set of positions they didn’t use reason to reach in the first place.

                  Oh, I wasn’t expecting it to be a matter of reason. Rather a matter of getting people to love their crypto.

                  1. 6

                    I get your idea there – but I’m skeptical that ubiquity will achieve it. Anecdata: My mom has an iPhone. Its contents are pretty strongly encrypted by default. Her iMessages to me are encrypted. Etc. Apple, for all their faults, have been trying to make that stuff ubiquitous for people like her.

                    Consequently, because it’s so ubiquitous and easy to use and on by default, it’s completely invisible to her. She doesn’t conceive of herself as someone who even USES encryption, and certainly not as someone who is emotionally invested in its legality. Presented with these facts, her response is along the lines of “I have nothing to hide, so I have nothing to fear”.

                    Getting her, and the broad populace like her, to emotionally invest in the legality of encryption is an education problem, which is a subset of political problems rather than technical, in my view.

            2. 3

              Not just that, but most people in the world are not in the United States, and are not United States citizens. They have very little influence on United States politics (read none), but they can have an influence on the technology.

              1. 1

                They can not go there. It would take a pretty deep dip in tourism and very low or negative migration or hell freezing over before they revert most of these policies though. The main outcome they will see is people with brand new “empty” phones. I don’t know if the average TSA employee really cares though, “Hey, no bomb schematics or whitehouse plans, get out of my face!”.

          1. 3

            Just tried it out! Great stuff.

            1. 2

              I give it a positive review too. Voice calls are much clearer with less latency and jitter. Video is surprisingly sharp and free of artifacts. I was on a spotty LTE connection and the other party was on good Wi-Fi.

              This might have just made Signal a real video calling contender, to say nothing of the benefits of E2E encryption.

              1. 1

                How is the battery life? I’m looking to replace duo and hangouts for video calling my android friends because the CPU spins at 100% on my iphone7 (which nicely handles 4K encoding otherwise)

                1. 1

                  How has your experience been using Duo? Mine experience with it thus far has been wonderful (compared to hangouts).

                  1. 1

                    Can’t really tell the difference except that it doesn’t work on a computer

              1. 7

                Nonsense. I see lots of reasons why someone who isn’t passionate would want to pursue programming.

                Namely, and in absolute terms: it’s high-paying, high-demand, cushy, and absurdly flexible work with low barriers to entry. You can typically work as little or as much as you want, and do so from anywhere on the planet.

                1. 1

                  I actually had to stop and verify for myself that the floating point functionality really exists.

                  :echo exp(1)
                  2.718282
                  
                  1. 3

                    I think there is a lot of low-hanging fruit around the intersection of types and probability / statistics.

                    You can nicely encode a general probabilistic program as

                    type Program a = Free (Sum (ProbF a) (Ap (ProbF a)))
                    

                    where Free is the free monad, Ap is the free applicative, ProbF is a base functor that defines a probabilistic instruction set, and Sum is a coproduct of functors.

                    What you get is a structure-preserving probabilistic model that exactly encodes dependence (via the left branch of Sum) and conditional independence (via the right branch). It’s really nice, and has some implications on inference. If your model is shallow/wide (i.e. you use the right branch a lot) then inference tends to be much easier than if it’s deep and narrow. The dual (cofree) representation can also be used to do inference.

                    Also there are just sort of neat things that might just be interesting as structural connections more than anything. Various probability distributions are induced by recursive processes, and these can typically be encoded as recursion schemes. Autoregressive models are anamorphisms, the geometric distribution can be encoded as an apomorphism, etc. Whether this has any practical implication I can’t say, but it’s interesting to think about classifying models by their recursion scheme encoding and, say, studying the properties of inference algos over some class of models that can be encoded by a particular scheme.

                    1. 2

                      I find Anki to be really great for this. It’s particularly useful for remembering technical vocabulary, complex definitions, important proof techniques, etc

                      Drawing up TikZ diagrams for the some of the cards really helps drill the concepts in too. Full functors, anyone?

                      1. 1

                        Very cool. It would be interesting to see the app coin idea attached to something like this to incentivize creating the network.

                        1. 1

                          I’m (finally?) reading Categories for the Working Mathematician in detail.

                          1. 2

                            The Simons Institute is wonderful. Its YouTube channel is a firehose of some of the most fascinating knowledge and research that I’m aware of.

                            1. 3

                              A great man, RIP indeed.

                              1. 3

                                This is an interesting talk. If you already know about functional datastructures and B+-Trees, you can safely skip to the second half of the talk.

                                Here is the project he is talking about: https://github.com/datacrypt-project/hitchhiker-tree

                                1. 1

                                  I found it very interesting.

                                  Possible to share some links for learning(/getting started) about functional data structures?

                                  1. 4

                                    Check out Erik Demaine’s 6.851 material from his course on advanced data structures.

                                1. 1

                                  I read some book or other every day, usually in the evening or right before bed. Depending on the book, I’ll read it in anywhere from a day to a couple of weeks - rarely longer than that. Typically three or four days.

                                  Usually I read on my iPad and use the Kindle app for ebooks and pdfs. I prefer the experience of reading dead-tree books, but tend to avoid them if I can because they clutter up my apartment. Digital books just have an enormous practical advantage that I find hard to turn down.

                                  I exclusively read nonfiction. After a tremendous amount of pestering one of my friends got me to read Accelerando awhile back, which was ok, but I don’t even remember the last fiction book I read before that, and I don’t plan on reading any more (absent more pestering). In recent years I’ve tended to read technical books, but I’ve been branching out a bit more again this year - some psychology, political philosophy, etc.

                                  I confess I’ve never had any problem tuning out the outside world to read. Just yesterday evening my partner started watching TV while I was trying to read, but popping in headphones and cranking some random progressive house mix was enough to tune that out and get me back into the book. If I get bored of reading I’ll just skim a bit or stop and do something else.

                                  1. 2

                                    I read Michael Huemer’s The Problem of Political Authority awhile back and found it compelling, so I bought another of his books, Ethical Intuitionism, to learn more about the method he uses to drive his arguments. Still waiting for it to arrive.

                                    ‘Ethical intuitionism’, as I understand it, is that there exist certain moral truths that can be intuited by almost anyone and agreed upon by almost everyone. Non-controversial intuitions about straightforward situations then tend to be reliable and useful for analyzing the ethics of more complicated problems. I found this style of reasoning to be persuasive in The Problem of Political Authority, which argues that the notion of political authority is mostly, if not entirely, illusory.

                                    In the meantime I’ve been re-reading bits and pieces of The Problem of Political Authority and Steven Pinker’s well-known The Better Angels Of Our Nature, which argues that violence has declined over time, hypothesizes some reasons for this, and is one of my favourite books.

                                    1. 1

                                      I would need lots of tests, which would be slow and tedious to write.

                                      Stop right there. You’ve already lost me.

                                      1. 19

                                        It seems difficult to communicate that Haskell programs generally require fewer tests without also giving the impression that tests are somehow unimportant. The last major Haskell project I’ve worked on has one of the largest and most comprehensive test suites I’ve ever seen, for example.

                                        The type system is simply expressive enough to let you encode more machine-enforceable invariants into the program itself. It simultaneously aids development in that it helps you understand your code and susses out weird corner cases - like a good test suite is supposed to do.

                                        So, you generally just need fewer tests.

                                        Have you written much Haskell?

                                        1. 1

                                          The last major Haskell project I’ve worked on has one of the largest and most comprehensive test suites I’ve ever seen, for example.

                                          This sounds great. My point here is no matter what language you use, you need to write good tests. I think it’s bizarre to claim that you picked a langauge to avoid writing tests. But you could, as in your case, say you will have an easier time writing good tests because of your langauge and tool choices. And if that’s the case you’d probably end up with more tests written, not fewer.

                                          1. 4

                                            Wasnt the idea simply that haskell’s type system eliminates the need for a certain class of test (Since the compiler is basically a bunch of tests in itself). For the same program in python that would tend to mean you have to write less tests.

                                            Unless I’ve misundestood something, that does seem like a reason to pick a language.

                                            1. 2

                                              no matter what language you use, you need to write good tests

                                              I don’t think there’s much of a need in Coq, Idris, or TLA+. :)

                                              1. 1

                                                I figure that’s tongue-in-cheek, but it looks like there are unittesting frameworks for Coq. Poking around, Idris has some testing infrastructure as well. I have no idea about TLA+.

                                                It’s great that these tools can catch more errors earlier, but they’re still just a variant of type checkers and compilers. Let’s not forget that compilers and type checkers have bugs, too. Wacky ones like this.

                                                I don’t believe there is any better proof of program correctness than running the code and seeing the result you expected. Maybe the author of this post and other readers on this thread don’t agree.

                                                1. 3

                                                  Idris and Coq replace tests by using proofs I believe, a proof would catch holes even a thousand tests couldnt.

                                                  And as far as I know, the existence of a unittesting in coq or idris doesnt invalidate the concept of prooving your software works, just means some people dont want to write a proof for eveything.

                                          2. 4

                                            Please tell us more.

                                            1. 1

                                              This quote is an assertion that static typing and/or functional languages actually require fewer tests overall. In my experience, the cost of testing is primarily derived from the complexity of the problem being solved, not from the choice of tools.

                                              I can totally accept that Haskell helps with solving problems and refactoring. It may also reduce certain classes of bugs. But you still need to test your code a proportional amount no matter what language you’re using. I think it’s weird to claim otherwise.

                                              1. 2

                                                I think one thing that (a) Haskell helps a project do, (b) other languages help with less, and © leads to a need for more tests is setting up the design of data with redundancy. A common mantra in the Haskell community is that you should “make illegal states unrepresentable” which is to say use types to statically eliminate not just simple bugs but large regions of potential state spaces which are just universally incorrect. In a lot of projects, a huge amount of the required testing essentially goes in to ensuring that these boundaries are never crossed in live code paths, but with good typing you can just ensure that’s the case across the board.

                                          1. 7

                                            I’m Jared. I’m from Canada, I live in New Zealand, and I’ve lived in Australia.

                                            I’m a quantitative research engineer (or something?). For the past couple of years I’ve been consulting for Fugue, mainly on language design/compiler implementation and distributed systems protocols.

                                            Prior to that I worked on a probabilistic programming compiler, and before that on a financial services app. Prior to that, like in the 00s, I held a few stats-related jobs. I guess they’d be called data science jobs now. I’m also a part-time/shitty academic. I did a BSc in econ and stats, a MSc in stats, and a PhD in stats. Technically I’m still doing that PhD, I’m supposed to defend soon I think.

                                            I spend most of my downtime reading books/papers, watching talks/lectures, generally trying to learn stuff. But I do have a few hobbies:

                                            • I lift 3-5 days a week. I’m not really very strong nor swole, I just like the activity/routine.
                                            • I usually swim a couple of times a week; when I lived in Australia it was a daily thing, but now it’s more of an accessory exercise.
                                            • I love to travel. I’m in the Netherlands right now as a matter of fact (attending EC16). You can follow me on the instagrams if you’d like to see my vacation pictures.
                                            • I really like writing and am trying to do public-facing stuff more often.
                                            • I’ve picked up playing chess casually over the past few months.
                                            • I’ve started surfing occasionally. I’m terrible at it, but it’s fun, and NZ has decent surf.
                                            • I casually follow cricket, rugby (union), Formula One, and the America’s Cup.

                                            I love meeting people, so ping me if you’re ever in my neighbourhood and want to grab a coffee.

                                            1. 1

                                              With all the travel, do you have a favorite place to live or visit?

                                              1. 2

                                                New Zealand (Auckland) is certainly home at this point. Wonderful place - the only real downside IMO is the relative lack of attractive local customers/opportunities, so I wind up looking abroad.

                                                In terms of travel I have a thing for Asian megacities, e.g. Hong Kong, Singapore, Tokyo, Seoul. They’re exciting places and each has its own great atmosphere and vibe.

                                            1. 11

                                              These are probably pretty popular, but you already covered pass and (h)ledger so I don’t have much else to work with. :)

                                              1. 3

                                                Thank you for mentioning mosh.

                                                Some one brought this to my attention, may be a year or so ago. Recently, for the work that I do, I got tired of relogging into ssh and then reattaching my screen sessions and remembered there was a terminal that handles this kind of on-off internet connectivity, but I forgot the name and went mad searching. I kept running into tmux, which wasn’t it.

                                                1. 2

                                                  Right, mosh (with tmux inside). Haven’t heard about the other programs you mentioned.

                                                  I normally use (Go)yacc with a handrolled lexer for parsing. Besides having a built-in lexer, how is Ragel better?

                                                1. 8

                                                  I think Keybase has the potential to be really big, if executed well. Tying together and unifying disparate identities is pretty cool as it is, but the real value proposition IMO is in facilitating certain kinds of (secure) exchange between them. They’ve started doing this with the Keybase File System (KBFS).

                                                  Here’s an example, supposing we live in the not-too-distant/improbable future where one can claim ownership of Lobsters identities on Keybase. I’m just going to pick random users from this thread; maybe I want to share a file - encrypted and signed - with rauryan. No sweat:

                                                  $ cp my-file /keybase/private/jtobin,rauryan@lobsters
                                                  

                                                  The above would work even if rauryan hasn’t signed up for Keybase yet; the file will be accessible to the user who signs up for Keybase and proves ownership of rauryan’s account on Lobsters (by posting a signed claim in his Lobsters profile).

                                                  This functionality exists right now for users on Github, Twitter, Reddit, etc. I see gamache has a Twitter account listed in his profile, so I’m literally going to copy a file to our shared folder right now:

                                                  $ cp message.txt /keybase/private/jtobin,gamache@twitter
                                                  

                                                  Gamache should be able to check our private shared folder now (assuming he is on Keybase and has claimed ownership of the @gamache account on Twitter) and see a secret message.

                                                  I think this has a ton of potential when you consider really user-friendly Bitcoin/Ethereum/etc. integration that I’m sure Keybase has on their radar. The following would be pretty cool, non?

                                                  $ keybase send btc 0.01 pobrien@lobsters
                                                  $ keybase propose some-ethereum-contract.sol jtolds@lobsters
                                                  
                                                  1. 3

                                                    I tried to get them to add lobsters support a year or two ago (we’re a more natural audience for this than hackernews) but they weren’t interested. Maybe we should try again.

                                                  1. 4

                                                    A (non-free) alternative I’ve been using quite happily for a while now is Deckset. Same kind of idea, write your presentation using Markdown with some idiosyncrasies and then Deckset can apply a number of themes. Works well.

                                                    1. 1

                                                      Woah, thanks for that. Great find.

                                                    1. 6

                                                      Related: here is an exceptional visualization of Raft.

                                                      1. 5

                                                        blows celebratory kazoo