Eris: A Decentralized Autonomous Organization Framework - <AUTHOR> https://eris.projectdouglas.org/

<comment><USER2> There's an interesting back story to this team that you won't find on their website. One of the founders spent 5 years in the Marines in Somalia after receiving an engineering degree, then went to law school, and returned to Somalia to start a law practice. And he writes software on the side.

Who cares, you ask? This is someone who understands the importance of the rule of law -- having seen life without it as a soldier and as a lawyer -- and what it means to live in a country where promises can't be enforced. The rest of the team is just as impressive (and modest). That experience appears to inform the philosophy behind the project:

"Given that the aim of Project Ðouglas is to demonstrate the utility of ÐAOs in everyday applications and to advance the state of the art, it is our view that compliance functionality is not only an added feature - it is a prerequisite. Public, corporate, institutional and government buy-in will require it."

It'll be exciting to see what's next.

Congratulations Dennis, Casey & Preston.

</comment><comment><USER3> As someone coming to the topic of "replacing the Bitcoin Foundation" cold, this would really benefit from a short, Plain English description. This tells me next to nothing:

> an adaptable software package which is designed to be modular, easily > copied, and easily modified - and therefore used in many different > applications. We intend to use Eris as the relevant platform when we > incorporate the Association at a later date, but we will not be limiting > future development of the platform to that single application.

<comment><USER4> "Governance in a Box" would be a better description. Imagine anything that needs to be governed by consensus, including corporation bylaws, town ordinances, 'foundation' advertising spends, Internet group meeting agendas, etc. Eris appears to be a basic framework for instantiating any of these in a way that brings trust and high transparency to a group of individuals with common goals and interests. It's one of the more powerful _things_ the blockchain brings us!

<comment><USER5> That's actually very much what we are going for. I have spent much of my career at the intersection of international development and legal reform and the idea of having a governance framework which can be used for making collective decisions in a way which will not rely on central nodes of corruption or failure.

<comment><USER6> And then we'll find out we are just trading central modes of failure for failure which can occur across networks due to specific channel attacks

<comment><USER5> Perhaps. But we'll never know until we try.

</comment></comment></comment></comment></comment><comment><USER7> This cute "ÐAO" acronym isn't actually defined anywhere on the page. I assume, based on the HN link headline, it refers to a "decentralized autonomous organization". I looked for that in the page but the word "autonomous" never appears (the words "decentralized", "decentralised", "organization" and "organisation" all do). I tried searching the page to find out whether they actually defined "ÐAO", but was initially thwarted when I typed in "DAO" and found _that_ doesn't appear on the page either because of the insistence on using ÐAO.

Is this some deliberate attempt at anti-SEO?

<comment><USER8> You may want to watch this [http://www.youtube.com/watch?v=MIVjAo4vres](http://www.youtube.com/watch?v=MIVjAo4vres)

</comment></comment><comment><AUTHOR> This is a response to the USD$100,000 bounty to create a software-based platform to replace the Bitcoin Foundation as initially announced on [http://www.reddit.com/r/Bitcoin/comments/25sf4f/100000_bount...](http://www.reddit.com/r/Bitcoin/comments/25sf4f/100000_bounty_for_software_platform_that_can/)

<comment><USER9> More importantly, Ethereum and some of the other "Bitcoin 2.0" protocols are tackling the _technology_ behind distributed consensus and trust (using crypto blockchains for something other than payment), but there's the additional question of how do you make your cute technology interface with the real world's legal systems (if not for you, then for all the organizations your DAO will interact with).

The interesting thing about these guys is they're a team of both developers and lawyers... part of this project is the packaging of the technology on top of Ethereum, but part of it is figuring out the legal frameworks needed to grant legal authority to a distributed crypto consensus network.

[https://www.youtube.com/watch?v=MIVjAo4vres&feature=youtu.be](https://www.youtube.com/watch?v=MIVjAo4vres&feature=youtu.be) is a good 10 min background interview with Preston Byrne, one of the members.

<comment> a-priori I'm no lawyer, but I think it's compatible with contract law...

If you wanted to create an organization represented by a DAO in this system, then you would still need to register a legal entity with your government to represent your organization (for tax and regulatory reasons). But that organization could have exactly one bylaw saying, essentially, "this organization shall operate according to the DAO uniquely identified as ABCXYZ123". Then you do all further work in the DAO.

If you wanted to create a contract of some kind, you wouldn't need to do even that. A "contract" in law is fairly general: it's an agreement, entered into voluntarily, between multiple partners for their mutual benefit. It's often done on paper, but not necessarily: they can be created orally, or via email. There's no reason I know of that a DAO couldn't create a contract, as long as you could show to a court that it fits all the normal criteria for a valid contract.

The main complication in all this is that it's _unusual_ and, at least at first, judges wouldn't know how it works and would want proof that it creates a legal contract.

<comment><USER9> > I'm no lawyer, but I think it's compatible with contract law...

There was a neat talk from the silicon valley ethereum meetup a few months ago where a lawyer dives into the technical definition of a legal 'contract' and what parts of that Ethereum code does and does not satisfy:

[http://www.youtube.com/watch?v=jSLK3lbENRc](http://www.youtube.com/watch?v=jSLK3lbENRc)

(One of the key insights there is although Ethereum uses the term 'contract' to describe its autonomous code, Ethereum contracts do not by themselves satisfy the criteria for a legal contract in common jurisdictions... 'autonomous agent' would be a better term for Ethereum to use)

All of these links I got from people on a discussion on r/ethereum the other week: [http://www.reddit.com/r/ethereum/comments/27gdhc/are_you_all...](http://www.reddit.com/r/ethereum/comments/27gdhc/are_you_allowed_to_give_corporate_shareholder/)

<comment><USER5> Agree; indeed, I tried to make the same point at my talk at an Amsterdam Ethereum meetup a while ago.

[https://www.youtube.com/watch?v=wnFqOfR5a7I](https://www.youtube.com/watch?v=wnFqOfR5a7I)

</comment></comment></comment></comment></comment><comment><USER10> This looks like it could be entry-in-the-history-books huge, but there's this: "We have not slept for three weeks."

Has anyone more knowledgable than me (that is, anyone) looked at this in detail?

<comment><USER4> I've been thinking about it for several months now. Blockchain technologies make things like this a reality - we just need someone to write the software and make it easy to use for multiple use cases. I'm thrilled to see someone working on it so soon!

<comment><USER5> Eris is an attempt at a first run of a solution. We have no idea, but we would love to hear everyone's input and critiques.

</comment></comment></comment><comment><USER11> The idea's been percolating for a while - one of the major facets of blockchain technology is that it can be used to effect many kinds of transactions, where traditional finance is just the simplest one to conceive of. Simultaneously there's been a thread of philosophy arising from various sources(Singularity writers, cypherpunks, Anonymous) that advocates new governance forms that fully exploit digital technology.

My favorite book on this is Binding Chaos [0] - most of the material in it clarifies problems with existing governance structures and their inevitable tendency towards power inequality. The remainder suggests that a better system would contain two major concepts: stigmergy - essentially, "space-making" instead of our existing "leadership" model, where environmental changes can automatically direct the next action of the group - and epistemic user groups: Communities that are focused on a particular form of expert knowledge and its study.

We already have some models for this in open source projects, Wikipedia, etc. but the book is light on specific implementation ideas. What is really needed is software innovations on these concepts, and blockchain hacking is one way to go about it.

[0] [https://georgiebc.wordpress.com/2013/05/24/binding- chaos/](https://georgiebc.wordpress.com/2013/05/24/binding-chaos/)

edit: forgot this isn't reddit

</comment><comment><USER12> Looks interesting, but where is the Eris repo? (Note: it's currently private, see Edit 2 below)

It's described as being under MIT but the only repos I find under the Project Douglas Github account are Jekyll-based websites (and forks of Ethereum projects). When I click on the link to the Eris license, I only get a 404.

Is it private now?

Edit: To be clear, I don't blame them if they've made it private. They may have feared a third-party trying to take credit for their project and going after the cash bounty. I'm just interested in looking at the source code, if it's available to the public.

Edit 2: In a reddit post about Eris, the (presumed) developer writes "Repo goes public shortly. Should have a unified method for test driving sometime this week hopefully. (Maybe as early as tomorrow)".

<comment><USER5> Hi Eric,

Indeed, you are correct we were a bit worried about that. We about 3-P theft. Also, we are not natural coders so we've been furiously trying to clean up the code so it is somewhat presentable to people who do code for a living. That process should more or less be finished and we will open the repos very shortly. To be honest, we were a bit amazed at such a response to our small proposal and did not bargain on the reception we have received today. In any event the repo will be available at GH:project-douglas/eris before midnight tonight GMT.

<comment><USER12> Great, I look forward to taking a look. By the way, what do you mean by "3-P theft"? The sentence seems to be missing a word or else there's a typo. But I can't quite figure out what that might be.

<comment><USER5> Sorry for the quickness. Yesterday turned out to be a bit hectic. I meant third parties taking our work. (3-P being my own lawyer speak...)

</comment></comment></comment></comment><comment><USER13> I have been thinking a lot about what can be done in this space but have felt the need to find some smart people working on the field so I could get an entry point into existing work. This is exactly what I have been hoping for!

<comment><USER14> Same here... a DAO's framework is what we've been waiting for... The current examples (ethercasts, etc) were "too light".. hopefully they'll make one about Eris!

<comment><USER5> We will be recording with Mids on Thursday.

</comment></comment></comment><comment><USER14> Been lurking the Ethereum forums for a couple of months waiting for something like this.. I read about the "The People's Republic of DOUG" [0] and found it a nice reference ethereum app... but this is __much __more interesting..

It will help us kickstart some projects we have in mind... I'm beyond stoked.. Thanks for your contribution

[0][https://forum.ethereum.org/discussion/1009/the-people-s- repu...](https://forum.ethereum.org/discussion/1009/the-people-s-republic-of- doug-ethereum-based-decentralized-organization)

<comment><USER5> The people's republic of DOUG is based on an older version of the very same core DOUG functionality which operates sort of as the kernel of the DAO. We definitely look forward to your comments.

</comment></comment><comment><USER15> I just kept on reading this (not knowing anything about the Bitcoin Foundation) hoping this would allow for something like the automated corporations that feature in Accelerando (and other books, for sure). It's okay, I'll wait :)

[http://en.wikipedia.org/wiki/Accelerando](http://en.wikipedia.org/wiki/Accelerando)

</comment><comment><USER16> Do you see more complicated voting methods being incorporated?

[http://en.wikipedia.org/wiki/Voting_system](http://en.wikipedia.org/wiki/Voting_system)

weighted voting. proxy. random.

<comment><USER5> It is possible. How we have designed the voting module allows it to be swapped out for other modules when a DAO is initialized (or later if there is sufficient consensus for such a change). We have a rep weighted module as the default module and we hope to built additional modules in the coming months for other voting mechanisms.

</comment></comment><comment><USER17> Exactly one pixel of that custom scrollbar is clickable on my Mac (Chrome). Thanks.

</comment><comment><USER16> How is this different from etherium?

<comment><USER18> We are building off of Ethereum and tying in Bittorrent to produce a platform which allows us to build these applications. So what we are doing is taking the tools we are being given and putting them to use. :)

</comment></comment><comment><USER19> Amazing work Dennis, Casey and Preston! Can't wait to see it in action!</comment>


Ultratestable Coding Style - <AUTHOR> http://blog.jessitron.com/2015/06/ultratestable-coding-style.html <comment><USER2> This is very similar to awesome Gary Bernhardt's Boundaries: [https://www.destroyallsoftware.com/talks/boundaries](https://www.destroyallsoftware.com/talks/boundaries)

Watch it if you still haven't

<comment><USER3> Thanks for this link, that's a great talk, in fact it deserves its own submission as I rate it better than this article.

<comment><USER4> It's here, but rather unappreciated: [https://news.ycombinator.com/item?id=8093389](https://news.ycombinator.com/item?id=8093389)

</comment></comment></comment><comment><USER5> Take this idea to the limit and you end up with free monads:

[http://www.haskellforall.com/2012/07/purify-code-using- free-...](http://www.haskellforall.com/2012/07/purify-code-using-free- monads.html)

<comment><USER6> Even if that takes the idea to the limit, does that make the code any easier to understand?

<comment><USER7> No, it makes it more flexible (in ways including testability) without adding any cost in understandability.

<comment><USER8> Adding the Free monad to this approach doesn't add any cost in understandability?

<comment><USER7> Not in a language with decent abstraction capabilities. You end up changing code from looking like:

        myThing :: Foo -> ProblemDomain Bar
        myThing f = do
            x <- subthing1 f
            y <- subthing2 x 23
            return $ g y

to looking like

        myThing :: Foo -> ProblemDomain Bar
        myThing f = do
            x <- subthing1 f
            y <- subthing2 x 23
            return $ g y

There's no difference, don't spend too much time looking for one.

The underlying representations of the type change. How you interact with the type does not. There's no mental overhead. There _is_ a small bit of added run time cost. You pay somewhere for adding the ability to interact with the type in additional ways, but not by breaking any existing code.

<comment><USER8> > Not in a language with decent abstraction capabilities.

My question has nothing to do with the language. You are adding a relatively advanced construct which requires a lot of prior knowledge to understand: Free monad, monad, applicative functor, functor, monoid. Then you need to understand the laws that monads must obey, which are not enforced by the type system. Before you get there, a passing grasp with Haskell and higher kinded types will help, and some basics in category theory too.

Saying that adding the free monad doesn't have any cost in understanding is very naïve. You forgot how long it took you to reach that understanding.

</comment></comment></comment></comment></comment></comment><comment><USER9> This agrees with the general conclusion that you can't just write tests for code, you must also write testable code.

Why it is ultra testable I didn't get, though. To me it looks like what you should do in normal mode not ultra mode.

<comment><USER10> Considering Boris Beizer was giving seminars on designing and coding for testability in the 80's ... yeah, not ultramode.

</comment></comment><comment><USER11> The diagrams are very helpful, but they fall victim to an unfortunately common mistake: labeling the boxes but not the arrows. We know from the text that not every arrow is the same here. Clarify that in the diagram. Label your arrows!

</comment><comment><USER12> For a filesystem integration, perhaps you can generally rely on the documentation being correct. There are lots of integrations (main cause of side effects) where this is not the case, for example if you are integrating with APIs or with a SQL database. For these cases I would want to have more than an umbrella test to check that my assumptions about the integration are correct.

<comment><USER13> Race conditions in file systems are fun. So are edge conditions around partially written data (for instance, Windows NT will transactionally guarantee a file's existence, but not its content).

</comment></comment><comment><USER14> Only, what the article describes is _exactly_ \-- down to a T -- what mocks are (in their more narrow definition, i.e. as opposed to fakes/stubs). They capture your calls to actual real-world interaction and turn them into a list of operations that can later be queried and verified, and they do all that without requiring you to create a new DSL for capturing and describing effects.

The article starts with discounting mocks, and later describes how you should hand-code them each time.

<comment><USER15> > They capture your calls to actual real-world interaction and turn them into > a list of operations that can later be queried and verified

The author's point is to avoid interleaving logic and side-effects (as much as possible) in the first place. Yes, we can use dependency injection to send mocks deep into the bowels of our application where they get called. Alternatively, we can have the bowels of our application return values, describing what to call, back up to the top of our application. These are exactly dual.

The nice thing about the latter is that every action gets reified into a concrete value, on which we can perform any kind of computation we like. Dependency injection can't do that, since a method call is not a value (it can _return_ a value, but it isn't _itself_ a first-class value).

Mocks allow us to inspect which calls have been made, etc. but mocks are for testing. We can't use those interfaces in our real code. If we use a list-of- actions we can, for example, run optimisation passes before execution.

> they do all that without requiring you to create a new DSL for capturing and > describing effects.

Mocks _do_ require a new DSL for capturing and describing effects; it's normally called a "public interface", but it _is_ a DSL (an algebra) for describing effects.

<comment><USER14> > The author's point is to avoid interleaving logic and side-effects

But with mocks you're not really interleaving side effects. They are the same as generating "effect values", only they use the same API as the actual effect.

> The nice thing about the latter is that every action gets reified into a > concrete value, on which we can perform any kind of computation we like.

That's what mocks do. They capture calls and turn them into reified values that can then be manipulated and queried.

> Mocks do require a new DSL for capturing and describing effects; it's > normally called a "public interface", but it is a DSL (an algebra) for > describing effects.

Except that API is identical to that of whatever effect API we're using.

A mock _is_ a mechanism for turning effects into values. It just works automatically by means of interfaces (in the language sense) and reflection. It is an imperative construct that achieves -- without extra work -- the very same functional effect the author is striving for.

<comment><USER15> > with mocks you're not really interleaving side effects.

Yes, you are. Side effects aren't limited to filesystems, databases, etc. Here's the very first sentence of [http://en.wikipedia.org/wiki/Side_effect_(computer_science)](http://en.wikipedia.org/wiki/Side_effect_\(computer_science\))

> In computer science, a function or expression is said to have a side effect > if, in addition to returning a value, it also modifies some state or has an > observable interaction with calling functions or the outside world.

Every time we call a mock, we cause observable changes (ie. we alter the results of any queries made on the mock). Therefore, calling a mock _is_ a side-effect.

The point of mocking is to replace unwanted side-effects with harmless side- effects. The side-effects are still there, mixed in with the logic.

> That's what mocks do. They capture calls and turn them into reified values > that can then be manipulated and queried.

But mocks are only used in tests! My application can't ask, say, a FileSystem object for a list of calls which have been made. Only my _tests_ can do that, because they're using a FileSystemMock object instead. My application can't use a FileSystemMock since, by design, it can't do the filesystem manipulation that I need.

Even if I add call-logging to the API of my FileSystem object, it doesn't give me any control, since they've already happened by the time they appear in my queries.

For example, let's say my application ends up with a list of effect values [e1, e2, e3, etc.] and, after performing some logic, it chooses to only return the first one: [e1].

How would mocks help me do this? Firstly, since this is application code rather than test code, I can't use mocks at all. Secondly, even if I _could_ perform a query to get [call1, call2, call3, etc.], there's no way to turn that into [call1]; I can remove the _logs_ of call2, call3, etc. but I can't undo any side-effects they've caused.

To achieve the same outcome as the effect value example, I must alter the control flow of the program such that call2, call3, etc. are never made. That has nothing to do with mocking.

> Except that API is identical to that of whatever effect API we're using.

Exactly! How is an "effect API" _not_ a DSL for describing effects? They're the same thing. Mocks don't

<comment><USER15> Oops, cut off my last sentence there and didn't spot it in time to edit.

I meant to say, mocks (+ dependency injection) don't require more or less work than using "effect values"; certainly for applications written with that approach in mind.

Yes, mocks use reflection to do meta-programming. "Effect values" also allow meta-programming; but we don't need reflection since our "programs" (eg. lists of side-effecting actions) are already first-class citizens. We can use any built-in or off-the-shelf list library to manipulate such "effect values"; which I would consider just as "automatic" as using a built-in or off-the- shelf reflection library.

Taking an _existing_ application and refactoring it to use one of these approaches would vary from project to project regarding which would take more effort.

I think many people dismiss functional approaches like these "effect values" by thinking of them at too low a level, and imagining that they must involve an awful lot of work to use. That would be like dismissing linked lists as involving too much work, since we have to keep pushing and popping values in and out of the lists; so why not just use individual variables?

Of course, in reality the whole point of lists is that we can ignore their contents and manipulate them as whole entities; mapping, slicing, merging, sorting, etc. The same applies to "effect values"; we don't just declare an enum and throw a load of switch statements everywhere. We can ignore the particular effects in a value and instead manipulate them as whole entities; mapping, slicing, merging, sorting, etc.

<comment><USER14> > Side effects aren't limited to filesystems, databases, etc.

As the author programs in Scala and Clojure, two impure languages that make liberal use of memory side effects, I think she was concerned mostly about IO (she even said so).

> The side-effects are still there, mixed in with the logic.

Imperative languages don't differentiate between memory side effects and logic. That is either an advantage or a disadvantage -- mostly depending on your personal preference. The strength of the imperative approach is that when computation is a combination of logic and memory effects, it yields a more powerful computational model than pure functions alone (that's why Turing machines can describe computations that lambda calculus cannot -- at least not directly; their equivalence mostly rests on LC's ability to be used as a meta- language that can simulate a Turing-machine language). It allows representing many algorithms that PFP simply cannot (in Haskell, many algorithms are implemented with unsafe). Finally, it yields better performance (computational complexity is a very vague notion in lambda calculus).

> But mocks are only used in tests!

I was referring to a mock as a concept, not a particular implementation. If you can't find a mocking library that replays operations, write one that does. It would fit much better and be much more idiomatic. See below for an explanation.

> I think many people dismiss functional approaches like these "effect values" > by thinking of them at too low a level, and imagining that they must involve > an awful lot of work to use.

I don't dismiss pure functional approaches at all if you happen to be using a pure functional language like Haskell. Imperative languages, however, already have similar mechanisms in place, and eschewing those in favor of PFP approaches _is_ more work, and tends to lose the benefit the imperative approaches have (as those are more in line with the language), for example, the stack context.

I will be giving a talk about this at the upcoming Curry On/ECOOP conference, where I'll show that virtually all monads already have imperative counterparts that are preferable (and more powerful) when writing in an imperative language. The recent trend of PFP constructs being adopted by impure languages is due to two things: 1. the false notion that the PFP approach is more "mathematical" or more verifiable, and 2. monadic composition is better than callbacks, and thus useful in avoiding blocking OS threads, which is expensive (although simply fixing threads -- as Erlang and Go have done -- is so much easier).

</comment></comment></comment></comment></comment></comment><comment><USER16> >Writing code to verify code is so much harder than just writing the code

It's not supposed to be easy. Doing it _well_ is _really_ hard and way underappreciated.

>Testing side-effecting code is hard. This is well established. It's also convoluted, complex, generally brittle.

It's not necessarily brittle when done right but it's hard, it's convoluted and it's complex.

>Before the test, create the input AND go to the filesystem, prepare the input and the spot where output is expected. After the test, check the output AND go to the filesystem, read the files from there and check their contents. Everything is intertwined: the prep, the implementation of the code under test, and the checks at the end. It's specific to my filesystem. And it's slow. No way can I run more than a few of these each build.

This doesn't sound like it would take more than a few hundred milliseconds. That's not slow.

Furthermore, you could definitely run it on multiple filesystems by firing up a virtual machine for each filesystem and running the test. That _would_ be slow, but you don't need to do it often.

<comment><USER17> I generally want all tests in total to complete in a few seconds at most. Longer than that and they become a serious impediment to the edit build test cycle, and you either start screwing around with only running some tests routinely, or only run the tests occasionally, neither of which is good.

If a single test takes a few hundred milliseconds then that means you can only run a dozen or so such tests before you hit that problem, which isn't very many. I'd say that a few hundred milliseconds is _quite_ slow in this context.

<comment><USER18> There's nothing wrong with having a full test suite that runs as part of the nightly build.

Sometimes it's just not practical to impose a hard limit of "a few seconds at most" on your test suite, especially for larger projects. (some projects have test suites that take hours to run, and simply cannot be any quicker unless they were less thorough).

<comment><USER17> I agree, but you want to avoid it when you can, and being able to put tests into the fast ones you run all the time is good when you can. So I'd say that a test which takes a few hundred milliseconds easily qualifies as "slow" and is something you want to avoid if you can, even if it's not the end of the world if you can't.

</comment></comment></comment></comment><comment><USER19> I read the title as "Untestable Coding Style" and I came to see some bewildering and obfuscated code.

But this is good too.

</comment><comment><USER20> > mock the filesystem

it's beautiful in theory. but reality goes like this: "i only have this little method. writing mocks will take 5x more time then the code. i will just test the side effects on the functional tests"

then, a year later, the team added a dozen methods that would benefit from the mock, but since you did the first one in functional only, the team just added the new ones there as well.

the end. (because nobody refactor projects for tests)

:(

</comment><comment><USER21> Mocks, stubs, shims, etc. are usually just hiding the fact that the code to be tested is terrible, even in OOP languages.

Furthermore side effects have nothing to do with testing one's code. Why? Because you have to test your own logic, not I/O or something else. I/O is already tested by someone else. So you actually don't care where the data comes from - the filesystem or a hardcoded string - you care if the output is correct after the respective transformations are applied to the input.

And when you think about it testing shouldn't be that needed at all. In the OOP world, where state and identity are helplessly tied together and we are not working with values, but with references to values, tests might be a necessary evil.

In the land of Functional however writing tests shouldn't be needed, at least in theory. Why? Because if you write small composable functions you should be able to test them right in the REPL. Corner cases? You have to think about them right from the start. TDD forces you to do so - then why shouldn't you when you have the immense power of a REPL? Once a function is ready you are not supposed to change it much. If you do you should change the inner workings and not the input/output. If you need to change the i/o most probably you need a different function. But what is more important is that if you needed to change the i/o and had tests for this function you would actually need to change the tests as well, which is more work (double? triple?) and no added value.

<comment><USER22> Honest question: how do you validate business rules are adhered to without defect in FRP and how does FRP differ from OOP in that regard?

<comment><USER23> Stolen from Wikipedia: "FRP is a paradigm using the building blocks of functional programming." I doubt OP was referring to FRP.

In any case: in a functional programming language, you'd just unit test the building blocks (functions). Assuming every function is pure and total, these unit tests should be succinct and mirror your business logic quite closely.

<comment><USER21> Actually the OP uses Clojure in his project.

</comment></comment></comment></comment><comment><USER24> I like the IO monad in Haskell because it places a tax on mingled code. It's easier to keep IO at the top level and just call into pure code.

</comment><comment><USER25> this just falls out of writing code cleanly and properly. if you are doing something so complicated with inputs and outputs thatit becomes unclear what is happening and where things need to go in and go out then you just haven't used enough functions and classes to split up the responsibilities.

if you write clean, data driven code i can't imagine this ever being a problem you need to solve.

<comment><USER26> "If you use the solution given in the article, I can't imagine why you'd ever need the solution given in the article"?

<comment><USER27> There is always that one guy who gets offended over how obvious something is to him.

<comment><USER28> Given the number of comments that I've seen from jerf, and the value of what he usually has to say, I don't think he's being "that one guy". I think he's commenting on what he perceives to be a genuine inconsistency in the article.

<comment><USER27> My comment was actually referring to jheriko. :-]

<comment><USER28> Ah, I see. My error.</comment></comment></comment></comment></comment></comment>


Wikipedia's co-founder takes on Facebook with ad-free social network - <AUTHOR> https://thenextweb.com/insider/2019/11/14/wikipedias-co-founder-takes-on-facebook-with-ad-free-social-network/ <comment><USER2> This feature could be a huge differentiator:

> "Almost everything on the platform is editable," he said. "That alone gives > a huge incentive for good behaviour because if you say something obnoxious, > someone will just delete it." However, while this approach has succeeded on > Wikipedia, it is largely untested on a social network.

(Quote is from the FT article linked from TFA)

<comment><USER3> That sounds terrible. The whole point of a social network is to know what somebody is saying / has said. It isn't about democratising the spread of factual information. If I say x, but somebody else thinks I should have said y, who cares? The point of a social network is to let people know that I said x. If x is wrong, the point of a public encyclopedia (like Wikipedia) is for people to be able to read y. But for a social network, this does not seem like a useful feature at all.

</comment></comment><comment><USER4> I'm already on an ad-free social network: Mastodon.

<comment> m-p-3 And even better: it's federated.

The i stance you're using doesn't like what you say? Just pick another instance and carry on.

</comment></comment><comment><USER5> So, Ello, again? [https://news.ycombinator.com/item?id=8346429](https://news.ycombinator.com/item?id=8346429)

</comment><comment><USER6> Well, count me in, no question about it. Information is the fourth pillar of democracy, and there's a direct qualitative relation from information to debate.

We need such efforts to make substantial progress in producing information, to the best of what should be our ability as of 2019 and onwards.

</comment><comment><USER7> Weird. When I signed up I had access and could look around. I close it and open it again and now I'm locked out and stuck on a waiting list unless I donate.

I wasn't planning to be locked out so I didn't have the greatest of looks but it seemed much heavier on the news side of thing than the network side of things. Very limited profile, content appears to all come from groups?

<comment><USER8> Give it some time. Hopefully, it will get better.

<comment><USER7> Likely it will but news also seems to be an intentional focus. As someone who is continuously trying to consume less news, it's a bad fit.

</comment></comment></comment><comment><USER9> Kind of reminds me of Aether. [https://getaether.net/](https://getaether.net/)

</comment><comment><USER10> I wonder if ActivityPub or some sort of federation is on the roadmap</comment>


What I learned in jail last night - <AUTHOR> http://gawker.com/364622/what-i-learned-in-jail-last-night

<comment><USER2> That is really scary the things they were arresting people for. Think how much better the police could actually protect us and do their jobs if they weren't arresting people for taking two seats on the subway or drinking a beer!

<comment><USER3> Reminds me of how kids were doing drugs in my high school while the principal had a campaign that "we really need to crack down on _gum chewing_ in the halls."

</comment></comment><comment><AUTHOR> i always thought america stood for the worst and the best, with new york beeing some of the best. what's happening?

<comment><USER4> Wherever did you get the idea that New York City was "some of the best"?

<comment><AUTHOR> i visited once and kind of liked it.</comment></comment></comment>


Native Form Elements - <AUTHOR> http://nativeformelements.com/

<comment><AUTHOR> Although it looks pretty basic it is pretty useful as it shows all the native form elements for your browser in one spot.

</comment><comment><USER2> very good start. you get to see code for a tag and what it looks like right next to it. be sure to add more stuff to it.</comment>


Ask HN: It's 2019, what are the new challenges in your industry? - <AUTHOR> <comment><USER2> accurate & complete requirements capture

</comment><comment><USER3> software (source code) documentation is still unsolved.

</comment><comment> go-rabbit people still use excel as a database</comment>


MIT nuclear fusion record marks latest step towards unlimited clean energy - <AUTHOR> https://www.theguardian.com/environment/2016/oct/17/mit-nuclear-fusion-record-marks-latest-step-towards-unlimited-clean-energy <comment><USER2> Scientists are optimistic that the promise of fusion energy is only twenty years away.</comment>


Supreme Court Bars Human Rights Suits Against Foreign Corporations - <AUTHOR> https://www.nytimes.com/2018/04/24/business/supreme-court-foreign-corporations-lawsuits.html <comment><USER2> He's barely started and it looks like Gorsuch is already paying back his masters' investment. This is going to be a very long 30 years.

[https://www.thedenverchannel.com/news/politics/report- single...](https://www.thedenverchannel.com/news/politics/report-single-donor- gave-285-million-to-dark-money-group-touting-gorsuch-for-supreme-court)

[https://www.democracynow.org/2017/3/22/neil_gorsuch_backed_b...](https://www.democracynow.org/2017/3/22/neil_gorsuch_backed_by_10_of)

</comment><comment><AUTHOR> Direct link to the opinion: [https://www.supremecourt.gov/opinions/17pdf/16-499_1a7d.pdf](https://www.supremecourt.gov/opinions/17pdf/16-499_1a7d.pdf).</comment>


Warden – open source and cross-platform tool for simplified monitoring - <AUTHOR> https://getwarden.net/ <comment><USER2> Not to detract, but you should be aware that "Warden" is the name of an anti- cheat platform created and used by Blizzard Entertainment for all their games (save Hearthstone).</comment>


Are Ideas Truly Worthless? - <AUTHOR> Why is it a meme among techies that ideas are worthless? It makes me really sad that smart people can believe such a ridiculous thing in the internet age.
I'm the author of some ideas lists and I like to share ideas with people. It's what I do. I'm capable of developing some of the ideas but not all.
Some are too difficult. Should I not have the idea? Should I suppress having the idea from my mind? And not share it? Why don't people share ideas more often? They get shut down by their peers and I am sick of being shut down for having ideas.
This meme that ideas are worthless without implementations needs to die.
Ideas are RFCs and ISOs and the ideas of books. <comment><USER2> Many areas are replete with ideas, the worlds of art, music, fiction. Many fantastical ideas first revealed in science fiction works have been brought to fruition decades later.

So if you enjoy coming up with ideas, then by all means go for it!

As with beauty being in the eyes of the beholder, so too with ideas when revealed to techies. In some circles being able to implement is a common criteria, as is the predicted financial success. But you can choose to cultivate other groups that are appreciative of your ideas.</comment>


How many lines of code per developer? - <AUTHOR>

Curious to hear for mature products what are your approximate ratios of total lines of source code per active developer?  How much code is too much such that the organization becomes incapable of reasonable maintenance? <comment><USER2> I would think that the number could greatly fluctuate. Perhaps there are better ways to measure complexity of code such as <http://thinksimple.pl/entries/88-Ruby-static-code-analysis>.

These tools could be used to turn code smells, duplication, and poorly written tests into a total "score" for well-written code. Although this should hardly be the way code is evaluated.

Also, complex code that isn't written "the best way" isn't so bad. It incurs technical debts. Like financial debt, technical debt can be very good if used properly--or end with disastrous results if used irresponsibly. So let some component of a code base bloat if you need to hit a deadline so long as you're going to refactor later.

<comment><AUTHOR> Nice link. There are lots of metrics, but in this case, I'm talking about multi-language, large projects where considering tons of code and not enough engineers, there's no bandwidth to even compute this stuff. Thus I'm sticking with the easiest metric there is: lines of code. It's not perfect, but it's still valuable.</comment></comment>


C++ Casts - <AUTHOR> https://leimao.github.io/blog/CPP-Casts/ <comment><USER2> Some more notes on casting for completeness:

\- avoiding ambiguity is one reason to use C++-style casts but it's especially a problem that you can't _search_ for C-style casts in a code base; C++-style casts are easier to find so you can scan code bases for possibly-incorrect behavior

\- it's not entirely true that reinterpret_cast<> will not check _anything_ ; it can fail at compile time for invalid reinterpretations (e.g. you can't convert between numeric types this way)

\- const_cast removes "const" but it can also remove "volatile"

\- it's interesting that the const_cast<> example on an actual "const" variable does not work but this might just be undefined behavior (e.g. compiler choosing to locate value in read-only space or not)</comment>


An Intuitive Guide to Linear Algebra - <AUTHOR> http://betterexplained.com/articles/linear-algebra-guide/ <comment> enahs-sf It seems like college Linear Algebra expeiences fall into one of two buckets: either you took a "Linear Algebra / Differential Equations" class where you learned no theory and saw a bunch of practical examples and did problem sets that were routinely north of 10 pages, OR you took a highly theoretical course where everything was far too abstract for your first year of college level of comprehension.

I took the first route and retained none of the information, despite doing well in the course. Then I took computer graphics and cried all the way home.

This link seems like a happy middle ground.

<comment><USER2> I found Linear Algebra Done Right by Axler to be a fantastic theoretical text that makes everything click together from day 1. It's derived from his paper Down with Determinants.

He starts by explaining that linear algebra is about studying the properties of linear transformations over vector spaces, and then goes on to explain what this means. In many theoretical books it takes ages to get this message, and in some practical ones you get lost in a sea of matrices without even understanding what a matrix actually is. Furthermore all his proofs are very slick.

<comment><USER3> Anyone want to study group this book? I did Strang a few years back, along with the OCW lectures, but it wasn't very proofs-centric.

<comment><USER4> MIT has some more proof centric courses [http://ocw.mit.edu/courses/mathematics/18-700-linear- algebra...](http://ocw.mit.edu/courses/mathematics/18-700-linear-algebra- fall-2013/)

</comment></comment></comment></comment><comment><USER5> Linear algebra is cool, no doubt. This blog post is certainly well written and explains how to think of matrices as functions.

I have written a blog post[1] that describes matrices as functions. This blog post is titled "Correcting common mathematical misconceptions" and walks through N dimensions, linear functions and linear algebra. After explaining what linear functions are, I mentioned nonlinear functions and how they often don't have a closed form solution and why mathematicians find bounds.

[1]:[http://scottsievert.github.io/blog/2014/07/31/common- mathema...](http://scottsievert.github.io/blog/2014/07/31/common-mathematical- misconceptions/)

</comment><comment><USER6> >We're getting organized: inputs in vertical columns, operations in horizontal rows.

OH! Bloody hell, so _that 's_ why we write it like that!

>The eigenvector and eigenvalue represent the "axes" of the transformation.

>Consider spinning a globe: every location faces a new direction, except the poles.

>An "eigenvector" is an input that doesn't change direction when it's run through the matrix (it points "along the axis"). And although the direction doesn't change, the size might. The eigenvalue is the amount the eigenvector is scaled up or down when going through the matrix.

Very nice! I'd had an algebraic (ahaha) understanding of eigenvectors/values before, but hadn't a geometric intuition. Thank you. Now I can neatly imagine why the eigenvector is orthogonal/perpendicular to the "direction" of the transformation.

Determinants, too.

Excellent article.

</comment><comment><USER7> I've always been partial to this: [http://blog.wolfire.com/2009/07/linear- algebra-for-game-deve...](http://blog.wolfire.com/2009/07/linear-algebra-for- game-developers-part-1/)

<comment><USER8> They stopped posting these kinds of stuff. Sad.

</comment></comment><comment><USER9> A lot of programming puzzles companies hand out can be solved with linear algebra. One company I interviewed at gave me a pretty complex problem, solved it with linalg. Didn't get the jib since I didn't use the usual data structures, but it was still a fun experience.

<comment><USER10> Your use of linear algebra over what was expected would have significantly increased your chance of getting an offer if I'd been interviewing.

</comment></comment><comment><USER11> I wish someone would better explain Lie algebra.

<comment><USER12> I'll would request the same for p-adic numbers, while they're at it!

<comment><USER13> p-adic numbers are actually quite simple; so simple, I've actually seen children invent it on their own!! They're just like ordinary decimal notation numbers, except instead of allowing these to extend infinitely to the right (as in 3.14159...), you allow them to extend infinitely to the left. So, in addition to familiar numbers like 45 or 67.8, you also have numbers like ...95141.3 or ...999 or what have you.

You add and multiply these according to the same rules you're already familiar with. So, for example, if you add 1 to ...999, the last digit of the output is 0, and you get a carry. Making the second to last digit 0, with another carry. And so on and so on, making the result ...0000 over all. Thus, ...999 acts like -1.

(If we were working in base two, this last example would be just like the "two's complement" you are perhaps familiar with from computer arithmetic!)

In fact, most discussion of p-adic numbers isn't done in base ten. Instead, people typically focus on p-adics in a prime base (hence the p). Why? Because in a prime base, you will find that every nonzero p-adic number has a multiplicative inverse, which is very convenient (while in a composite base, you will find that sometimes nonzero numbers multiply to zero). But there's nothing actually stopping you from making use of the notion for non-prime base, should you be interested in doing so; the notion is still perfectly coherent. (That having been said, another reason mathematicians focus on p-adics in prime bases is that the Chinese Remainder Theorem essentially allows one to reduce the study of all other bases to this case.)

There's a lot of beautiful further theory to explore here, but again, the basic idea is hopefully quite simple. Let me know if you have any questions and I'll be happy to try explaining further or more clearly.

<comment><USER14> Interesting. Very similar to the way ints are represented in Python (since they have arbitrary length, negative numbers are represented with infinitely many 1's in the most significant bits).

</comment></comment></comment></comment><comment><USER15> If you like this, then go read the No bullshit guide to math & physics after this: [http://minireference.com](http://minireference.com).

Love the trend of indie publishing that has been exploding in the past 2 to 3 years. The biggest issue is that the marketing & design is often mediocre. Content wise, completely awesome though. I lost interest in books from larger publishers years ago.

<comment><USER16> Is this book worth getting for someone who doesnt remember anything about math from high school and beyond?

<comment><USER15> I think so – it covers the fundamentals. Numbers, Algebra, Functions. Not exactly in depth, but if you've done high school math you should quickly remember and be able to get to the fun stuff.

</comment></comment></comment><comment><USER17> I always loved the fact that matrices encode operation on matrices (see comment#1 [http://betterexplained.com/articles/linear-algebra- guide/#co...](http://betterexplained.com/articles/linear-algebra- guide/#comment-124145) ). Very meta-circular, Ycombinatorish. Would that mean Linear Algebra is homoiconic ?

<comment><USER18> Having group or ring structure isn't too surprising and isn't too intimately related to the idea of metacircularity or the Y-combinator. It's actually more interesting to really see that matrices encode linear transformations, and multiplication is function composition.

<comment><USER17> Yes, I can't recall where I first read this (someone's comment on HN most probably) but it was very enlightening.

</comment></comment></comment><comment><USER19> Perhaps I don't recall my linear algebra well (we called it engine math), but there's a hell of a lot more to it than just passing inputs through a series of operations. Linear algebra is more about the methods used to design very elegant models and transforms and understanding the limits of those models and transforms.

<comment> Ar-Curunir No, those are the _applications_ of linear algebra.

Linear algebra itself is just a study of vector spaces and linear operators and transforms and such.

<comment><USER19> For context, I don't think I ever knew the thing we were studying was called linear algebra, so it took me another 17 years to realize that is the common name for what we studied in that class. Now I'm wondering if maybe one of the intents of the small engineering-focused school's tightly integrated math- science-engineering curriculum was to avoid an introductory linear algebra class. We had to understand matrices and vector spaces earlier for other classes and didn't do what you call the "applications" of linear algebra until sophomore year.

</comment></comment></comment><comment><USER20> I took linear algebra 2 semesters ago.It was awesome! Highly recommend learning it, I use it on a daily basis in my work in 2D and 3D!

</comment><comment> dj-wonk I find it non-intuitive that many of the input-output diagrams flow from right to left.

(We all know that causality only flows left-to-right.)

<comment><USER21> That's because matrix multiplication is noncommutative, and it's traditional in linear algebra to write the inputs matrix on the right of the operations matrix. Just like in normal algebra, you write 5x+7y instead of x5+y7. So the picture matches up with the notation.

</comment></comment><comment><USER22> Has anyone bought their calculus course? is it worth it?</comment>


Who Killed the Postal Service?  - <AUTHOR> http://www.theatlantic.com/business/archive/2011/12/who-killed-the-postal-service/249508/

<comment><USER2> The only thing that is causing the problem is the federal government has demanded the USPS pay vast riches into a special tax on them alone which the government is calling a "trust fund" for "future pension obligations". This is just a ransacking of the postal service's operating income by the feds. There is no trust fund, the money is not saved anywhere. It goes into the Treasury and is spent by the federal government the same year it is received. 100% of the postal service's financial problems are because of this plunder.

</comment><comment><USER3> "Salaries and benefits make up 80 percent of the Post Office's budget. By comparison, FedEx spends 43 percent of its budget on labor, while UPS spends 63 percent, according to Businessweek. Why the disparity? As the magazine put it, "USPS has historically placed the interests of its unions first."

You can't simply compare the USPS with FedEx or UPS. Neither of the latter provide regular deliveries. How much would it cost FedEx to have a large enough workforce to visit a significant fraction of the homes in the US every single workday? For that matter, doesn't UPS and/or FedEx have an agreement where UPS does the final delivery of some of the packages, precisely because USPS has most people?

Without that comparison, that comment comes across as a gratuitous slam against unions.

<comment><USER4> The only reason FedEx and UPS don't deliver mails is because it's illegal to compete with the mail service.

<comment><USER3> Yeah, stupid Constitution for giving Congress monopoly power over the mail system. Silly also that we require universal postal service at affordable rates in exchange for that monopoly.

<comment><USER4> I think you're reading into my comment, I was merely stating why UPS and FedEX don't deliver mail and why comparisons between them and USPS are difficult to do. Though for completeness there have been people who've competed with USPS in the past, Lysander Spooner is a notable one.

</comment></comment></comment></comment><comment><USER5> Ben Gibbard, sadly.</comment>


Show HN: TumblrThemr - tool to develop tumblr themes offline - <AUTHOR> http://github.com/kalyan02/tumblrthemr

<comment><USER2> I was looking for such a tool! But unfortunately, its only for Mac! When will we get TumblrThemr on windows?

<comment><AUTHOR> You should be able to run it on windows as it is, by checking out the source and executing ./run.sh script or simply 'python main.py'.

Building the standalone shouldn't be hard to do it with py2exe.</comment></comment>


Thiel: Alibaba is "fundamentally a political investment" that I wouldn't make - <AUTHOR> http://pando.com/2014/09/17/thiel-alibaba-is-fundamentally-a-political-investment-that-i-wouldnt-make/

<comment><USER2> Some politically connected investors are saying that the government is unhappy foreigners are given the rights to own and invest in China's e-commerce via this IPO and Jack Ma is scrambling to appease them.</comment>


Pope Francis: "The Internet [...] a gift from God" - <AUTHOR> http://www.news.va/en/news/popes-message-for-the-48th-world-day-of-social-com

<comment><USER2> The little boys are also a gift from God to the priest to fuck.</comment>


Ask HN: Which stocks would you invest in right now? - <AUTHOR> Which public companies do you think are underpriced for the post-pandemic world? <comment><USER2> I'm mainly on the Scandinavian market, so I'm not sure specific companies I've bought are of any interest to you.

As a general rule I've looked for big companies with low debt and high net margins (above industry average) because they are less likely to be forced to do something bad for the long term to survive the short term.</comment>


Ask HN: Remote Co-founders: did it work for you, or not? - <AUTHOR>

<comment><USER2> Currently working remotely with my co-founder (we run hackeparadise.org)

It's less efficient for us than being co-located, because we don't socialize as much regarding non-work things and we don't have the unplanned existential conversations about the business that come up at random moments.

Still, I think there is benefit to being remote part of the time. This is the 3rd stint of 2-8 weeks we've done remote interspersed with period of co- location, and I highly recommend that. It gives you time to do your own thing, see family, etc., and then when you meet again in person, you usually have a super productive several weeks.

<comment><USER3> I think you may have forgotten an "r" in your URL. [http://hackerparadise.org](http://hackerparadise.org) ?</comment></comment>


Nassim Taleb contends that there is a global riot against pseudo-experts - <AUTHOR> http://www.thehindu.com/books/%E2%80%98Trump-makes-sense-to-a-grocery-store-owner%E2%80%99/article17109351.ece <comment><USER2> If only it were true; we might finally be rid of Taleb, who is pseudo-expert royalty.

The sad fact is that it is a revolt against _actual, real expertise_ , and it is being led by people like Taleb--people who have created media-based careers that financially reward them for attracting attention, not being correct.

<comment><USER3> What do you not like about him? I feel like part of what he preaches is a healthy skepticism and understanding things for yourself -- which I think is at least a reasonable way to approach information.

<comment><USER4> As Daniel kahneman said once to him "you are unnecessarily rude to economists"

<comment><USER5> Gov economists have created a global mess. Pretty fair to be rude to them for spreading pseudoscience.

<comment><USER6> If you see fraud and don't shout fraud you are a fraud.</comment></comment></comment></comment></comment>


New from OpenDNS: Security for nomadic workers - <AUTHOR>

Email from OpenDNS as follows:
Since 2006 we've pioneered innovative ways of making your Internet safer, faster and more reliable. In 2009 we began offering business security solutions that now secure the networks of some of the largest, most trusted companies in the world. The world has changed quite a bit since then, and we're about to take a big step forward to help you secure it.
We know that the way people work has changed. We work from home, coffee shops, and on the road — over Wi-Fi, cellular networks, and from all sorts of different devices. Yet security companies have failed to adequately address the threats that come in today's work-everywhere era.
I'd like to personally invite you to be among the first to discover a new service from OpenDNS called Umbrella, launching next month. Our mission remains the same: To help people connect with confidence. But we're stepping up our game in a big way. You can sign-up on Umbrella.com to find out when we launch and get early access to our beta program.
OpenDNS has always been a company squarely focused on addressing the needs of an increasingly-connected world and we are deeply appreciative of your support over the years.  I can't wait to share more with you over the coming weeks, and hear your feedback when you start using Umbrella.
DISCOVER UMBRELLA » http://www.umbrella.com/
Thanks,
David Ulevitch Founder and CEO, OpenDNS <comment><USER2> hold on, I play the resident evil series. Not sure I like where this will lead eventually.</comment>


Why Are Some People So Smart? - <AUTHOR> http://www.wired.com/2013/07/genetics-of-iq/

<comment><USER2> Ask not why some people are so smart, ask why so many are dumb. :)

</comment><comment><USER3> tl;dr

</comment><comment><USER4> It's absolutely pathetic that that kid had to learn Perl to do genomics.

<comment><USER5> What would you recommend should be the alternative

<comment><USER6> Tcl</comment></comment></comment>


IRC bot that monitors server. - <AUTHOR> http://bsdpunk.blogspot.com/2009/07/perl-tutorial-on-setting-up-server.html

<comment><USER2> I quote the article:

"The second one is more mischevious and runs any command you wish on the server by saying in the private channel the word system and then the command as in:system cat /etc/passwd . The second one can also run the slow loris DOS attack which affects versions of apache below 2.2.8 and some versions of squid proxy server. This DOS attack can take down small servers with only one machine running them, the second bot will not be revealed in this post but the next post."

Great, we really need more ddos tools out in the wild.</comment>


The Case for Free Community College - <AUTHOR> https://www.theatlantic.com/ideas/archive/2019/01/rahm-emanuel-case-free-community-college/579319/ <comment><USER2> "Today, however, as associate's degrees have replaced high-school diplomas as the indispensable ticket into the middle class..."</comment>


FPSheet – a spreadsheet program with a Haskell scripting environment - <AUTHOR> https://github.com/RKlompUU/fpsheet <comment><AUTHOR> This is a tool I have been working on casually. It still misses some (or many..) vital features, but it seems to be a right moment to get some feedback from the community, to see what others may think of the idea and the implementation itself. Let me know what you think!</comment>


Insights from the iPhone 5s Launch - <AUTHOR> http://blog.talkto.com/post/63379643386/insights-from-the-iphone-5s-launch

<comment><USER2> [http://www.iphoneincanada.ca/](http://www.iphoneincanada.ca/) is one of the better references for line up info, etc., around the time of Apple product launches in Canada. It was pretty heavily pushing TalkTo as the optimum way of checking on stock of 5s', store opening hours, etc. This may have helped skew the numbers.

</comment><comment><USER3> Without knowing the sample size of these stats (all taken from TalkTo, an app I have never heard of) they are pretty useless... there's no way of knowing if they are even remotely representative.

</comment><comment><USER4> > The 5s is hot; the 5c not so much

People did more talk.to searches for the 5s than the 5c because the 5c was _in stock_ and not hard to obtain, hence not necessary to search for.</comment>


Bye, bye Adobe - <AUTHOR> https://medium.com/@ramijames/bye-bye-adobe-3c3ba22c4ac0?ref=heydesigner-weekly27 <comment><USER3> >"This is nothing more than a big player strong-arming its user base and milking it for money. Adobe, not cool."

I hope that nobody is actually _surprised_ by this. I mean, the second Adobe announced that it was moving to a cloud service, this is the thought I had, and I'm no prophet.

Because this is basically the same kind of crap you have to deal with for just about every subscription, in every medium.

</comment><comment><USER4> This is typical of the tech industry, making it hard to cancel an account so you are forced to stay a customer and return. I think AOL used to do that, and had to pay to cancel your account.

Bloatware is nothing new either.

Instead of Photoshop some people would rather use Gimp: [http://www.gimp.org/](http://www.gimp.org/)

<comment> extropic-engine I know Gimp is always referenced as the "alternative" to Photoshop but I think it still suffers from a lot of usability issues. I've found Krita to be a much better replacement: [https://krita.org/](https://krita.org/)

</comment></comment><comment><USER5> I've found Adobe products to have interactive performance poor enough to be considered 'unusable' for even small workflows on a GBP1500 Haswell MBA - <USER2> only other piece of software that's has the same level of latency is Eclipse.

Thanks god for Sketch.

</comment><comment><USER6> Wow, I see Rami had his cancellation fee waived! I had to fork out another $75 for cancellation and wasn't even allowed to use the product for the remainder of the period.

Adobe? Never again.

Using Inkscape now for Illustrator replacement. Mixed results.

<comment><USER7> > Luckily I decided to do this exactly a year after I started the account, > because apparently the terms that I signed up for stipulate that if I cancel > before that, I'll be charged a service fee

There's no cancel fee after 1yr+ membership. To be fair you have the option when you sign up to either go for a year's contract or a month-by-month. The latter as you might expect costs a bit more

</comment></comment><comment><USER8> I rolled with CS5 for so long until the burden of asking clients to provide backwards compatible source files became too large.

It's both remarkable and a shame to see how far the suite has come since the days of Photoshop 1.07 on my old Apple.

Regardless, I'll stand by Rami for the decade it'll take for competing software to mature.

</comment><comment><USER9> Everyone where I work is using Sketch now. No, seriously -- Adobe should be very worried. People who have used ACS for years are jumping ship by the dozens.

<comment><USER10> I'm confused - I googled Sketch and saw that is a, not very comparable in my opinion, tool by Adobe.

Do you have their site?

<comment><USER11> I guess they're talking about [http://bohemiancoding.com/sketch/](http://bohemiancoding.com/sketch/)

</comment></comment></comment><comment><USER12> I can see why this is frustrating, but did you really need to be such a dick to the support agent?</comment>


Ask HN: What are the best open-access journals for non-academics to submit to? - <AUTHOR> I'm a non-academic and I would like to submit an article for peer review and publishing. I prefer that there's zero or minimal cost, although I understand the scope of review and editing will be lower.<p>What are the best open access journals out there? Are there any that have particularly bad reputations to avoid? Thanks. <comment><USER3> Publishing to arXiv [1][2] is your best bet in the short term.

\- Free

\- Lots of subject areas (not just computer sci.)

\- People may cite your work

\- People may offer feedback

You do need to get endorsed first though [4] (as another comment mentions).

However, if you want "proper" peer reviewed & published, you need to start looking around at conferences. They're usually easier to get something through, as they tend to expect much shorter papers.

There are industry led conferences (like RuhrSec [3] for Cyber Security) which might be a good route to start with.

But, really, there's no shortcut for getting into a "proper" journal / conference. You need to research, have funds, time and, sometimes, a bit of fame already.

[1] [https://academia.stackexchange.com/questions/16832/why- uploa...](https://academia.stackexchange.com/questions/16832/why-upload-to- academic-preprint-sites-like-arxiv)

[2] [https://arxiv.org/help/support/faq#1C](https://arxiv.org/help/support/faq#1C)

[3] [https://www.ruhrsec.de/2019/](https://www.ruhrsec.de/2019/)

[4] [https://arxiv.org/help/endorsement](https://arxiv.org/help/endorsement)

<comment><USER4> > However, if you want "proper" peer reviewed & published.

So, why would you want "proper" peer review nowadays? It should be a means to achieve something else. Just for the challenge?

I mean besides arXiv there are many ways you can get your knowledge out there if you want to give people free (or even paid) access to it. This will also create a lot of Feedback if it's the least bit interesting.

If you want your knowledge to generate new products and companies you will also find that Startups nowadays don't wait for peer review before they launch.

So the only practical reason I can see is if you want to get funding. And Then you use the funding to create more papers. To… well… get more funding.

TL;DR: If you think about that you want to have "proper" peer review meaybe you should spend some time thinking about what you actually want to achieve and if there aren't better ways to get there.

<comment><USER5> Absolutely. None of the modern advancements in knowledge and understanding involve the waste of time known as "peer-review". See [http://timecube.2enp.com/](http://timecube.2enp.com/).

<comment> barry-cotter We know peer review is unnecessary for quality and progress in science because it only became a standard after WWII. Einstein published one peer reviewed paper.

There are multiple fields that have routed around peer review; everything that works on preprints and working papers. It takes more than two years to get an Economics paper published. If it took that long for things to get eyeballs progress would be exceedingly slow.

Peer review may have some good points but it certainly isn't necessary to modern advancements in knowledge and understanding.

<comment><USER3> That one economics paper, as an example, could have made one seemingly innocuous assumption that might be overlooked by later work.

Let's say a paper that relies on the preprint take that assumption for granted. And then another paper references that one. And again. And again.

Then the fifth paper gets adopted by a government in some esoteric policy, which causes their economy to implode.

May not be necessary to just publish "stuff", but it is necessary to mitigate against the dangers of invalid assumptions.

<comment> barry-cotter Peer Review has not stopped the situationyou describe from occurring in multiple fields. Social Psychology is particularly bad but cancer biology isn't great either.

——-

Why Most Published Research Findings Are False

[https://journals.plos.org/plosmedicine/article?id=10.1371/jo...](https://journals.plos.org/plosmedicine/article?id=10.1371/journal.pmed.0020124)

Bayer and Amgen, reported dismal results when they tried to reproduce some cancer papers. Only 25 percent of the papers Bayer examined were reproduced. Amgen was able to replicate only six out of the 53 studies it examined.

[https://www.npr.org/sections/health- shots/2017/01/18/5103048...](https://www.npr.org/sections/health- shots/2017/01/18/510304871/what-does-it-mean-when-cancer-findings-cant-be- reproduced)

Plan to replicate 50 high-impact cancer papers shrinks to just 18

An ambitious project that set out nearly 5 years ago to replicate experiments from 50 high-impact cancer biology papers, but gradually shrank that number, now expects to complete just 18 studies.

[https://www.sciencemag.org/news/2018/07/plan- replicate-50-hi...](https://www.sciencemag.org/news/2018/07/plan- replicate-50-high-impact-cancer-papers-shrinks-just-18)

</comment></comment></comment></comment></comment></comment><comment><USER6> Open access journals by definition are almost never free/minimal cost - <USER2> idea is the the author's are paying _more_ of the costs associated with publication, not less. But in return, your article can be read or accessed by anyone.

If you want to fork over 5k, I would recommend PLOS ONE as a major, well recognized open access journal that takes the "publish anything with scientific merit" approach.

If you do not want to pay, Arxiv is your best bet. However, I will say that, while good papers end up on arxiv, so do lots and lots of bad ones (that's the point) and there's no concept of "peer review" there.

<comment><AUTHOR> That's a very helpful summary, thanks. From another comment, it seems arXiv requires academic affiliation or endorsement: [https://arxiv.org/help/endorsement](https://arxiv.org/help/endorsement)

Are there any others?

<comment><USER7> My understanding is that whether or not endorsement is required is dependent on which "area" you submit to. And even if I'm wrong about that, "endorsement" in their terms is really just meant to mean "this person is not a total quack / spammer / etc." So don't feel shy about reaching out to people in the academic community who are potential endorsers and just ask "I want to submit this to ArXiv, would you be willing to give it a quick look and possibly endorse me so I can submit?"

If you already know somebody in the academic community, it would probably be better to try them first. But if not, it appears that ArXiv etiquette allows cold-emailing people... they just ask you not to blast requests out to mass numbers of people simultaneously.

</comment></comment></comment><comment><USER8> You need to specify your field. What's your article about?

Different fields do things entirely differently, and short of publishing in Nature journals are very specific to their fields.

<comment><AUTHOR> Here's my draft article: [https://github.com/freeradical13/ValueBasedPrioritization/ra...](https://github.com/freeradical13/ValueBasedPrioritization/raw/master/value_based_prioritization.pdf)

I'm not really sure what field I'm targeting, so I was hoping people would note their favorite open access journals and I could investigate (and I also thought a more generic list would be generally interesting to all the HN folk).

<comment><USER3> Comments from a machine learning / AI focused PhD student. Sorry if I get a bit ridiculous below, I'm up to my neck in coffee and having one of my more "esoteric" days...

0) Golden rules:

\- Readability & formatting matters.

\- Know your audience.

\- Context matters.

\- Brevity is best.

\- Be clear & concise.

\- Abstract, General Intro, Aims, Background/Previous work, Method, Results, Conclusions, Future work => In that order.

\- _Most important_ : Nothing goes into the main body unless it makes a tangible, useful & clear contribution.

Some of the best papers are the shortest ones: I can read, understand and explain it to someone else in 1 hour. Among the worst are the 25 pagers that take me 2 days to realise that they aren't useful to me.

1) Footnotes

You aren't commenting code. If it doesn't go in the main text, why is it even there? It is distracting away from the important part - the main body of text.

It either lives in the main text body, a reference or the appendix. If it doesn't live there, then _maybe_ footnote (e.g. a url to some very specific data you trained against).

Get very delete happy with them. For example:

\- viii & xiii @ on page 3, xvi @ page 4 should either be in main body (if important, they don't look it), or deleted.

\- Things like python commands should just get dumped in the appendix. No footnote / reference. A blanket "you can see all the commands used along with descriptions in the appendix". I'm going to look at what is in the appendix anyway. Because I'm a pedantic academic.

2) Formatting:

\- Think about using a template like [1].

\- Reduce your font size to 10pt please.

\- If you are going to be very maths heavy, think about moving to a single column style. I, personally, find it makes it easier to read eqns and to follow their logic. Currently I have to jump from around the page and keep getting lost.

\- For sections 5 & 6: Stop _putting_ something in _bold_ every paragraph. _Bold_ is only _to_ _highlight_ when it's _really important_. The _name_ of something _is_ not _really important_. Prefer _italics_ over _bold_ , but even use that _sparingly_. How _difficult_ was it _to_ focus _on_ reading _this_ paragraph when the _words_ keep changing _shape_?

3) Graphs & Tables

Graphs & Tables exist at the top of a page. That's the only place they live if they live in the main body. They don't have to be on the same page as where you refer to them, and you can group them together. Otherwise, appendix that stuff.

Else you'll to end up with blank space (like end of page 4 & 5) and formatting headaches later on.

You haven't done your results discussion part yet... When you do, make sure you don't talk about every single table/graph. Only talk about the results that are important. Otherwise it's guff that will bore your audience.

4) Structure:

You have so many sections that I need a table of contents to work out where I am. For a 10-15 pager, that's silly. Learn to love subsections. Especially those early parts.

5) Intro & Background work:

I have no idea what previous work this relates to. Is there previous work in the field? If so, talk about it. Talk about how you're improving it. Talk about what the __context __of this paper is.

Don't know what the context is? Then you better find out... People will ask!

6) Quotations

This seems like a technical paper, not an English lit assignment. If you directly quote anything, let alone a whole paragraph, it better blow my mind. I am afraid page 3, column 2 does not. Remove it. Just reference anything like that. If people want/need to know, they will read it too.

[1] [https://www.ctan.org/pkg/ieeetran](https://www.ctan.org/pkg/ieeetran)

<comment><AUTHOR> I've integrated your feedback here: [https://github.com/freeradical13/ValueBasedPrioritization/ra...](https://github.com/freeradical13/ValueBasedPrioritization/raw/master/value_based_prioritization.pdf)

I tried to let the figures and tables float but I disliked the strange spacing that resulted. I also tried putting them at the top and it was very hard to follow.

Thanks again for your very thoughtful feedback!

</comment></comment></comment></comment><comment><USER9> It bothers me that HTTP + aggregators or search failed so hard in this arena. I'd prefer an "IPFS + curated journal documents" model to any of these "hubs."

</comment><comment><USER10> Walt Crawford has done quite a bit of interesting work in this area, he's got a book out that looks at OA journals here:

[https://waltcrawford.name/goaj3.pdf](https://waltcrawford.name/goaj3.pdf)

More writing here:

[https://waltcrawford.name/goaj.html](https://waltcrawford.name/goaj.html)

I'm not sure that's exactly helpful for what you're asking about, but it's a good read for anyone interested in this area.

</comment><comment><USER11> If you are into AI/ML, I believe that [https://distill.pub/](https://distill.pub/) allows you to submit papers as a non-academic.

Be aware that they are slightly different than other publications and have some special requirements (for example, I believe that your paper should have some interactive diagrams if possible).

</comment><comment><USER12> For articles on open-source software, I would recommend JOSS [1]. The organization that publishes JOSS has other journals [2], but nothing in the lines of your study.

[1] [https://joss.theoj.org/](https://joss.theoj.org/)

[2] [http://www.theoj.org/](http://www.theoj.org/)

<comment><USER13> Does this journal have a ranking or impact factor?

</comment></comment><comment><USER14> I see plenty of unaffiliated submissions on Arxiv. Why not just post it there and distribute the url? My one suggestion would be to read the target style guide of the academic journals you'd like to be in (such as Nature). And hew as near as polished for your own paper before submitting.

<comment><USER15> You can't "just post" something on arXiv as an unaffiliated researcher, you need to be endorsed first.

[https://arxiv.org/help/endorsement](https://arxiv.org/help/endorsement)

</comment></comment><comment><USER16> If it's software you can submit to The Journal of Open Source Software [https://joss.theoj.org](https://joss.theoj.org) which will cost you as much as making a pull request as far as I know :-)

</comment><comment><USER17> That would depend on the topic of the article.

</comment><comment><USER18> Interesting... there should be a good one available. Will be following this post.

</comment><comment><USER19> Definitely depends on what the topic of the article is I should think.</comment>


Mozilla IRC Sunset and the Rust Channel - <AUTHOR> https://blog.rust-lang.org/2019/04/26/Mozilla-IRC-Sunset-and-the-Rust-Channel.html <comment><USER2> I wonder what's become of steve's claim that third party clients are allowed on Rust's discord, but I guess I already know the answer. [https://internals.rust-lang.org/t/exploring-new- communicatio...](https://internals.rust-lang.org/t/exploring-new- communication-channels/7859/80)

<comment><AUTHOR> I never got the actual statement.

</comment></comment><comment><USER3> What about Matrix/Riot? It's odd they're jumping on a game-centric messaging platform.

</comment><comment><USER4> Ah yes, going to Discord. For those of you that don't know this is the proprietary[1] white supremacist[2] furry pedophilia[3] network run by elves and manchildren[4]. Good look on you Mozilla!

[1] [https://stallman.org/discord.html](https://stallman.org/discord.html)

[2] [https://slate.com/technology/2018/10/discord-safe-space- whit...](https://slate.com/technology/2018/10/discord-safe-space-white- supremacists.html)

[3] [https://lulz.com/discord-has-a-furry-pedophile- problem-2280/](https://lulz.com/discord-has-a-furry-pedophile-problem-2280/)

[4] [https://i.imgur.com/rkYr9GX.jpg](https://i.imgur.com/rkYr9GX.jpg)

<comment><USER5> Isn't it a beauty of capitalism that a product can be made by a white supremacist furry pedophile elf manchild and nobody has to care about it as long as they stay a productive member of society and don't threaten anyone?

<comment><USER6> "white supremacist furry pedophile elf manchild"

I'm gonna need a citation on a claim that wild

<comment><USER7> That's my rap name.</comment></comment></comment></comment>


Utah rejects Apple-Google approach, endorses alternative contact-tracing app - <AUTHOR> https://www.cnbc.com/2020/05/13/utah-contact-tracing-healthy-together-app.html <comment><AUTHOR> A few key points:

* Built by Twenty for $2.75m + $300k/mo to operate

* Doesn't use Apple-Google API

* Uses GPS + Bluetooth, sends location history to centralized server

* 45k people signed up since 4/22 (21 days ago), 2% of Utah population

* Some estimates say ~60% required for contact tracing to be useful, Utah DoH says lower for usefulness

* Stated rationale for app is to send data to public health officials unlike Apple-Google decentralized API. Utah has 1200 phone-based contact tracers which apparently will in the future use data to coordinate effort.

After downloading the iOS app:

* Says it will delete data after 30 days

* Requests Bluetooth, GPS set to 'Always', Contacts (to invite people), Notifications

* Has daily symptom checker that tell you whether you need a test

* Offers map of test centers

Seems like a well designed app.

I assume like other approaches from European countries etc, this will be subject to background app limitations, requiring user to have app in foreground to get benefits.

My take is there's a risk for 'perfect is the enemy of the good', and something built without privacy protections may cause fewer people to download it, thus making contact tracing unviable. Depends a lot on whether Utah can convince its citizens to use it.

[https://coronavirus.utah.gov/healthy-together- app/](https://coronavirus.utah.gov/healthy-together-app/)</comment>


3 Algorithms per Week - <AUTHOR> https://3apw.blogspot.com <comment><AUTHOR> Learn 3 new algorithms and data structures every week.

Learn from the basic algorithms to the hardest ones asked in an interview with step by step explanation and code in Python-3 and C language.

Useful for interview preparations and algorithmic knowledge.</comment>


Back to the Future of Watches - <AUTHOR> http://www.fluidtime.com/newsreader-en/items/back-to-the-future-of-watches.html

<comment><USER2> Do they really care about smartwatches if they are suddenly making their app work with the Apple Watch?

I bet this is just publicity, otherwise if they really cared about smartwatches they would already have their app working with Android Wear.

Either that, or it's CEO blindness again, thinking only Apple exists. ;)

<comment><USER3> I think it's just a matter of choosing the biggest market and going after that. I think it helps that they already make apps for iphone. It's also a question of support. Do you make your app square or rounded? With android, you would have to support both, or perhaps one and have people complaining. With Apple, you support square and you know everyone has a square screen. In any case, I wish them the best of luck. I myself have a Moto 360 and it does everything I would want it to do, and it looks nice on my wrist.</comment></comment>


Chinese Internet Traffic Redirected to Small Wyoming House - <AUTHOR> http://bits.blogs.nytimes.com/2014/01/22/chinese-internet-traffic-redirected-to-small-wyoming-house/

<comment><USER2> It's not just a random house in Cheyenne, Wyoming. It's the house that is the official address of over 2000 (!!!) shell corporations ([http://www.reuters.com/article/2011/06/28/us-usa-shell- compa...](http://www.reuters.com/article/2011/06/28/us-usa-shell-companies- idUSTRE75R20Z20110628)). Shady business going on here, at the least.</comment>