Autonomous corporation "The DAO" has become the biggest crowdfunded project - <AUTHOR> http://techcrunch.com/2016/05/16/the-tao-of-the-dao-or-how-the-autonomous-corporation-is-already-here/ <comment><USER2> The DAO isn't actually worth 120 million. For one, it's based on the price of ETH, which would completely crash if you attempted to sell even a few million worth.

Secondly, everyone can withdraw their funds from the DAO before any funds are sent to projects. Many have invested because those who invested early make money from those investing later, since the number of "DAO tokens" you get per "ETH" has gone down over time. ( _cough_ pyramid _cough_ )

<comment><USER3> > The DAO isn't actually worth 120 million.

I you tried to sell all Apple stock in a single day it would also sell at well below market rate- Does that mean Apple is worth less than its market cap?

That said, I personally have not invested/speculated in the DAO because I just don't see it as a good opportunity.

<comment><USER2> I just sold one of my hairs to myself for $10. Is my head now worth a million?

With Apple, there's intrinsic value to consider. And frankly, if you sold enough Apple stock for it to go down 50%, I'd personally start buying. I doubt that's the case for ETH, where there's only early adopters buying it hoping to strike it rich.

<comment><USER3> So you're saying the intrinsic value is certain to be lower than it's current market value? I have good news for you: You can become rich by simply shorting ether on Kraken and Poloniex!

<comment><USER4> You're completly disregarding that timing is far more important than simply knowing that there will be a downward correction. The shorting fees will end up being consuming a large chunk of the profit even though you sold a hundred thousand ether coins at $11 and bought them back at $1.

<comment><USER5> > The shorting fees

Costs about 16% APR to borrow ETH for shorting on Bitfinex right now. So if you're expecting a >=90% crash in the next ~5 years you'd still make a profit.

</comment></comment></comment></comment></comment></comment><comment><USER3> TLDR; A computer program living on the ethereum blockchain is currently in control of 107+ million dollars, making it the second largest crowdfunded project in history. Shareholders vote on proposals to give money to other entities (probably also programs on the ethereum blockchain) that they hope will make money and send it to the parent contract.

All votes are managed by a program written in EVM code, which runs on a sort of "virtual computer" that is designed to be (in theory) 100% secure, 100% reliable, and 100% incontrovertible. No middlemen have any control over this program, it essentially completely outside of any human control (beyond the voting rules encoded within it.)

UPDATE: Apparently this morning it passed $120 million and is now the largest crowdfunded project in history.

<comment><USER6> Last time I checked, Apple Computers is worth $500+ Billion and is a public company.

Don't forget that the stock market is the original mass-crowdfunded project. Anyone can become an owner if you go to a brokerage account, and ownership rights entitles you to a vote for the board of directors and a share of the profits (ie: the dividend)

<comment><USER3> Agreed, "crowd funding" is an inexact term- I described it that way to help explain why some people think the project is novel. Certainly there is a lot of arbitrariness as to what belongs on a list of "top crowdfunded projects".

<comment><USER6> Yup. I just want to bring up the fact that this thing seems more akin to a classical public company, but in many regards is less transparent.

There's the fact that all the code and mechanisms is public, but that's the part that everybody trusts anyway. When you're a shareholder in Apple, the votes are tallied, all relevant information from the board of directors is published, etc. etc. And the SEC forces the company to publicly disclose financial information in the form of 10k, 8k, and publicly announce insider trades.

At the moment: I don't know who the "insiders" of this company are. Maybe one dude has $50 Million USD and effectively controls the entire damn "movement". Or maybe not. Knowing the identities of large shareholders is a BIG DEAL in public companies.

Still, the digital form probably has some advantages. Maybe future companies will find a compromise and manage to exist as digital contracts akin to this DAO? But I don't expect this first version to actually work. Its pretty much a learning experiment, to see what is and isn't possible with technology.

If any lessons are to be learned from Bitcoin: politics will affect this entity eventually. The technology currently serves as a mask to the politics. But politics always rears its ugly head eventually.

<comment><USER7> Apparently 0.8% of DAO token holders own >50% of the tokens. There is lots of potential for conflict of interest

</comment></comment></comment></comment></comment><comment><USER8> A corporation, being a legal fiction, can only act through physical persons. So in that respect, no corporation can be truly autonomous. It sounds like what they have done is taken all the paperwork associated with corporate activity: by-laws, annual meeting minutes, resolutions, etc., and put them into a block chain. A more proper description would be a paperless corporation.

<comment><USER3> That's like saying a car can't be autonomous because some programmers wrote the software that it uses.

<comment><USER9> No, a corporation is a legal entity that must have directors and officers, aka people. Without that, you don't have a corporation.

And after reading the article, they aren't a legally recognized corporation.

<comment><USER10> > No, a corporation is a legal entity that must have directors and officers, > aka people.

OR, a corporation is a legal entity formed by a corporate charter that is treated as a person under the law. In any case, whatever these ethereum-based things are, they aren't corporations.

<comment><USER11> >In any case, whatever these ethereum-based things are, they aren't corporations.

They may end up creating and operating corporations, but DAOs are their own thing.

<comment><USER12> To expand on Dragonwriter's point just a little.

Lets pretend DAO somehow autonomously filed Articles of Incorporation in DE. What is required by DE? A DE physical address for the corp.; a registered agent located in DE; and a incorporator (doesn't need to be shareholder, but must be an individual). Already we see it is an impossibility for DAO to do this autonomously.

But lets pretend it wasn't impossible, DAO autonomously entered into a Lease, contacted with a registered agent, contracted with a corporate lawyer too be the incorporator and file the Articles. Whats the next step? A bank account, well DAO doesn't have a social security, and doesn't qualify for TIN. The Corp. can't get an EIN, which means it can't open a bank account, which effectively means it can't do business. Well again, lets pretend the DAO C-Corp doesn't need a bank account because well Bitcoin is perfect right? DAO autonomously creates a Bitcoin wallet for the corp and does all business through that, well the company still doesn't have an EIN, which means it won't be able to pay taxes.

<comment><USER13> > _won 't be able to pay taxes_

Sounds like the ultimate corporation to me.

Until now, corporations have had to spends millions of dollars on accountants and lobbyists to avoid paying taxes. Well, friends ... no more. Because this organization is genetically _incapable_ of paying taxes!

Forgot the Cayman Islands and Nicaragua! Forget double Dutch reverse corporate inverse backdoor Irish LLCs with a post office box in Nevada! Gentlemen, put down your cigars and cognac and get to know your new best friend: little DAO ...

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> This is really cool for all of us in the Ethereum space, and as mentioned before, I'm a part of the Augur team which is a dapp on Ethereum.

I did sort of see this coming eventually as Augur, Digix as well as Ethereum itself have been really successful using this method. It's a pretty cool way to fund open source projects and I think with something that incentivizes contributions like Code Valley there will be a boom in these projects.

</comment><comment><USER15> Charlie Stross is smiling somewhere.

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

<comment><USER16> Closer to Daniel Suarez, Daemon & Freedom. [http://www.amazon.com/DAEMON- Daniel-Suarez/dp/0451228731](http://www.amazon.com/DAEMON-Daniel- Suarez/dp/0451228731)

This fiction starts the autonomous corporation from a vide game. The second book shows society's evolution to cope with the new corporation.

<comment><USER17> @CharlesMeeriam2 You beat me to it, I came here to post just this!!!

This article reads as though it were a page straight out of Suarez's Daemon series.

[https://en.wikipedia.org/wiki/Daemon_(novel_series)](https://en.wikipedia.org/wiki/Daemon_\(novel_series\))

</comment></comment></comment><comment><USER18> An interesting concept, but I'm not buying the hype.

At the end of the day a bunch of people bought shares in a company (or did they? Legality is weird) with the special condition that in addition to owning a share of said company they also get to vote on what the company actually does, and even submit proposals for what it should do.

Oh, and they also bought said shares with cryptocurrency. Magic internet money guys!

Admittedly I think enabling this kind of democracy in a company is a bad idea. It might actually wind up being less nimble than an actual corporation because of the extra consensus required.

Meanwhile, even though one might assume that the shareholders might be more informed than "the common mob", they might still propose and vote on more misses than, say, a corporation where new products and services are proposed through an informed internal decision making process that ultimately ends in the CEO using the information at his or her disposable to make the final decision. In a good corporation, bad decisions are self-correcting, in some cases leading to such extremes as a leadership shuffle.

By contrast, who's to blame if the DAO votes on a proposal that wound up being a miss? How do they learn from their mistakes so it doesn't happen again?

And I'm sure there are many other issues, but those are at the top of my list. I'd rather a company be run by those most capable, rather than the crowd.

<comment><USER19> > Admittedly I think enabling this kind of democracy in a company is a bad > idea. It might actually wind up being less nimble than an actual corporation > because of the extra consensus required.

This stuff is also known as a cooperative, and is a very common concept for democratic companies – almost all housing in europe is owned like this.

<comment><USER20> > […] almost all housing in europe is owned like this.

Did you mean _social housing_ rather than housing in general? Because home ownership exceeds 50% in most European countries, just like the US.

Social housing _is_ often managed by cooperatives, but decades of neoliberalist thinking caused a lot of the larger of these cooperatives to invest in boondoggles and grandiose development projects completely unrelated to their core task rather than build more affordable housing. Coupled with the immoral self enrichment of upper management, mentioning European social housing cooperatives may not exactly support the point you are making.

<comment><USER21> In the UK flats - apartments - are often run by a limited liability management company which collects maintenance fees and makes sure maintenance is performed.

Some or all of the flat owners are directors, and company accounts have to be filed in the usual way.

They're not co-ops in the usual sense, but they're not so different in practice. Obviously these companies aren't run for profit, but it's not unusual for companies to accumulate rainy day reserves and to make a little from interest.

</comment></comment></comment></comment><comment><USER22> the article doesn't actually explain the "autonomous" bit imo.

This looks rather more like a distributed decision making platform. Say, liquid democracy + ethereum, rather than Accelerando-style "sentient alien corporations".

Noticeably, the DAO does not seem to be able to make any decision, it does things through proposals suggested by people which are voted on.

Still cool anyway.

<comment><USER23> I suppose there are a couple of ways to view this:

\- The DAO is a tool for people to make decisions collectively, by pooling their resources, voting on activities, and having Ethereum take care of trust issues. This is what you've described.

\- Alternatively, The DAO could be described as similar to a computer virus: it tries to survive by spreading into as many systems as possible, using their computational resources to propagate itself further; but crucially its behaviour is completely determined by its code, rather than acting as an interpreter for centrally-issued commands (like, say, a botnet or Seti@Home).

While most computer viruses are parasitic, The DAO could be seen as symbiotic: in return for the resources it uses, it provides the services described above. It could be described as social engineering, like that of the ILOVEYOU virus, although it's not a trick (as far as we know).

In the case of The DAO in particular, the first description probably makes the most sense. However, I'd say Ethereum applications in general are better described by the latter. For example, a gambling application like etheroll could persist completely independently on the network for as long as people are willing to gamble with it, spending part of its commission on resources ("gas").

</comment></comment><comment><USER24> > While The DAO is a group of people authorized to act as a single economic > entity, no governmental body recognizes it as such.

They're really not legally incorporated anywhere?

Foregoing the limitation of liability that goes along with a corporation seems awfully legally risky -- any of the individual members can be sued, likely succesfully, for something done by the aggregate, with possible damages exceeding their 'investment'.

I'd think you could legally incorporate the thing how they wanted it with few problems, have bylaws saying decisions will be made with blockchain votes or whatever.

I guess the automated "splitting" the corp would be a problem.

Still, I don't think I'd want to be involved in such a thing without legal corporate limited liability protections.

<comment><USER25> Right, and there are people that do want to be involved.

They want to be part of the case law incongruences that will arise to solve disputes. They want to bring this to light so that the legacy system is presented with a better or more efficient way.

Anyway, Slock.it a germany company is managing this asset, their liability is limited.

<comment><USER24> If they think they can somehow get limited liability protections in the U.S. without a legal incorporation, I think nearly any lawyer will tell them they won't have much of a case. No judge is going to decide that. You don't get limited liability protections just by acting like a corporation, you need to actually incorporate. It's pretty straightforward law with regard to that much. (I am not a lawyer).

<comment><USER25> The point is that they don't care about the US, or France, or Hong Kong, or Zimbabwe.

Also, the individual owners of DAO are not known and are entirely bearer assets. You and I could Shapeshift some bitcoin to Ether right now, exchange for DAO tokens, vote on proposals for the DAO that eventually cause a gigantic oil disaster and whatever unlimited liability a court finds for shareholders will stall forever because they can neither find the shareholder or freeze the assets on the DAO.

</comment></comment></comment></comment><comment><USER14> This actually does a much better job explaining the project than the website does. I'm glad I have something to show friends/interested parties that is understandable!

</comment><comment><USER12> What a bunch of snake oil.

If you invested or are thinking of investing ask yourself a few simple questions. Who are the Shareholders/Directors/Officers of this corporation? Do you know what state it is incorporated in or going to be incorporated in?

Just a few buzz words. Decentralized? No shit, any corporation with more than one shareholder is decentralized. Smart contracts? Defined as a self enforcing contract, guess what they don't exist. Autonomous? I'd like to see how this code is independently filing annual reports and preparing taxes sending out K-1's to its shareholders autonomously, because that alone would be an enterprise solution every single corporation in the US would pay top dollar for, because DAO just singlehandedly replaced corporate compliance lawyers and CPAs with code.

Still not convinced and eager to get in on this? Then why not cut out the middle man? Create your own "DAO" as an Investment Club (Corp or LLC) the only issue is you will be capped at 100 members/voters/token holders and $25M in investment. But you will be able to tell people your created your own decentralized corporation every bit as autonomous as DAO, complete with 100 tokens people can buy to become a member/shareholder and use to vote on investment opportunities presented by the DAO or members/shareholders of the DAO.

<comment><USER14> I think there are many legitimate concerns about this project, but what you are saying address none of them. In fact your first questions mean you don't understand it.

<comment><USER12> I think as a lawyer who practices a great deal of corporate transactions, I have a much better idea than most on the legal structure and compliance issue with corporations on a state by state basis.

But instead of telling me my question shows I don't understand, please answer any of the following:

-Are the token holders shareholders?

-If shareholders do the token holders also get to vote for the board, or are their tokens/shares non-voting?

-How many members are on this board? Since it is all autonomous how do you know the DAO has the minimum amount of board members are required by law? If say DAO is a DE corp (min 3 board members) and DE amends the law, how is DAO's code going to keep up?

<comment><USER3> > I think as a lawyer who practices a great deal of corporate transaction

Well, I think we can both see these systems are an attempt to circumvent individuals like yourself (At least partially, some human legal representation will likely still be used.)

Taxi drivers similarly complained a lot about the legality of Uber.

(BTW, my wife is also a corporate lawyer.)

<comment><USER12> I'm not sure if you are trying to compare my legal knowledge to that of a Taxi driver, or suggesting my position is not based on law but an irrational fear of competition, or maybe you are implying taxi drivers were wrong about Uber so I must be about DAO.

Maybe it helps my point, maybe not, but Uber is certainly illegal in many jurisdictions. Take Miami-Dade county, there are 10,000 Uber drivers and nearly 3,000 tickets have been issued ($1,010/ticket) something like $2.9M in fines. Moreover, Uber sends out training for Miami Drivers on how to avoid getting stopped/ticketed/impounded in Miami as an unlicensed ride for hire and when Uber drivers do get ticketed/impounded Uber provides the drivers a lawyer for their case (oddly its their FL corporate lobbyist not a traffic/criminal defense lawyer). Finally, the Miami-Dade ordinance carries a potential penalty of 45 days jail.

<comment><USER3> > I'm not sure if you are trying to compare my legal knowledge to that of a > Taxi driver ...

Certainly not, I see no evidence that you don't have a strong understanding of the law, far beyond my own.

I guess what I'm saying is that Uber and the DAO both operate in a legal grey zone- And both of them likely have aspects that directly conflict with current law. However, I think it's clear that the legal system is a "living institution" and has been surprisingly welcoming of new innovative business models and technologies recently (as with Uber and things related to the DAO like Bitcoin) and is one of the reasons I still feel relatively optimistic about the future of the US economy.

What made Uber succeed, to a large degree, is that clearly a lot of societal pressure had built up over decades due to poor experiences with the taxi system- I think it's undeniable that this had an influence on the positive legal rulings around Uber, so far as those exist in many parts of the country.

Similarly, alternative governance systems like the DAO will keep appearing and I think eventually are likely to get some support from the existing legal system.

> Take Miami-Dade county...

Yikes! Glad I don't live there anymore, as my lifestyle depends significantly on access to ride sharing services.

<comment><USER10> > I guess what I'm saying is that Uber and the DAO both operate in a legal > grey zone-

What is required to be a corporation is not really a legal gray zone. The DAO doesn't operate in a legal gray zone as to that characterization, its just flat inaccurate.

Insofar as the DAO is a mechanism for constructing contracts between actual legal persons (either natural persons or corporations), it may operate in a poorly-tested area as to whether valid contracts are formed, how those contracts are interpreted and what law they are governed by, and whether and to what extent they are enforceable, true.

<comment><USER3> I hear you, but I don't think I've ever used the word "corporation" in this forum or claimed that the DAO is a corporation, or directly disputed any claim made by another comment as to whether the DAO is or isn't a corporation.

Whether or not the DAO meets the definition of a "corporation" doesn't seem like a very interesting question to me, and I think it's too early to know how/if it matters if the legal system uses the word "corporation" to refer to the DAO.

<comment><USER12> I would define DAO as blockchain based _investment club software_ [1]. The problem is, whether you called DAO a corporation or not, DAO raised $100+M on the basis of being an _autonomous corporation_ , something that can not exist under the law any more than a corporation owned by cats. If the investors are not educated enough to know they invested in a legal fiction, its safe to say they bought it hook link and sink that DAO offers more transparency, shareholder control or flexibility than existing corporate structures...and even if they could exist, there is nothing to suggest any of that is true.

If people want to pool their money in a corporate structure (LLC or partnership) and vote on various investment opportunities, that's great, but its nothing new or paradigm shifting. Corporations without shareholders/owners? Nothing new, but that does not make them autonomous.

[1] [https://en.wikipedia.org/wiki/Investment_club_software](https://en.wikipedia.org/wiki/Investment_club_software)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> It's not a question of whether or not ETH (and now the "DAO") is a scam. It is probably a scam. The question is whether or not ETH/DAO can become entrenched as <something> before it dies. As someone that got in this game early and has watched altcoins for years, that is pretty much the whole history of ETH, folks. Just do some research.

</comment><comment><USER27> There's a reason corporations developed as they did. With a large number of owners, it becomes very difficult to tell what is actually going on in a company and making consistent, sensical decisions is difficult. The result is that we developed a board of directors who are elected by the owners to oversee the performance of the top employees at that company, and a complex of system of accounting to communicate the financial position of the company directly to investors.

I don't see how this project addresses the two main problems that corporations attempt to solve: a lack of complete information about a company of reasonable size, and a coordinating a large number of people who may not want to devote a full-time job to overseeing the company.

I would be much more impressed if they described this as an open-source investment algorithm or something like. Instead, it seems as if they're trying to sell us on the benefits of a corporation to people who think "corporation" means "big, evil company."

<comment><USER3> > There's a reason corporations developed as they did.

Well, the counterargument would be "Because they didn't have computers back then and therefore couldn't develop alternative systems that are better but are impractical to implement manually."

<comment><USER27> Sure, but I don't see how this actually addresses the problems that corporations solve.

<comment><USER3> I agree that question doesn't have a good answer yet, and is why I am not participating in this experiment.

</comment></comment></comment></comment><comment><USER28> > Currently only the privileged can found and fund new companies.

What? It's about $200 in Seattle to file to register a Limited Liability Company. It's a stretch to call that 'only the privileged'.

<comment><USER3> I'm pretty convinced the vast majority of tech startups were started by individuals who relied on their family supporting them through the initial phases of their business.

<comment><USER29> pretty convinced from what data? source please? thanks!

<comment><USER3> I don't know if anyone has collected any formal data, I'm basing it on my personal experience. Certainly plenty of other people make the same observation. [http://www.sfchronicle.com/business/article/Why-do-so-few- st...](http://www.sfchronicle.com/business/article/Why-do-so-few-startup- founders-grow-up-6794214.php)

</comment></comment></comment></comment><comment><USER30> Anyone know how to legally assign a corporation over to an autonomous system?

<comment><USER31> The company Articles could require its directors to obey the direction of the autonomous system. And if it doesn't the autonomous system could direct the creation of another corporation with a mandate to sue the non compliant one.

<comment><USER32> realistic & efficient, good thought

<comment><USER31> The DAO isn't constrained to simply giving money to some individual and hoping for the best. Its owners could decide to approve proposals that structure deals in ways that mitigate risk, such as providing funds in tranches and using custodians who are contracted to return unspent money in certain conditions.

</comment></comment></comment></comment><comment><USER33> The first truly successful autonomous corporation will be a 419 scam. Even if it is not on Ethereum.

</comment><comment><USER34> The concept of a decentralized organization is cool. The implementation in DAOhub is dangerous to all participants. Both curators and contractors of DAOhub projects risk violating US securities laws if they use the platform to "crowdfund" projects. Participants, as is obvious, risk losing all their contributions, paid into the pockets of "contractors" who may possess voting control over project funds.

</comment><comment><USER35> This could be interesting. What does this mean for hostile take overs though?

<comment><USER3> I think you're asking "what happens when someone captures 51% of the voting shares?" \- This is actually the #1 problem with these types of systems, since the majority could just vote to put 100% of the funds into their own bank account.

The slockit-authored DAO in the article addresses this through two failsafes:

1\. Shareholders can vote to split the company in two at any point to extricate their funds from majority control.

2\. There is an extra layer of "curators" (kind of a misnomer) who are trusted members in the community who make sure payments aren't being funneled through an intermediary to a majority shareholder.

Whether these safeguards will work remains to be seen.

<comment><USER36> Anyone can 'split' the DAO at any point of time, which renders the 51% attack moot. A 51% attack works only when the attacker can get more than what he puts in.

Consider this obvious attack vector: Let's say today is the last crowdfunding day, and the DAO has raised $150 million so far. A wealthy attacker can immediately put another $150 million, effectively controlling 50% of the voting for the DAO, and then vote to send all the money to his own Ethereum address. This is perfectly possible, since this is all written in Ethereum contracts anyway.

To avoid this, the rest of the people can 'fork' the DAO, effectively leaving the attacker with 100% control over his share of 50%. The attacker gains nothing. The other 'fork' can now continue on.

This forking described above is also going to be used (I think) when it comes to funding new projects. I am sure some people will disagree with some proposal, and they would fork the DAO away to not invest in that proposal even though the majority agreed they would. They are free to do so.

<comment><USER3> > which renders the 51% attack moot.

Well, I'm not sure I'd use such absolute language. For one thing, people can still perform a 51% attack and try to influence decisions covertly, without triggering a split.

Also, the spectre of a 51% attack required for some major compromises to be made in the DAO design- Having a company that can arbitrarily split at any moment is likely to have a major impact on the future operations of the DAO.

<comment><USER36> You're right, I shouldn't have used an absolute language. There is also the issue of voter apathy so yes, a 51% attack might be worthy of a try for a wealthy enough adversary.

In terms of the split, if the community broadly agrees that there is an attack, then I don't see it having a long-term detriment. However, as you said, if it is more 'stealthy' then it would be harder to detect and correct.

All that being said, I think there is a theoretical safety mechanism in place. Whether that will work in real life or not, we'll wait and see. I am sure some good lessons will come out of this in either case and the next generation of applications can improve upon some shortcomings.

</comment></comment></comment></comment></comment><comment><USER37> I think the idea is great, but only if the ETH can never be withdrawn without the board's consent, much like funding a a corporation where you'd need to be paid a distribution or something, etc. - you don't just withdraw your money after the next VC enters the scene and drives the price up. If the ETH can be withdrawn at any time, then this is no different than a publicly traded stock... which is currently undergoing a pump-and...

As such, I've flagged the post, to avoid contributing to what's turning out to be a free(?) viral marketing campaign.

Am I wrong about the "withdraw" part?

</comment><comment><USER38> So, a sort of Distributed Digital Democratic Dragon's Den then.

I suspect the contestants will make more money than the Distibuted-Dragons.

<comment><USER39> It's a shockingly bad idea. I support the right of people to invest in whatever they like, but VC has notoriously poor returns, decentralized VC run by a committee that can only invest in other decentralized technologies seems like a really, really bad idea. DAOs like Augur are actually interesting, even if you think they'll never work. This just seems crazy.

<comment><USER38> As long as nobody's putting in more than they intend to lose, it's at least a very pretty way to fund a bunch of distributed app code being written I guess.

And if they all take what's left of their money out again, the code will still exist. Presumably has to be mostly free-software if it's gonna run distributed anyway.

</comment></comment></comment><comment><USER40> At $120 million, it's the largest security bug bounty in history! Someone will 'claim' it soon...

</comment><comment><USER41> So how can I buy into this ponzi? I'd throw $50 at it and see what happens. How do I do that?

<comment><USER42> Unless you have some ETH or BTC laying around, it's a bit of a hassle, but if you go to [https://daohub.org/](https://daohub.org/) and click "Get DAO Tokens" and then "Start Wizard" it will walk you through the process.

</comment></comment><comment><USER43> Self driving company

</comment><comment><USER44> bitshares is an autonomous corporation that was created last year, developed using its own coin. I don't see any advantages that "The DAO" has over it.

[https://steemit.com/crypto-news/@dan/is-the-dao-going-to- be-...](https://steemit.com/crypto-news/@dan/is-the-dao-going-to-be-doa)

</comment><comment><USER45> If you gave ai seed funding and ago on the stock market.. Would that still be a conpany when you leave?

</comment><comment><USER46> > imagine that being able to accept payments from renters and unlock > accordingly was a function of a lock itself

My word.

</comment><comment><USER47> Another speculators' playground!

</comment><comment><USER48> Can someone point me to an sample smart contract?

</comment><comment><USER49> so, it's like twitch but for business?

</comment><comment><USER50> Time to go reread Daemon!

</comment><comment><USER51> What's to stop someone from putting in $108M worth of etherium coins and then voting to give all the money to that same person?

<comment><USER3> see the information above regarding "splits"</comment></comment>


Show HN: Professional personal assistants for $2.99/hr - <AUTHOR> http://www.tryaccelerate.com <comment><USER2> I'm wondering what a personal assistant who lives thousands of miles from where I live can do for me.

\- They can't pick up items from local stores. And it's harder to explain to someone what I want to order online than ordering it myself, which I can do for free.

\- They can't pay my bills (no way I'm going to give someone I never met access to my bank account).

\- They can't answer my e-mail, since they don't know how to do my job.

So what exactly are the benefits of having a personal assistant? The site makes no suggestions as to what kind of tasks they can do for me to make my life easier.

And sorry, I don't want to "Subscribe now for more information"! If there's anything else I need to know, I want to read about it before I subscribe.

<comment><AUTHOR> Hi greenyoda! Thanks for the thoughtful questions - I will do my best to answer below. However the punchline answer to your main question of the benefits are as follows.

The initial benefits of having a personal assistant is the ability to offload low ROI errands that you MUST do so you can focus your full energy on things you WANT to do. Although it is very simple to look through your email, schedule a meeting, pay your bills, do your taxes, this takes valuable attention and brain power from your passions or top priorities for example, spending time with your family, or coming up with a new idea for a side gig. Imagine trying to work on a new project or starting to work out but having a bunch of small roadblocks before it -- human will power is limited and drained. Thus, if you have an affordable personal assistant, you can enhance your life by minimizing the roadblocks to focus on your highest priorities. It takes 21 minutes to recover your attention from a distraction. Our goal is to reduce these distractions so you can have large blocks of time to focus.

From your questions, it seems like that main issue for you may be that you believe you can do the job faster than the assistant. While this may be true at first, investing some time to train the assistant will automate that part of your life so you never have to focus on it again. Some answers below for your bullets:

-True they cannot pick up items, and it may be harder to explain to someone what you want to order at FIRST. However, the beauty of having a dedicated assistant is someone that gradually understands your preferences and will be able to order similar things in the past or recommend things to you in the future. Think Donna from Suits - she is able to give Harvey great suggestions on presents, restaurants etc. while Harvey focuses on what he does best, being a lawyer because she knows him well.

-Totally understand the security issues. What we have done is either 1. given them an employee credit card (all charges need to be quickly approved by you) or 2. given them access to a password manager that you have full access to (you enter in the pw and the assistant can only access sites that you grant access to without ever knowing your passwords)

-While it is true they do not know how to do your job, that's where training comes in! As our assistants are dedicated and expect to work many years with you, it pays to put in a bit of investment to train them on how to work with you. After the initial investment of explaining, your assistant will pay off multiple folds as you will have automated a section of your job. Think of it as taking a bit of time building a system to automate your life.

Some tasks that clients have used our assistants are as follows: -Scheduling with clients -Managing their inbox and summarizing important emails for it takes 1 min to check inbox instead of 30 minutes -Populating spreadsheets of information for real estate investments -Researching best way to utilize Chase and AMEX points for first class tickets to Japan and back -Booking / scheduling travel through Europe -Managing a client's eccommerce instagram to grow followers -Quickbooks / tax document preparation for tax season -Answering emails on behalf of client -Answering phones and telemarketing for leads -Creating templates of preferences (i.e. airline preference, seat preference, budget, logins) -Calling landlord to get back deposit -Screening and managing tenants -Managing other assistants

And many more!

Let me know if answers your questions :)

</comment></comment><comment><USER3> Congrats on shipping! I have a few questions. How trustworthy is this? I.e. Who has the legal liability? Can I transfer power of attorney to the "assistant"? If things fall through, is there insurance?

</comment><comment><AUTHOR> Hi HN fam!

I recently partnered with other colleagues in finance / consulting / start ups to launch Accelerate - a service that allows you to find vetted assistants starting at $2.99 / hr.

Our thesis is that personal assistants should be available to everyone and that pricing should not be a barrier. Additionally, we are helping the community by fighting against the the job crisis in Philippines (read about it in our FAQ page!).

Let us know what you think!

The Accelerate Team

<comment><USER4> Exactly how much of that $2.99USD per hour goes to the assistants to help their economic conditions as stated in the FAQ? How much do these assistants actually get paid?

<comment><AUTHOR> Our assistants get paid based on how long they've been with the service - after training period, they'd get paid anywhere from $2.50/hr - $5.00/hr (high end for some that work for our platform). Minimum wage in Philippines is ~$1.16 / hr which is typical for a lower paying job such as a personal assistant.

The average wage in Philippines is ~$2.50/hr. Keep in mind, this is including higher paying jobs such as engineers, doctors as well as higher wage areas (Manila) etc so we are paying VERY well, especially to the assistants in lower wage areas. We've heard that some government workers in the Philippines get paid less than $2 / hr, causing them to spend more than half of their wages on transportation.

Cost of living in Philippines ranges from ~$490 - $1060/month if you have to travel to work (main pain point we've heard from our assistants as many commutes are >4 hours a day) as transport costs ~$150/month due to inflation / gas prices. However, if they are able to work with us at home, their costs drastically are reduced (transport costs and decreased food costs) to ~$300 - $500.

Thanks and let us know if helpful :)

<comment><USER4> Sorry for the late reply, but there's no way your company is paying $2.50 - $5.00 per hour while only charging $2.99 per hour. I understand the difference in the cost of living, but that is obvious bullshit.</comment></comment></comment></comment>


Remind HN: New York City HN Meetup today at 6pm (free beers) - <AUTHOR>

I'm in New York City for the week - just flew over from Switzerland and am organizing a small meetup today for all hackers/entrepreneurs. I posted last week and a lot of you said you were coming, so this is just a reminder!
Starting at 6pm.
NewsCred will buy the first few rounds of beer!
Looking forward to meeting all NYC HN members and other interesting startuppers.
Location:
Lunasa Bar 126 First Avenue (Bet 7th & St Marks) New York, NY 10009 <comment><USER2> I would normally be all over this, but I have a prior engagement. I'll probably be at Lunasa until 6:15 but have to jet then.

<comment><AUTHOR> I'll be there a bit early, so see you there...

</comment></comment><comment><USER3> How should we recognize each other? Do we have a table reserved or anything?

<comment><AUTHOR> I'm sure we can identify other hackers/entrepreneurs easily, no ;-)

For the avoidance of doubt, I'll be wearing a black NewsCred t-shirt.

Also, we do a have a table reserved, but if tons of people show up, there will be some standing and drinking!

</comment></comment><comment><USER4> Well then, see you guys guys in 45min!

</comment><comment><USER5> How about a Los Angeles meet?

</comment><comment><USER4> How many people attending?

<comment><AUTHOR> Not sure - I think there may be 15-20 people? Lots of people said yes, but let's see how many show up. Free beers usually helps!

</comment></comment><comment><USER6> How about a Boston Meet ??</comment>


Lessons I've learned from running a startup - <AUTHOR> http://blog.ryanparman.com/2011/04/07/lessons-ive-learned-from-running-a-startup/

<comment><AUTHOR> I wanted to keep the original title. I worked with the startup but I did not write the article nor was I one of the founders.</comment>


Brenden Eich on creating JavaScript and what he'd do differently - <AUTHOR> https://thenewstack.io/brendan-eich-on-creating-javascript-in-10-days-and-what-hed-do-differently-today/ <comment><USER2> What would he do differently in respect to his decision to provide financial support to the effort to deny GLBTQ people the right for happiness? Just wondering. Did he ever express any thoughts or regrets about that?</comment>


Jellyfish Use Novel Search Strategy - <AUTHOR> http://www.hpcwire.com/2014/08/14/jellyfish-use-novel-search-strategy/

<comment><USER2> Worth noting that the search algorithm, simulated annealing, is a metaheuristic algorithm - meaning, it's modelled after an existing natural phenomenon (in this case, metallurgical annealing). Other metaheuristic algorithms familiar to HN readers include genetic algorithms and ant colony optimization algorithms. Given the nature of these algorithms it isn't shocking to see them in the wild, but it is interesting.

It might even be more accurate to say the model of metallurgical annealing used in simulated annealing has parallels with a model of jellyfish search behaviour, rather than jellyfish "using" simulated annealing to find food.

</comment><comment><USER3> The nervous system of jellyfish, the oldest multi-organ animals (0.5 billion years) [1], is primitive. The neurons are arranged into a nerve net with hints of limited central actions. It doesn't surprise me that something akin to annealing is taking place since that form of search is very simple and could be imagined to take place with very simple distributed actions, having just one global, time-varying parameter T, known as the temperature [2].

Wouldn't almost any other effective search technique be more complex to implement in a very simple nerve net? If jellyfish were found to utilize say genetic optimization based search then I would really be surprised.

For more information (than you probably want to know) about the nervous system of jellyfish see [3].

[1] [http://societyofbiologyblog.org/the-peculiarities-of-the- jel...](http://societyofbiologyblog.org/the-peculiarities-of-the-jellyfish- nervous-system/)

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

[3] [http://jeb.biologists.org/content/214/8/1215.full](http://jeb.biologists.org/content/214/8/1215.full)

</comment><comment><USER4> I'm not getting what this "novel strategy" is. The jellyfish ride currents back and forth in search of food... so? Does anyone have an article with actual info about the strategy?

<comment><USER5> I thought exactly the same thing... I was expecting to read something like "rides the currents back to signal to other jellyfish that this is a bad current", but right now I can't really see the algorithm here.

</comment></comment><comment><USER6> How to think backwards about nature and science. Jellyfish do not "use" formal mathematical models. They do stuff. Our mathematical models may be good approximations of what they do.</comment>


Black Friday Deals - <AUTHOR> There is lot of money to be spent on gadgets today. Why don't we make a collaborative post here and vote the best deals up?
Proposed format: Item - $PRICE (%saving) http://link
If you think something is a good deal, upvote. Happy shopping! <comment><AUTHOR> All Ebooks & Videos at O'Reilly - (50% off) [http://shop.oreilly.com/category/deals/cyber- monday.do](http://shop.oreilly.com/category/deals/cyber-monday.do)

Thats a cyber Monday deal.

<comment><USER2> OK. Book suggestions? I'm considering "Data Science from Scratch: First Principles with Python", "Fluent Python", "Naked Statistics" and "Machine Learning: The Art and Science of Algorithms that Make Sense of Data".

I want to find two great books which can brush up and improve my insights in areas such as Machine Learning, statistics, practical linear algebra, computer vision and DSP.

Any suggestions on how to choose among the book list above?

</comment></comment><comment><AUTHOR> 128GB USB3 SanDisk Flash Drive - $27.99 (65%) [http://www.newegg.com/Product/Product.aspx?sdtid=0&SID=78a31...](http://www.newegg.com/Product/Product.aspx?sdtid=0&SID=78a3160894e011e5a37ffec39d4dd1010000&AID=10440897&PID=1225267&nm_mc=AFC-C8Junction&cm_mmc=AFC-C8Junction- _-cables-_-na-_-na&Item=20-173-098&cm_sp=)

<comment><AUTHOR> Same on Amazon [http://www.amazon.com/SanDisk-Ultra-128GB-Flash- SDCZ43-128G-...](http://www.amazon.com/SanDisk-Ultra-128GB-Flash- SDCZ43-128G-G46/dp/B00YFI1EBC/ref=sr_1_2?s=electronics&ie=UTF8&qid=1448615835&sr=1-2)

</comment></comment><comment><AUTHOR> Pencil by 53 - $29.99 (40%) [http://www.amazon.com/Pencil-FiftyThree-Digital- Stylus-iPhon...](http://www.amazon.com/Pencil-FiftyThree-Digital-Stylus- iPhone/dp/B00JP12170/ref=pd_rhf_se_s_cp_1?ie=UTF8&dpID=311KNqnOhmL&dpSrc=sims&preST=_SL500_SR135%2C135_&refRID=1AJBP0B74N2EC6ATP2DV)

</comment><comment><AUTHOR> LYTRO ILLUM 40 Light Field Camera - $399.99 (69%) [http://www.amazon.com/LYTRO-ILLUM-Megaray-Constant- Touchscre...](http://www.amazon.com/LYTRO-ILLUM-Megaray-Constant- Touchscreen/dp/B00KAX40LM)

</comment><comment><USER3> HN articles are Buy One, Get One Free until 23:59:59 GMT.

</comment><comment><USER4> Amazon Fire (7-inch, 5th generation) - $34.99 (saving 30%)

[https://www.amazon.com/dp/B00TSUGXKE](https://www.amazon.com/dp/B00TSUGXKE)

Lock screen ads can be disabled and Google Play can be installed without root. There is a working unofficial Cyanogen rom, and Bluetooth work is in progress.

Might be using one with an iCade as it has similar specs to a Raspberry Pi.

</comment><comment><USER5> Freelancing Deal: I'll do your Android project at USD 3500 a month.

I had a project pipelined, which suddenly got cancelled (postponed without a new date) and I have a void to fill. I had put an Ad in the July Seeking Freelancer - for an Android project offer. I accepted a pretty large and complicated Android project, which required me to clone an App and has given me pretty good experience on Android.

This would be my second Android project; but I have used Networking, Sqlite, Broadcast Receivers, Services, used the Drawing api to create a custom widget, and MP Android Charts in the last one.

I can also work in Ruby on Rails, JS/HTML/CSS and Angular (although people should be phasing that out by now).

Prior to this I've developed large apps in C++ and ASP.Net. I tried to do a startup Creating survey programming tool and a Cross Tab engine in C++/yacc so I have pretty good programming experience overall.

Email: firstname.lastname@example.com</comment>


Memory Tagging and how it improves C/C++ memory safety - <AUTHOR> https://arxiv.org/abs/1802.09517 <comment><USER2> It seems pretty weird for me that a paper submitted in 2018 doesn't mention Intel's MPX ([https://en.wikipedia.org/wiki/Intel_MPX](https://en.wikipedia.org/wiki/Intel_MPX)), which is pretty much tackling exactly the same problem, in hardware (and requiring software cooperation).

I'm not taking (yet) a position on the relative merits of the bounds-register based MPX approach versus the tagged pointer one presented here, but the comparison should at least be made if at least only to explain why MT would be successful in contrast (MPX has hardly taken the world by storm).

Also, since they appear to be positioning this as something that could be fast enough to run in production (with hardware assist), they should at least take a shot at analyzing the attack surface presented by the probabilistic protection: a figure like 99.6% chance of catching a rogue access makes sense for testing scenarios, but if the adversary is an attacker, can they manipulate those odds to their advantage? The exact tag allocation mechanism becomes pretty important in this case.

</comment><comment><USER3> A long time ago I found some memory problems in a C++ codebase we had inherited and that crashes from time. In Windows you can protect memory blocks with a function call so I overloaded new and malloc and added some protected blocks before and after the actual memory. Then we ran the code for a lot and it would fault right at the point of the memory overwrite instead of some place later. It made the code very slow but we found problems that were incredibly hard to find in any other way.

<comment><USER4> These days the gcc and clang memory/address sanitizers can do this quite nicely, and they tend to have low overhead as well (in my limited experience so far).

<comment><USER5> When running a test suite at work with ASan + UBsan turned on, the test goes from taking ~30 seconds to ~20 minutes. So there's certainly some pathological cases.

<comment><USER6> Try it with just ASan. Some of the UBsan checks can be quite expensive.

Also, check how much free ram your computer has when running with ASan. It may be running out of RAM, and e.g. spending a lot of time looking for other memory to free, or even swapping.

</comment></comment></comment></comment><comment><USER7> Another great resource on hardware extensions for security, including efficient tagged memory, is the Cheri work at Cambridge:

[http://www.cl.cam.ac.uk/research/security/ctsrd/cheri/](http://www.cl.cam.ac.uk/research/security/ctsrd/cheri/)

</comment><comment> dis-sys I saw quite a lot RISC-V discussions lately, I was first confused and asked myself "why people are so interested in such stuff not coming out ranked top X in performance". Now I get it - it is close to impossible to evaluate new ideas/proposals like Memory Tagging on those CPUs with closed design and tight patent "protections".

</comment><comment><USER8> This somewhat reminds me of the Microsoft debugger convention of initializing memory with various tags so that when you crash with a pointer bug, you can tell what kind of memory was trod upon. They even made the hex codes semi- mnemonic so it was easier to remember, e.g., 0xCD=clean, 0xDD=dead, 0xFD=fence, etc.

[https://stackoverflow.com/a/370362/1424242](https://stackoverflow.com/a/370362/1424242)

Interesting note that with this method in the paper, "Temporal and spatial bugs are detected probabilistically" \- and it depends on how many tag bits you choose, which trades addressable space for more tags (higher probability of catching errors.)

> Memory safety in C and C++ remains largely unresolved.

I read the paper's description, and still don't quite understand exactly what they mean by "memory safety". This is not referring to safer programming practices like using the STL with iterators, correct?

<comment><USER9> > This somewhat reminds me of the Microsoft debugger convention of > initializing memory with various tags so that when you crash with a pointer > bug, you can tell what kind of memory was trod upon. They even made the hex > codes semi-mnemonic so it was easier to remember, e.g., 0xCD=clean, > 0xDD=dead, 0xFD=fence, etc.

BSD's malloc.conf framework does something similar. Though they've managed to be incompatible with one another.

On FreeBSD, activating junking (default off) will fill allocated memory with 0xa5 and deallocated memory with 0x5a.

On OpenBSD, allocated memory uses 0xdb, deallocated memory uses 0xdf, junking is default-enabled for "small chunks" & the start of freed pages (which are also checked for write-after-free on a small delay).

<comment><USER10> .. and on glibc (the usual libc on Linux), the MALLOC_PERTURB_ environment variable can be used for similar stuff ([http://man7.org/linux/man- pages/man3/mallopt.3.html](http://man7.org/linux/man- pages/man3/mallopt.3.html) ).

</comment></comment></comment><comment><USER11> Here's related work for those interested in the subject. Two old ones:

Burroughs Architecture [https://www.smecc.org/The%20Architecture%20%20of%20the%20Bur...](https://www.smecc.org/The%20Architecture%20%20of%20the%20Burroughs%20B-5000.htm)

Capability-based Computer Systems (book) [https://homes.cs.washington.edu/~levy/capabook/](https://homes.cs.washington.edu/~levy/capabook/)

Some new ones using a range of techniques:

SAFE Architecture [http://www.crash-safe.org/papers.html](http://www.crash- safe.org/papers.html)

CHERI Architecture [http://www.cl.cam.ac.uk/research/security/ctsrd/cheri/](http://www.cl.cam.ac.uk/research/security/ctsrd/cheri/)

Note: CHERI runs a modified version of FreeBSD on a FPGA board. Quite practical if it can handle that!

Watchdog Architecture [https://www.cs.rutgers.edu/~santosh.nagarakatte/softbound/](https://www.cs.rutgers.edu/~santosh.nagarakatte/softbound/)

Hardware-assisted Secure Allocator [http://jin.ece.ufl.edu/papers/HASP17.pdf](http://jin.ece.ufl.edu/papers/HASP17.pdf)

</comment><comment><USER12> Memory tagging in hardware? Yay, they're implementing 1970s Lisp Machines again!

<comment><USER13> Would be a godsend for GC, much better than malloc/free safety checks. There are small boards with HW assisted GC support, 2bits per ptr, but no big ones as in a lispm.

</comment></comment><comment><USER14> Does anyone know how this relates to what the Burroughs B5500 and B6500 operated?

<comment><USER15> This is very similar to the Burroughs approach that later influenced Multics and the lispm architectures (and is available in some RISC-V versions). Notably Intel used this in the unfortunate iapx 432 and cleverly built some of this approach in their segmented memory model).

However by the late 1970s it had been figured out that you could do some of these tricks without dedicated hardware support (mask-boxing of integers, for example on processors that ignored unaligned access you could use the least significant bits for tagging; on ones with address spaces less than the word length you could often do the same with the upper bits). These bits could be used by GC and/or for fast type systems, and by the mid 1980s had pretty much wiped out the advantage of dedicated hardware for Lisp implementations (the lispms started out much faster at tag manipulation but the weight of work on the general purpose machines caused the latter to get better (and cheaper) much faster).

The bigger advantage of hardware support IMHO is the security opportunity for capability management.

</comment></comment><comment><USER16> Am I correct in thinking that this is a similar idea to page faults but per allocation rather than per process?

<comment><USER17> After skimming the paper, I think it's actually closer to segmentation. They just split the address space into X number of segments. The allocator then ensures every allocation lies completely within one of these segments and attaches that segment's ID to the returned pointer. Fundamentally, paging and segmentation are fairly similar though, so you're not wrong, there is just no concept of a 'page-table' here.

That said, I feel like the paper is missing a few details on the implementation. They give the example of a segment size of 64 bytes, and a tag size of 4 bits. Obviously, that doesn't even cover a full 4K page of data. So I presume the segments must repeat, meaning after segment 15 there is another segment 0. This seems to fit into their probability description (An OOB access _might_ hit the next segment with the same ID, but it's unlikely).

The approach still seems a bit limited though. I would assume objects larger then 64 bytes would have to be untagged, since normally you would access them via offsetting from the same base pointer, and that base pointer would always have the same tag. But also, a big problem is that most OOB accesses are likely to hit the region of memory just past the allocated region. So with larger segments you are likely to miss many of these OOB accesses since the tag is still correct.

All that said, I don't think this idea is mentioned in the paper, but you could also vary the size of every set of tags in the address space. So have, say, 20 sets of tags for 64-byte regions, then after that 20 sets of tags for 1024-byte regions, and etc. So there is a mix of small and large regions. There's no guarantee you would have the right amount of different-sized regions, but you can always fall-back to using untagged if you need so it is not a disaster if the numbers are a little off (Besides, of course, the fact that untagged memory loses the security advantages of the tagged memory.

<comment><USER2> > After skimming the paper, I think it's actually closer to segmentation. They > just split the address space into X number of segments. The allocator then > ensures every allocation lies completely within one of these segments and > attaches that segment's ID to the returned pointer.

It's sort of the other way around. Replacing "tags" with "colors" since somehow it seems a bit more intuitive, the allocator itself just "colors" different allocations with a different color, rather than splitting up the address space beforehand. The returned pointers are also colored and a fault occurs if any pointer is used to access memory of a different color.

> Obviously, that doesn't even cover a full 4K page of data. So I presume the > segments must repeat.

Definitely - every color will be used many times, so they only probabilistically catch any fault, based on mostly the total number of colors (as long as the colors were randomized from run to run it seems like any fault would be quickly caught with a high probability). They mention in in the paper improvements such as ensuring that adjacent regions always have different colors so that linear overruns are caught with 100% probability.

> I would assume objects larger then 64 bytes would have to be untagged, since > normally you would access them via offsetting from the same base pointer, > and that base pointer would always have the same tag.

Not at all. The 64-bytes is only the _granularity_ of the colors (actually they suggest 16 bytes is a better option): but an arbitrarily large region can have the same color.

Most of the rest of your post follows I think from that misunderstanding: there is no need to change the color every 16 or 64 bytes (they call this quantity TG) - you color the whole region with the same color. The TG value is just the granularity at which it can change, so it's a tradeoff between overhead for small allocations (favoring smaller TG) and total tag storage cost (favoring larger TG).

<comment><USER17> Reading it again, I guess I missed the "shadow memory" concept they talked about, but they only mention it 5 times and none of those mentions are in the actually explanation of how they do the memory tagging. They do mention it one more time in the AArch64 implementation though, so it does look like you're correct on this. I don't understand why they didn't really make this detail much more clear though, since like you've pointed out it changes a lot about how things work.

Now, if that is the case it complicates the setup a fair amount, since now you do need a global 'page-table' like structure holding this information that the allocator configures. And from reading the paper, don't they intended for the kernel to do this checking as well on userspace pointers, indicating the kernel also needs access to this information? It's doable, and better overall, but more complicated.

<comment><USER2> Yes, the memory->tag mapping has to be stored somewhere, but that's true even for a segmented system, right? You need some place to store the segment offset and length: either some dedicated registers if you only allow a few of them, or some in-memory tables for more general schemes, right?

Yeah they don't really get into how the shadow memory is managed. If you only had limited or no hardware support, it seems like it would be tricky, especially when you are arbitrarily mapping various chunks of the address space. The ideal for performance is that there is some straightforward relationship between a pointed-to region and the associated tag bits, e.g., just shift the pointer down by lg(TG) bits and then index into a single contiguous region which stores the tag bits, pointed to by some global.

That avoids the need to have any kind of page-table like structure, but it would waste a lot of virtual address space if the range of the pointers was very large or very sparse.

If you had hardware support though, maybe this problem goes away: the hardware could store the bits in "holes" right alongside the actual memory, as how ECC works (they suggest SPARC is doing this), or they could include the information in the TLB alongside the regular mappings (I guess this would need kernel support too).

I didn't see much about kernel-side checks in the paper? Maybe I missed it. The kernel already checks that user pointers are valid in the context of the process that provided them, but of course that is a very coarse check (can the user process as a whole read/write here?), and could still violate semantic memory safety of the process depending on what was passed.

<comment><USER17> > Yes, the memory->tag mapping has to be stored somewhere, but that's true > even for a segmented system, right? You need some place to store the segment > offset and length: either some dedicated registers if you only allow a few > of them, or some in-memory tables for more general schemes, right?

Not if your segments/tags are static and defined beforehand, which is what I thought that were going for (Since that doesn't require any extra memory). But obviously that approach is pretty limited, which was my thinking.

> Yeah they don't really get into how the shadow memory is managed. If you > only had limited or no hardware support, it seems like it would be tricky, > especially when you are arbitrarily mapping various chunks of the address > space. The ideal for performance is that there is some straightforward > relationship between a pointed-to region and the associated tag bits, e.g., > just shift the pointer down by lg(TG) bits and then index into a single > contiguous region which stores the tag bits, pointed to by some global.

This is exactly what I'm thinking as well. If the platform has paging support, in theory this is cheaper then it seems because (besides using up tons of virtual memory) the array can be sparsely allocated, with only the regions actually in used taking up physical memory. But 64bytes is still really coarse, it might be necessary to use a multi-level approach to make the size a bit saner. But since it is just virtual memory, depending on the architecture it may not matter.

Storing it in the page table mappings themselves is an interesting idea. Of course, some architectures have more 'free' space in there then others. And at that point you're talking about likely 4K granularity, not 64 bytes. Still better then nothing of course, but it would definitely decrease the effectiveness for smaller objects.

> I didn't see much about kernel-side checks in the paper? Maybe I missed it. > The kernel already checks that user pointers are valid in the context of the > process that provided them, but of course that is a very coarse check (can > the user process as a whole read/write here?), and could still violate > semantic memory safety of the process depending on what was passed.

Someone else asked about this as well, it seems I was led astray. The paper has this line about ASAN:

        Does not currently detect when the kernel accesses invalid user-space memory

From reading that, I thought they were then going to use their memory tagging system to do such checking (And in theory you could do it as long as the kernel knew about the mappings). But they never actually bring this up again in the paper.

<comment><USER2> > This is exactly what I'm thinking as well. If the platform has paging > support, in theory this is cheaper then it seems because (besides using up > tons of virtual memory) the array can be sparsely allocated, with only the > regions actually in used taking up physical memory.

Yes exactly. The worse case still seems like a doubling of (actual) memory use though: imagine a very sparsely accessed region of memory: even today each access would bring in a whole 4K page (on x86, for example), but now you'd bring in a whole 4K shadow page as well (yes, the access has to be really sparse to get this 1:1 ratio).

> And at that point you're talking about likely 4K granularity, not 64 bytes. > Still better then nothing of course, but it would definitely decrease the > effectiveness for smaller objects.

I think a 4K granularity is next to useless - you already get that from the hardware/OS paging support. If you want to detect problems on a 4K level, you only need to change your allocator to mmap in a page at a time, which you can even already do on some with tunable ones.

<comment><USER17> > Yes exactly. The worse case still seems like a doubling of (actual) memory > use though: imagine a very sparsely accessed region of memory: even today > each access would bring in a whole 4K page (on x86, for example), but now > you'd bring in a whole 4K shadow page as well (yes, the access has to be > really sparse to get this 1:1 ratio).

In theory you should be partially saved by the allocator, just because it is going to try and place as much stuff as it can into every page it allocates, as well as allocate multiple pages at once (So they all end-up in a row). An allocator that was aware of the 'shadow' pages should be able to allocate chunks of pages at once that correspond to a single 'shadow' page, ensuring you avoid creating tons of them. The higher alignment requirements mean more wasted memory though, meaning you need to allocate more pages and need then need more 'shadow' pages overall.

The paper suggests anywhere between 14% and 18% RAM overhead (discounting Android apps, which had a range from 6% to 42%) for 64 byte granularity, and that it actually goes down if you choose a smaller granularity like 16, due to the lower alignment requirement.

And of course, you're also talking about doubling memory accesses as well, assuming this is done in software. Every access has to first check the 'shadow' page. Unfortunately both of their implementations are at least partially hardware assisted, so I'm not sure you can use those numbers to just a pure CPU implementation, but they suggest around a 2x slowdown.

> I think a 4K granularity is next to useless - you already get that from the > hardware/OS paging support. If you want to detect problems on a 4K level, > you only need to change your allocator to mmap in a page at a time, which > you can even already do on some with tunable ones.

I would agree. The tagging system can prevent a higher percentage of OOB accesses at the page level in theory, but considering the size of the address- space vs the number of allocations (assuming a 64-bit/48-bit address space) I think the likelihood of an OOB access actually hitting another separate allocation (assuming a mostly random placement) is already pretty low, so the tagging system would make it lower (You now have to hit a random allocation with the correct tag) but not significantly lower then before, and at the cost of performance.</comment></comment></comment></comment></comment></comment></comment></comment>


Awesome Services We Pay for at HelloFax - <AUTHOR> http://blog.hellofax.com/uncategorized/services-we-pay-for-at-hellofax/

<comment><USER2> Great post and idea.

We're paying for:

\- MongoHQ

\- MailChimp

\- New Relic

\- AWS (although not using most of their services)

\- Github

\- Dropbox

\- Skype

Worth a mention although less-involving services:

\- DNSPark: <http://dnspark.net/>

\- Dynadot: <http://dynadot.com/>

And of course our web host:

<http://hivelocity.net/>

<comment><AUTHOR> Thanks benologist. With some of these services, we save so much time, it feels like we hired someone.

<comment><USER3> Agreed, nice post. I ask myself this question (i.e. what I'd actually pay for) when trying to gauge if customers will pay for something I'm building. At first I often think "Yeah, I'd pay for this", but then reality sets in. Even making this list now I'm surprised how few services I buy.

      * Linode
      * iDrive
      * Skype
      * Laundry

Yes, laundry as in _washing clothes_. I'm currently in SouthEast Asia and it costs US$1 to have _all_ of my clothes laundered, line-dried and ironed. If this were survey.io, laundry is the services I'd most miss if it disappeared.

</comment></comment></comment><comment><USER4> i really like these "what i pay for" lists that are starting... we have a list here too: <http://ladyada.net/library/software/index.html>

(left column) of all the things we use for our open-source hardware business.

we'd love to hear suggestions for more too..

<comment><USER5> Thanks just saved us some money with the Paypal merchant application suggestion. I just got off the phone with Paypal and it ends up that if you've applied to Paypal Pro then they auto-enroll you otherwise you need to apply separately.

<comment><USER4> rad, glad this worked out!

</comment></comment></comment><comment><USER6> Google Talk uses Jabber which has support for group chats. Hosting your own jabber server isn't a huge deal. You could use IRC for group chats and have multiple rooms there as well. Again, it's not a huge deal to setup your own IRC server.

It'd be nice if there were some free/open-source software services listed there, but oh well.

<comment><USER7> We _tried_ to run our own IRC server. It's not exactly that easy. For example, you also need to deal with authentication, as well as set up an IRC proxy just to get backlogs on reconnect. Never mind the fact that IRC doesn't have important features like inline images or nice iPhone apps with notifications, etc.

We tried IRC, GTalk/Jabber, FlowDock and Campfire, but all of them were kinda "meh". HipChat is actually totally rad. Try it out: <http://hipchat.com/r/2zqso>

<comment><USER8> I was going to call you out for recommending HipChat and then posting a referral link, but then I saw that the referral merely gets you a custom icon that they draw for you. Pretty interesting incentive.

<comment><USER7> I genuinely like the product. I was not simply recommending it in order to get a custom icon. But I kinda really do want a custom icon :-)

</comment></comment></comment></comment><comment><USER9> Our startup uses several of the products on the list, but there is a one big name missing: Hellofax

We use Hellofax several times a week and it's _great_! It makes signing and faxing documents extremely easy, instead of the mess it used to be.

</comment><comment><AUTHOR> If you think of companies to add, let me know. I can write another post later with a list from Hacker News.

</comment><comment><USER10> Can other HN users add a list of the services they pay for?

For me: -Getcliky -Url2png

<comment><USER11> What do you use Url2png for?

<comment><USER10> Webpage snapshot for an email archive.

</comment></comment></comment><comment><USER12> If anybody wants a free AwesomenessReminders subscription for their company, to keep them cheery, peppy, and focused on positive (leadership-driven) thoughts, then let me know and I'll hook you up!</comment>


/dev/travel – free and open API for booking flights and hotels - <AUTHOR> http://devtravel.co

<comment><USER2> If you guys can pull this off - and it actually WORKS - I'll be so excited, I can't even tell you.

<comment><AUTHOR> We've signed the access contract and we're getting ready for a beta launch in the next few weeks. If you, or someone you know, is interested on building something with the api, send me a quick email at email@example.com and I can get you early access.

<comment><USER2> Sent!

</comment></comment></comment><comment><USER3> The Show HN guidelines explicitly ask you to have more than just an email signup.

<comment><AUTHOR> Sorry. I checked the guidelines linked at the bottom of the page, but I didn't know there were a separate set of guidelines for "Show HN". I'll make sure to follow them in the future.

Maybe it would be possible to show an abbreviated set of guidelines in the compose page when /show hn/i is detected in the title?</comment></comment>


We Nod While Talking on the Phone. Design For It. - <AUTHOR> http://www.azarask.in/blog/post/phone-nod/

<comment><USER2> Sounds like a complex, error-prone solution that requires the devices and people to learn something new and doesn't solve the problem of not being able to see the person you're talking to.

"A nod-aware phone would make my daily communications that much more humane, and technology that much more human."

Even if you ignore the insurmountable downsides, it doesn't sound all that human to me.</comment>


Liskov Substitution Principle Violation Spotted in the Wild - <AUTHOR> http://www.codelord.net/2010/11/24/liskov-substitution-principle-violation-spotted-in-the-wild/

<comment><USER2> On the one hand, yes, this is a terrible implementation choice.

But on the other hand, it's the Java standard library, what do you expect? Even arrays built into the language don't obey LSP.</comment>


Why the Web Won't Be Nirvana (1995) - <AUTHOR> http://europe.newsweek.com/clifford-stoll-why-web-wont-be-nirvana-185306?rm=eu <comment><USER2> Clifford Stoll never had any idea what he was talking about. Try reading The Cuckoo's Egg if you doubt it. Nobody who groked the internet denied its deeply transformative nature. The debate has always been about how far it would take us, how fast we would go, and whether the changes would be for better or worse.

<comment><USER3> 1995 everything was _far_ from obvious. Web was tiny back then and it didn't look good.

Web was tiny and unorganized.

You had mainly two things to bring order to chaos:

1) [http://digital.altavista.com/](http://digital.altavista.com/). IIRC, no bookmarks in 1995, so I can still type it perfectly, had "some" practice back then. Talking about Altavista, I want my boolean logic searches back! Although some of my search queries were hundreds of characters long...

2) Of course Yahoo directory. For those who had trouble with boolean logic. :-)</comment></comment>


Some celebrities are ditching Twitter for Community - <AUTHOR> https://www.fastcompany.com/90439032/why-your-favorite-celebs-are-ditching-twitter-for-an-app-youve-never-heard-of <comment><USER2> Such a clever hook to have celebrities say "text me" to get people's numbers. Basically a megaphone like Twitter for celebrities that delivers updates right to your fans phones by text</comment>


Show HN: Our First Month Since Launching: Open Review - <AUTHOR> http://everydaydreamholiday.com/2013/01/15/startup-business-review-launch-first-month/

<comment><USER2> Would love some honest feedback, especially things we can do better or haven't thought about yet.</comment>


Rust 2019: Tame Complexity through Community Involvement Tools - <AUTHOR> https://internals.rust-lang.org/t/rust-2019-address-the-big-problem/9109 <comment><USER2> Recently started introducing Rust in my team and here are my notes on some of the issues we have run into so far. We are primarily a Scala/JVM shop with a little bit of Python.

\- `Error Handling` is a bit of a dumpster fire right now. Rust has something called a `Result` enum which is similar to `Either[Error,T]` monad in Scala however every single Rust crate I have used so far its creating its own `Error` enum which makes it really hard to compose `Result`. Ideally I would like to chain `Results` as `e1.and_then(e2).and_then(e3)` but its not possible due to incompatible error enums. Ended up using `[https://docs.rs/crate/custom_error/1.3.0`](https://docs.rs/crate/custom_error/1.3.0`) to align the types.

\- A lot of basic things are still influx and community wide standards have not been established. For example: I needed to externalize some environment specific settings in a Config but couldnt figure out where to put non-code assets in a cargo project and then how to reliable read them. In JVM world `src/main/resources` acts like a standard place for stuff like this but that patterns has not been established yet.

\- Distributing code inside the company is hard because there is no integration with Artifactory or similar tools. We are directly referring git sha in Cargo right now and waiting for better solutions.

\- Rust comes with a default unit test framework but it pretty bare bones. I havent seen examples of test fixture, setup/teardown support and loading test configs etc.

\- I really like Rust compiler because of really good error messages it produces but its really slow and you start to notice it as you add more code/external crates

-IDE support is good but not great. I am using IntelliJ with Rust plugin as we use IntelliJ for Scala/JVM and it is nowhere as good as even Scala plugin which is pretty mediocre in itself.

Overall I am pretty happy with the language (except for Error issue) and most of my gripes are around the ecosystem and tooling around the language. Hopefully these will be resolved as language gains more momentum

<comment><USER3> You should try using `map_err` and the `?` operator, with your own error enum defined using the `failure_derive` crate, for example:

        foo().map_err(|e| MyError::FooError(e))?
          .bar().map_err(|e| MyError::BarError(e))?;

<comment><USER4> A tip - you usually don't need lambdas in such cases; this should work:

        foo().map_err(MyError::FooError)?
          .bar().map_err(MyError::BarError)?;

<comment><USER3> Oh, nice! I did not realize tuple constructors implemented `FnOnce`! Thanks for the tip!

</comment></comment></comment></comment><comment><USER5> What I would like to see is something where people could submit a small working program in one language and a Rust expert would make a program that does the same thing in idiomatic Rust. This doesn't need to be anything too complex. A wiki would be fine, the work would be in having volunteers to make the demos.

If you don't know the idioms you end up doing a sort of transliteration of the source language where the concepts may work against the nature of Rust. A developer can spend a long time barking up the wrong tree with few indicators as to which is the right tree.

As an example of what I mean. Here is a program that I wrote in JavaScript specifically because I could not find a way to write it in Rust that felt like I was doing it the right way.

[https://codepen.io/Lerc/pen/yQxmob?editors=0010](https://codepen.io/Lerc/pen/yQxmob?editors=0010)

I could come up with Rust versions that were basically emulating pointers with array indexes(and a mess when something is deleted), or map versions that incurred lots of run-time lookup. The crux of the problem, I think is either how to do a mutable graph of mutable nodes, or how to do map on a immutable graph of immutable nodes to a new immutable graph of immutable nodes in the next state along.

I'm sure others have this issue of "I know how to do it in X, doing it that way in Rust is a mess, what's the right way?"

<comment> em-bee take a look at [http://rosettacode.org/wiki/Category:Rust](http://rosettacode.org/wiki/Category:Rust) more than 400 code examples have a solution in Rust.

<comment><USER6> There's no real guarantee of quality or idiom there, though.

<comment> em-bee but that's something the rust community could take care of.

should be much less work than creating yet another repository.

i think there was at least one language that made rosettacode their official repository for code examples. so all their solutions were vetted by experienced developers.

i believe the rosettacode maintainers would allow adding a note to each example that has been checked. (simply add it to the description of the solution, so that people know which examples are recommended)

<comment> em-bee you could also create a list of links to approved rosettacode examples

</comment></comment></comment></comment></comment><comment><USER7> I truly love the Rust project.

There is so much genuine compassion, diligence, and attention in the community, and it shows everywhere.

<comment><USER8> That has been my experience as well

</comment></comment><comment><USER9> I continue to admire the Rust PR. This "everybody blog what Rust should do in 2019" generates a lot of publicity from my point of view.

Other language communities, take note.

</comment><comment><USER10> Well, I didn't expect to see this pop up here. (I'm the author)

<comment><USER11> Almost everything major (and lots of non-major stuff, like minor release announcements) regarding Rust ends up on HN, so it only made sense that this would too...

<comment><USER10> I'd love to see click through vs up vote rates. I.e. do people up vote without clicking through? I'd love to see how it varies by topic...

</comment></comment></comment><comment><USER12> One of my 2019 goals is to try and be more involved with Rust in some way or shape. Hoping to go to meetups or the like. Rust as a language is really special to me, and I'd love to be able to give more back.

</comment><comment><USER13> Thought it'd be the syntax. Maybe next year.

<comment><USER6> There are no plans to significantly change the syntax.

<comment><USER14> Not as part of the official Rust project, of course. But it would be nice to see some exploration of what a "reskin" of Rust-like semantics with a different syntax could look like. Kind of like some languages, e.g. VB.NET or Nim are little more than "reskins" of others, in ways that arguably make them more intuitive than the original.

<comment><USER10> [https://internals.rust-lang.org/t/pre-rfc-first-class- suppor...](https://internals.rust-lang.org/t/pre-rfc-first-class-support-for- compile-to-rust-languages/7610/14)

^^ This link is a pre rfc for adding good support for those types of things.

</comment></comment></comment></comment><comment><USER15> >The embededded working group could probably use a page listing all the platforms

I haven't looked into which micros are supported by Rust in actuality because I checked their main site and saw an old Nordic, a few old STMs, an old NXP, and some old MSPs, then left the page.

If I was a hobbiest this might be ok and I might research it more. As a professional, I pretty much noped out of there assuming that it's just nowhere near ready for me.

I'd like to see it work! But until there is an IDE with debugging using code overlay and breakpoints... Rust is just not for me. I wonder what year they get there?

Edit: apparently there is a gap between what hobbiests consider acceptable and what my company would need that the Rust fans can't imagine - this somehow means my opinion isn't valid. Let me know when Keil or IAR or anyone sells a supported and professional IDE with a Rust compiler.

<comment><USER16> You do get all that today already. The various Cortex'es are supported rather well + gdb in combination with a JLink gives you the debugging interfaces you need.

<comment><USER15> You're talking about command-line GDB?

<comment><USER17> Or anything that can talk to a gdbserver (most IDEs).</comment></comment></comment></comment>


EditorConfig - <AUTHOR> http://editorconfig.org/

<comment><USER2> Although I've been using it for a while, I have to say it's very limited, and editor support should be out of the box, not via plugins as, for example, the Sublime Text plugin make your file redraw as it changes the settings upon opening and it's not very pleasant to the eye.

I think it should be extended to more common features and then if an editor doesn't support one, by spec, it should ignore it.</comment>


PSA: You might have $204 worth of cryptocurrency (Ripple) you forgot about - <AUTHOR> https://medium.com/@marckohlbrugge/you-might-have-204-worth-of-cryptocurrency-you-forgot-about-c9787e788730 <comment><USER2> Stellar it is ;)

Nice, unfortunately the upgrade process didn't work for my account... Let's see if this can be fixed.

<comment><USER2> 6951.999999 lumens :D

<comment><USER2> After sending you 1.999999 lumens I now have... 6949.999999 lumens left. Ouch.

<comment><AUTHOR> :D</comment></comment></comment></comment>


Startup School 2013 Talks - <AUTHOR> http://m.youtube.com/channel/UCcefcZRL2oaA_uBNeo5UOWg?&desktop_uri=%2Fchannel%2FUCcefcZRL2oaA_uBNeo5UOWg

<comment><USER2> Thanks, hope Paul Graham's Office hours goes up.</comment>


The Lean You: Pivoting Your New Year's Resolutions - <AUTHOR> http://lean.vc/the-lean-you-pivoting-your-new-years-resolutions/#.WGOZdm6-13M.hackernews <comment><AUTHOR> Finding the Minimum Viable You.</comment>


Alibaba research detects Covid-19 in 20 seconds with 96% accuracy - <AUTHOR> https://www.alizila.com/how-damo-academys-ai-system-detects-coronavirus-cases/ <comment><USER2> [https://outline.com/MCtCDY](https://outline.com/MCtCDY) since that page wastes a ridiculous 1/3rd of mobile screen real estate.

tl;dr: they developed a classifier for respiratory diseases based on CT scan images and are planning to deploy it so others can use it.</comment>


GNU Typist - <AUTHOR> http://www.gnu.org/software/gtypist/ <comment><USER2> I wish I had time to re-do the original (cyan) Mavis Beacon Teaches Typing. The things I loved about it were:

* error analysis (ie: transposition errors, substitution errors, etc).

* finger-by-finger analysis

* lessons tailored to target speed

* metronome / rhytmic typing

It did a fantastic job of really analyzing and focusing on trouble spots, and it did it back in 1982 or whatever. I think there's a gap / opening for this sort of typing analysis backend that could be plugged in to some different frontends.

in: Source Text + User Keystrokes + Microtimestamps

out: "analysis" + recommendations for future lessons / word lists.

There's so much cool algorithmic stuff you can do with an "analysis + dictionary + markov chain lesson generation".

You really suck at xyz? Why let me generate an infinite pile of semi-nonsense that is either word or letter-pair based and tests you on that portion.

</comment><comment><USER3> I used this program to reteach myself touch typing a few years ago.

What I found annoying was the course's insistence on having to type two spaces after the end of a sentence. This was a practice I've never heard of before that and seemed to be pretty pointless with modern typeset software.

That's why I used sed to modify the tutorial files to only use one space after a period.

<comment><USER4> That's a bad bug and the default should be changed. In publishing production environments based on word-processing software, the default now is always to have just one space after each period in a manuscript.

(Yeah, I learned to type under the old rule, but I am OLD, and no one learning to type now should type more than one space after a period ending a sentence.)

<comment><USER5> To my mind the two-space rule still applies _when_ you are writing text to be displayed in a mono-space font. Otherwise, one space, yes. This unfortunately means you need different habits for the two environments, unless the software compensates somehow.

<comment><USER6> Personally, I think the two space rule is simply bad. Writing text "to be displayed in a mono-space font" confuses content with presentation.

<comment><USER5> If you're designing a system that will be displaying things in a monospace font, making it automatically add additional spacing may be reasonable but that is itself an application of the rule! If you're using an existing system (or, say, laying out a poster in a monospace font), then the notion that "you should ignore the rule because to do otherwise would be confusing content with presentation" is a confusion of another kind.

One place I'm a bit torn is comments in code, but I think I come down on the side that says "my editor shouldn't be trying to guess which comments are simply paragraphs of text and which may have things I'm trying to line up - monospace should work like monospace" and in this case you should be adding two spaces for clarity.

</comment></comment></comment></comment></comment><comment><USER7> As the founder AND developer behind two of the largest (maybe they are the largest) free typing tutors on the net (<http://www.typingweb.com> and <http://www.nitrotype.com>) I wanted to point out that there are more enjoyable ways to learn to type now :)

And I built Nitro Type's real time game engine in Node, which I learned about as an avid HN reader. Anyways happy holidays everyone.

<comment><USER8> Since both of your links are web services, they are not even comparable to GNU typist, which one can run on ones own computer.

Are the webservice accessible when on a bus without internet connectivity? Is it modifiable so one can customize it fit each personal need and requirements? Is it discoverable for a school to certify that the program is teaching correctly? Can it be certified, under legal liability, as to be safe?

On all of those, neither of the web services can say Yes on those questions. This is a fact when dealing with webservices. On other hand, GNU Typist can be run even when one is without internet connectivity. It can be customized to fit the exact need of a pupil. It can be verified to teach correctly, and can be certified under legal liability to be safe. It can also be verifiable shown as not storing any logs on who is using the tool.

<comment><USER9> I downvoted you.

All the OP really said was

> I wanted to point out that there are more enjoyable ways to learn to type > now :)

But you went off on a rant about using it offline and customization and certification and "facts" about web services.

Chill!

<comment><USER8> I did go a bit over the top there, and to that Im sorry. My tone was unfriendly and below the expected standards for comments.

The OP presented the two webservices as replacement tutor software. Even if one is only showcasing a replacement as "more fun", other aspects of the software still matters. If the only aspect one cares about is how fun the software is, there are plenty of games with no tutoring features at all but which has plenty of funness. Thus a replacement tutor software need to be viewed with all its aspects in mind, including customization and always online requirements. Thus while funness is an important factor when selecting which tutor software to use in education, I in my somewhat humble opinion, consider customization as a vast more important feature.

</comment></comment></comment></comment><comment><USER10> Why is it that GNU Project pages so rarely have screen shots?

Here are a few images of GNU Typist in action:

<http://imgur.com/a/ahjuo>

<comment><USER11> "asdf lkj;" brings back memories of the tutorial I used to learn how to type with, on an actual typewriter.

</comment></comment><comment><USER12> I've avoided learning touch typing because a few people I know who learned it early have RSIs now. I know my sample size is low and I have no scientific evidence, but the concern has been just enough to keep me from pursuing it over the years.

<comment><USER13> Most of the damage I did to my wrist was through hunt and peck. You have to think about ergonomics and treat your wrists right, touch or not.

</comment></comment><comment><USER14> I've been changing my typing style ever since I was 16 and I really haven't fond one I've particularly liked(19 now).

I've gone from two fingers, to five(asdf gjhk) to (asdf hjkl). Changing is a painful process as I have to retrain my entire brain to have different fingers touch different keys. This starts up a slow process, then eventually I get to the same speed that I used to with the other method and in some cases surpass the quickness.

What this is suggesting is that your fingers should be on the home keys (asdf hkl;), noting the pointer is on h and not j.

Is that the typical/best way of typing or just some preference some people have? Seeing as I can't seem to pass 80wpm with what ever method I try and follow(Haven't tried the suggesting method yet).

Also what home keys do you have your fingers on, how long have you been doing it and what's your average WPM?

</comment><comment><USER15> I just discovered this program and immediately installed and tried it out. I do not like the fact that backspace seems not to work correctly after when mistyping a letter. It is strange as well having 2 spaces at the end of phrases. I would like a nice typing tutor program for the Unix console.

Some months ago I discovered the program "Klavaro". It exists for Linux and Windows (and maybe others). I quite like its behavior when typing the text, including handling typing errors.

Update: I just discovered, that I judged too quickly. The behavior seems to depend on lessons. For example in Lesson V19/3 there is text that you just overwrite. And when making errors you can come back with the backspace.

<comment><USER16> The speed tests don't require correcting mistakes by backspacing like the accuracy ones.

I like Klavaro, but it has a couple of annoying bugs. One is the text entry box doesn't actually follow quite what you are typing.

</comment></comment><comment><USER17> These "features" clearly spell out the author's priorities:

\- free software

\- multiple languages and keyboard layouts

\- interpreted language for lessons

There is no mention of teaching methods, kid-friendliness, or any other feature that one would use to compare against Mavis Beacon.

</comment><comment><USER18> I never spent specific time learning typing. I learned typing almost instinctively while working at the call center. Well I didn't even realize I had learned typing, it was the same feeling while I was learning to ride the bicycle. One fine day I just realized I was riding the bicycle. It was like a 'aha' moment.

I think it what led to learning type(and type quickly) was the call centers quick back to back calls. I had to take notes, solve problems and sometime ship products to some address. It was not possible to do all that unless you learned to type quickly. It just happened one fine day I was just typing, and I realized I was doing that without looking at the keyboard.

It has helped me greatly as a programmer as I don't have to constantly shift my attention to looking at the keyboard every 5 seconds. I can type code at the speed of thought, simply as though my fingers are just dancing on the keyboards like an expert pianist would play at a symphony.

Sometimes the best thing that can happen to you is to be in a tough situation. You will(find a way to) learn things, and you will just make it happen.

</comment><comment><USER19> Just got this from macports ("port install gtypist") and I really struggled with it using the HOME position. I can type about 105-110 WPM (typeracer.com) but I don't use the HOME position like gtypist wants you to. My default finger position is:

Left hand: sdfv Right hand: njkl

Anyone else?

<comment><USER20> Where did you learn to type like that?

<comment><USER19> It's more comfortable that way. The HOME position causes my wrists to be running parallel to each other unless I stretch my pointer finger. With the position I use all my fingers are comfortably curved. But to answer your question I was not formally taught to type -- I assume most people aren't formally taught to type. You just do it more and more and more until you have no need to get any faster.

</comment></comment></comment><comment><USER21> I learned typing using Sierra's Spooky typing [1]

Pretty great for the time.

[1] [http://www.sierrachest.com/index.php?a=g&id=429&fld=...](http://www.sierrachest.com/index.php?a=g&id=429&fld=g&gconf=1)

</comment><comment><USER22> Seems neat, I'd love to try it out.

Am I the only one having a tough time installing this on osx though? No fink package available for osx >10.6. Installing from sources complains about ncursesw lib missing.

</comment><comment><USER23> I love this program, I and I've been using it very heavily for years.

</comment><comment><USER24> Why is this being submitted now? This is not recent.

<comment><USER25> The guidelines say that good posts are: "Anything that good hackers would find interesting. That includes more than hacking and startups. If you had to reduce it to a sentence, the answer might be: anything that gratifies one's intellectual curiosity."

Don't see anything there about things having to be "recent."

<comment><USER26> Hacker _News_.

<comment><USER27> News is defined as either newly received _or_ noteworthy.</comment></comment></comment></comment>