Pages:
Author

Topic: [Announce] Project Quixote - BitShares, BitNames and 'BitMessage' - page 19. (Read 48297 times)

hero member
Activity: 518
Merit: 521
Great, I love competition it results in better products for everyone.

Agreed and apologies for cluttering your thread. And my sincere wishes for your success.

I will reengage if I gain some new perspective.
hero member
Activity: 714
Merit: 510

No one! That is the key point of it being decentralized and algorithmically autonomous.
Everyone owns the blockchain. You could say it's left libertarianism but not centralized authoritarian socialism http://en.wikipedia.org/wiki/Libertarian_socialism.

Disagree. Collective ownership is SOCIALISM!!!!! My gosh how could you not miss what the definition of collectivism is?
Bitcoin is collectively owned, but it's not typical socialism. I don't believe it's socialist at all, I see it as technologically applied libertarian socialism if I had to try to put any political ideology on it at all and even in that instance many people would completely disagree.
In case you haven't caught on to the real innovation here, it is the creation of decentralized ownership of decentralized, for-profit, businesses.   Names & Exchanges are just two such examples of what is possible.

Exactly. I don't think he is grasping the concept that you can have private property as a decentralized group. Bitcoin could be considered private property, owned by the community itself. If you want to stretch it you can see it as a libertarian socialist type thing, but it's not socialist in the sense of the word where there is some authority in control of it.
hero member
Activity: 770
Merit: 566
fractally
I don't want to clutter your thread. I wish you good luck and I hope you continue with your design, because I want to compete with you.

May the best mind win.

Ah yes, Antal Fekete's Real Bills Doctrine. We had our debates in private email.

Great, I love competition it results in better products for everyone.
hero member
Activity: 518
Merit: 521
I don't want to clutter your thread. I wish you good luck and I hope you continue with your design, because I want to compete with you.

May the best mind win.

Ah yes, Antal Fekete's Real Bills Doctrine. We had our debates in private email.



My obstinate replies to Daniel are not intended to be a personal matter, simply that I don't want to support collectivism.

Also the value of the main innovation BitAsset is still somewhat dubious in my mind thus far. So unless that can be explained in a way that really overshadows the differing view that Daniel and I appear to have on economic principles, then I think I should be more of a casual observer and perhaps casual contributor.

I am also concerned about the complexity of what you are trying to achieve. It might be better to find a way to structure the system in orthogonal components, so that partial outcomes between binary  success or failure are possible.

As for modularity, we would have to dig in to the coding.

Any way, you don't need me. There are many valuable people around. I am just one guy, and I might be wrong.

I would most like to work on something that I firmly believe in. I am sure you feel the same way.

Although some aspects of your plans are interesting to me, it seems there is too wide of a gap between us for us to be able to reconcile in such a short deadline as you all are proposing.

And I have to be very selective also how I appropriate my scarce time resource.

So perhaps the most efficient is I bow out and just try to read if you explain things more clearly. Then leave open the possibility of reengaging if I gain an epiphany or become less demanding on my objectives, etc..
hero member
Activity: 518
Merit: 521
Lets resolve the claimed socialist nature of dividends in my systems once and for all:

1) Suppose I create a new email service at the and decide to start selling ${name}@bytemaster.com 
2) Who initially owns   ${*}@bytemaster.com?   Me.
3) At what price should I sell the names to maximize my profit?  At what ever price the market will bear.
4) How do I figure that out?  I auction it publicly, not privately. 
5) Would you suggest that it is socialist for me to do that?  Would you suggest I set a fixed price first come first serve?   Why, fairness and other 'socialist' reasons? Would it make me more money?

You are an individual. Thus you represent one actor in dynamic annealing system of optimization.

Now who owns the ${*}@blockchain?

No one! That is the key point of it being decentralized and algorithmically autonomous.

Why, those who hold the currency and who mined it.

Disagree. Collective ownership is SOCIALISM!!!!! My gosh how could you not miss what the definition of collectivism is?

Who should profit from every name sold?

Those who secure the names. The miners who bring their productive capital to bear.

In case you haven't caught on to the real innovation here, it is the creation of decentralized ownership of decentralized, for-profit, businesses.   Names & Exchanges are just two such examples of what is possible.

The business runs autonomously by algorithm. There is no value-added, except by those securing it.
sr. member
Activity: 448
Merit: 250
black swan hunter
This discussion touches upon a couple of lesser known economic theories.

Antal Fekete, http://www.professorfekete.com/ ,  has some very good theory on hoarding and dishoarding of gold as a driver of interest rates which is determined in a decentralized manner by the public. If interest rates are too low, people will tend to hoard the physical metal since the risk of default by borrowers is too high for the rate of return. Interest rates will need to increase to lure investors to reinvest (dishoard) the gold into bank accounts, bonds, and other assets. If interest rates are too high, a surplus of gold will be dishoarded, eventually driving interest rates back down.

The domain squatting issue and idea of auctioning them touches on theories of Henry George, http://en.wikipedia.org/wiki/Henry_George . He advocated a land value tax to capture some or all of the value from appreciation. This discourages speculation by holding but not improving land, so it is only economical to hold land if the owner is developing it and producing an income from it.

Since participation in Bitshares is purely voluntary, it is by definition not socialism. It may be more akin to an intentional community where members have agreed to pay Georgist rents to the association which are redistributed to members according to some mutually agreed upon formula.
hero member
Activity: 518
Merit: 521
AnonyMint... wow you have written a lot and it is very clear that communicating the mechanics of this system is like trying to explain the mechanics and economics of Bitcoin 5 years ago.

I understood the Bitcoin white paper within an hour or so.

Please don't tell me that I can't read research papers.

Be very careful about what you assume...it is likely your explanations that are not well organized and presented. However, I will leave open the possibility that I am sufficiently ignorant of option trading to understand what might be obvious to others.

It is made all the more difficult due to wide spread economic ignorance which means even those most literate among us often have some of the subtitles of economics polluted by the economic propaganda and fallacies pushed upon us by government paid 'economists'.

I have learned very much from Martin Armstrong who was a friend of Milton Friedman (and Margaret Thatcher), and Friedman admired his understanding of economics.

Quote
Saving isn't really a good thing in excess, as it is capital that is not applying any thinking, just sitting there dumb.

I am not calling you economically ignorant, only that there is a whiff of keyensian economics to your arguments and I have as strong detector for that.

First of all, probably you (and 99% of readers) don't even know what Keynesian economics is-- it is not printing money. And even so, I don't agree with Keynes's theory.

Rockwell

This smells bad. Lew believes in gold standard, along with Ron Paul and Gary North. They are clueless. I provided a post upthread with many links from Martin Armstrong, which puts to rest that nonsense. I also had a link upthread to my unarguable economic point with a math proof, which I assume you did not read.

First Principles:
1) There is no such thing as idle 'money' or 'unproductive money'.  At all times money is always sitting in someone's account.  It represents a future claim on resources, and abstaining from making a claim is better than trying and failing.

This is a clueless statement. Stop right there.

Go back upthread and read my links about inflation, debasement, and how an economy functions.

I am talking about who is rewarded return, based on what risk and knowledge they input.

There is a very clear math proof. Go find my link to it upthread. You are obviously moving too fast and not able to absorb all the details, because you are trying to program at the same time as do this.

Programming before having a clear consensus on design is not wise, unless you are sure you are omniscient.

2) At any point in time there is a fixed set of resources in the economy and they all belong to someone.
3) Two people swapping resources does not change the size of the pie or health of the economy from the perspective of anyone else simply because they swapped.  Only those two individuals can perceive a gain from the trade as they each have something they value more than they had before.  In other words, money is always held by hoarders and changing the current hoarder is neutral on its own.

No, no, no. Wrong, wrong, wrong. People are not same. What they do with capital is based on their unique knowledge and risk profile.

4) only action can create or destroy value in the economy as a whole.


Wrong! So very wrong.

Inaction destroys capital. Time-preference is fundamental, because the duration of human life is finite.

Your fundamentals are way off course.


5) Hoarding money is choosing not to consume resources.

It is more than that. It depends on how we dilute inaction with debasement. Go read my links upthread so you can learn.

It drives prices down (deflation) which encourages more 'hoarding of money' in a positive cycle that drives prices down until someone sees something they can trade their money for that will increase the value (production) or meet their pressing needs (consumption).

It is choice of where capital is directed that is more important than the choice of doing nothing. Because all capital (human lives) are in motion.

Savers shouldn't lose all their saved money overnight, but they certainly shouldn't be rewarded for doing nothing. They do add some knowledge by being selective, but this is more valuable when they are selective in a way that they are always deploying.

Either way, the hoarders of money benefit both the production of goods by freeing up real capital (not money) for productive purposes and consumption of others by reducing prices through reduced demand and increased production due to investment in capital such as factories.

Malthusian nonsense. More and more efficient production overturns scarcity. Reward goes to those who know how to deploy.

Contrast this against a debt induced demand, which is giving money ignorantly to everyone to spend ignorantly.

Whereas when you give return to those who proved efficient production increase, you concentrate capital to those who increase everything and away from dumb savers and debtors who add nothing.

A saver can only gain return by stealing from those who deploy increases in productivity.

Based upon these principles I reject any argument on its face that claims hoarding and saving is bad.

There needs to be some reserves because of the business cycle due to waves caused by inertia.

That is why we don't debase savers to 0 overnight.

 Anyone who is willing to produce value today in exchange for money, and then not consume any resources for 10 years, is providing a huge loan to all of society and interest on that loan is paid via the resulting deflation.    

The really easy 'proof' of the fallacy in your argument is to define 'excess savings' in a meaningful way.  How can I tell that there are excess savings?  If it exists, what free-market options are there to solve it?   Ultimately the answer is always, "tax", "inflate", or "subsidize" and all of these are a violation of non-violent, decentralized principles.

Excess is stealing value from producers to give it to savers with a blanket dividend.

Dividends are a non-negotiable part of the system.  We consider a desire to hoard our currency a huge success because it means we are creating a product people want to own.  The market will then decide our fate.

Then you don't have my support.

I would rather compete against you.

So I will stop giving you design help.
hero member
Activity: 770
Merit: 566
fractally
Lets resolve the claimed socialist nature of dividends in my systems once and for all:

1) Suppose I create a new email service at the and decide to start selling ${name}@bytemaster.com 
2) Who initially owns   ${*}@bytemaster.com?   Me.
3) At what price should I sell the names to maximize my profit?  At what ever price the market will bear.
4) How do I figure that out?  I auction it publicly, not privately. 
5) Would you suggest that it is socialist for me to do that?  Would you suggest I set a fixed price first come first serve?   Why, fairness and other 'socialist' reasons? Would it make me more money?

Now who owns the ${*}@blockchain?  Why, those who hold the currency and who mined it.  Who should profit from every name sold?  Those who own the currency.  How much should they get?  Proportional to their investment in mining / acquiring the shares.    On what basis should it be any different?   Only socialist 'entitlement' to cheap names and resistance to markets which are replaced by 'first-in-line', 'shortages', etc.   So while you claim my approach is socialist, what exactly is yours?

In case you haven't caught on to the real innovation here, it is the creation of decentralized ownership of decentralized, for-profit, businesses.   Names & Exchanges are just two such examples of what is possible.

hero member
Activity: 770
Merit: 566
fractally
AnonyMint... wow you have written a lot and it is very clear that communicating the mechanics of this system is like trying to explain the mechanics and economics of Bitcoin 5 years ago.   It is made all the more difficult due to wide spread economic ignorance which means even those most literate among us often have some of the subtitles of economics polluted by the economic propaganda and fallacies pushed upon us by government paid 'economists'.

Quote
Saving isn't really a good thing in excess, as it is capital that is not applying any thinking, just sitting there dumb.

I am not calling you economically ignorant, only that there is a whiff of keyensian economics to your arguments and I have as strong detector for that.    Economics is another one of those areas that quickly turn into holy wars without sound deductive, praxeological arguments.   I will respond with my position once, but would like to avoid turning this into an economic debate.  While I enjoy the debate, I need to spend time coding and the debate on these issues has already been through addressed by Mises, Rockwell, and others.

First Principles:
1) There is no such thing as idle 'money' or 'unproductive money'.  At all times money is always sitting in someone's account.  It represents a future claim on resources, and abstaining from making a claim is better than trying and failing.
2) At any point in time there is a fixed set of resources in the economy and they all belong to someone.
3) Two people swapping resources does not change the size of the pie or health of the economy from the perspective of anyone else simply because they swapped.  Only those two individuals can perceive a gain from the trade as they each have something they value more than they had before.  In other words, money is always held by hoarders and changing the current hoarder is neutral on its own.
4) only action can create or destroy value in the economy as a whole.
5) Ignore the money and labels, there are only two things that any action can result in:
       - using inputs to create outputs of greater value (production)
       - using inputs to create outputs of lesser or no value (consumption)
5) Hoarding money is choosing not to consume resources.  It drives prices down (deflation) which encourages more 'hoarding of money' in a positive cycle that drives prices down until someone sees something they can trade their money for that will increase the value (production) or meet their pressing needs (consumption).   Either way, the hoarders of money benefit both the production of goods by freeing up real capital (not money) for productive purposes and consumption of others by reducing prices through reduced demand and increased production due to investment in capital such as factories.

Based upon these principles I reject any argument on its face that claims hoarding and saving is bad.  Anyone who is willing to produce value today in exchange for money, and then not consume any resources for 10 years, is providing a huge loan to all of society and interest on that loan is paid via the resulting deflation.    

The really easy 'proof' of the fallacy in your argument is to define 'excess savings' in a meaningful way.  How can I tell that there are excess savings?  If it exists, what free-market options are there to solve it?   Ultimately the answer is always, "tax", "inflate", or "subsidize" and all of these are a violation of non-violent, decentralized principles.  

Dividends are a non-negotiable part of the system.  We consider a desire to hoard our currency a huge success because it means we are creating a product people want to own.  The market will then decide our fate.    

I will address your other points in a bit.
hero member
Activity: 518
Merit: 521
I hope you don't get negative vibes when I often play the critical eye role. I will also be very supportive when there is an unarguable design win.

Domain squatting is a creature of price fixing combined with first-come, first-serve awarding of names.

Meaning that the price is arbitrary and not market driven. Agreed on that point, but do not agree on the value of being first not being part of discovery...read on...

The goal is to maximize the economic utility of each unique piece of real estate.  In my approach, imagine all available names as being real-estate in the New World.  No one knows which acres have gold, oil, or nice views until they can be explored.

Agreed. Lucid analogy.

It is absolutely ridiculous to create a system where all lots are the same price and then sell them all to the first person in line. To ensure proper price discovery names are auctioned.

Is it so ridiculous when one of the components of value created is the first person to discover that a name is worth buying?

I propose a solution that when someone goes to register a name, then there is a window of time in which anyone else who comes to register that name, then they are all introduced to a secret auction ongoing?

That balances the value of knowing against the price discovery amongst those who know in the same approximate early time.

To solve this problem I have created a name crypto-currency that acts as 'stock' in all names and owners of this stock make a profit anytime a name is sold. The result is that the most profitably way to 'squat' is to own the crypto-currency because it sees almost all of the profits from every name actually sold and no need to tie up capital in names speculatively.  It puts everyone on a equal playing field in the domain squatting game because whether you have $100 or $1M to invest, you can get the same rate of return by investing in 'unclaimed' names via owning 'stock' in the crypto-currency.

Analogously to your idea about dividends for BitShares, this is where your socialistic tendency overturns logic.

You think that pooling things creates value. No it destroys value. Please re-read my posts upthread about degrees-of-freedom and how arbitrary dynamic systems optimize via simulated annealing.

No value is created by allowing people to buy a share in selling of names. No knowledge was added, thus no value. This is just silly transferring of wealth, i.e. SOCIALISM 101.

Why are you trying to stop people from using their knowledge to bid up the best names? You are not the market. Stay out!

My motivations are always economic and never about 'social justice' or redistribution for 'feel good' or 'nanny' reasons. The goal is efficient allocation of resources and profit while avoiding socialist concepts of 'fair prices', price fixing, and other economic policies.   THe result is a better system that can compete on the market, not 'nanny developers'.

You may think that about yourself, but your design is exactly what you say you don't want. You are trying to design a way to stop people from competing on names, by trying to bribe them with pooled transfer of wealth with no valued added.

I hope you get this. This is entirely wrong.
hero member
Activity: 518
Merit: 521
Back to the main design points...

P.S. I don't really want to delete my posts about language choices, as I think it is relevant and I put some effort into them but I agree to stop it so it doesn't dominate the discussion. I hope you will try to write modular layers/APIs (which might be difficult if under deadline pressure), but in any case it is your priorities that will dominate as you are the lead. The Unix design philosophy is you write your app with no GUI to begin with to be sure you've made the core functionality orthogonal.

Guys.... please delete your posts on the language debate, they detract from the thread and can be discussed in a PM or separate thread if you want it public.   

Couldn't agree more, let's end this pissing match.

What pissing? We were discussing technical aspects of programming languages. Very interesting and relevant for those who understand.

Quote
8. What is the redeemable concept? Do you mean to say the long or short can close their position at any time without permission of the counter-party? How can that be fair?

Aside from margin calls, positions can only be closed by finding a buyer and trading out of your position.  Fortunately the market is liquid and all BitUSD is fungible.

Thus the BitAsset isn't destroyed and isn't redeemed. So I still don't see where the redeemable concept comes in.

Quote
9. In the margin call, the BitAsset is destroyed, so what happens to the collateral of the counter-party which did not receive a margin call? If it goes to them, why are they forced to redeem their BitAsset prematurely? Wouldn't a better design be let the BitAsset remain for the counter-party? Also why does the redeemed money go to the dividend pool (for that BitAsset or all BitShares?) and not to counter-party, so that the counter-party gets some leverage?

When a short 'covers' their position they do so by BUYING the BitAsset on the market using the collateral.  Thus some owner of BitUSD is now the proud owner of the some of the Bitshares held as collateral based upon the price. Any left-over collateral is returned to the owner of the short position.

I am not following this. I could try to guess what you mean by the somewhat ambiguous terminology ('cover', 'owner') you've used, but this will increase the verbosity of back and forth. How about an example?

Quote
There is the risk that the market value moves to more than 100% of one-side of the collateral before than the miner can issue the margin call. There is no default here, it is just the redeemed money is not as great as it should be. If the redeemed money was going to the counter-party instead of the dividend pool, then the counter-party would lose some real-time time-preference, but this isn't designed to a be a real-time trading system any way.

First of all, BitUSD is composed of 1000's of positions entered at different prices by different people.

Why you mention that extraneous info? How is that relevant? Are you implying a pooling of collateral?

The price would have to fall 50% in 5 minutes and even then there are no losses because the collateral would still be able to purchase the BitUSD at market price.

What if it falls 150% in 5 minutes?

Obviously the short positions would be entirely wiped out in such a rapid movement in price as they are forced to buy as much BitUSD as their collateral will allow and bid up the price in a short squeeze.

Why do they have to buy a BitUSD, who did they promise delivery to?

The long already has ownership of the BitUSD correct?

I am very much confused now.

Worst case outcome is that some people will end up with BitUSD with no backing at all and thus 0 interest.

I am totally lost now.

Fortunately, new BitUSD is always being created as new shorts / longs enter the game and the new BitUSD would be fungible with the old so only someone attempting to sell BitUSD in a very narrow window may face a discount to face value.  Because market forces always push the price back toward parity, speculators would readily buy up BitUSD at a slight discount created during such an insane price move.  

I am lacking basic understanding of the design in order to comprehend the private language you are using above.

Quote
11....  It is presumed that the market will try to maintain the market value of the BitAsset proportional to the price changes in its designated asset.... then the expiration period should be relatively short...

There is no reason to ever have expiration on longs (see above).

Then I don't see the pricing working as you expect. My understanding (perhaps wrong) is that probabilities for expectations on the price moves over the duration of the asset held have to symmetrical in order for the price to mirror the targeted asset. My prior explanation was more thorough.

Perhaps I am just missing something in the design which will give me an epiphany once I get it, so I reserve the judgment on whether I am correct or not. But I think I'm correct at this point in my understanding.

Quote
But couldn't a miner also exclude bid and asks, thus manipulating the market price? This appears to be a major flaw in the design.. I don't have idea for a solution yet.

A miner could exclude a new bid or ask in the most recent block, but would be unable to do anything about limit orders placed in prior blocks that were not filled.

Good point. Include also stop-loss orders, etc.

The miner will always have a slight advantage in picking which bids get into the block chain and thus how the price moves in the 5 minute window of the block they win.

If the volume of bid/ask is much lower than options outstanding, they could possibly offset the cost to sweep away the bid/ask with a gain from manipulating the options causing a margin call in that 5 minute window.

But in a given 1 hour window, there will be 12 different miners who win and they will have different goals with respect to which way they want the price to 'move' based upon their individual position (short or long).    The reality is that the offers placed on the block chain are generally spread in a collar around the current bid ask and therefore the order book will be full on both sides of the trade at the start of mining.  No single block would be able to budge that order book by more than the 'new bids/asks'.    So margin calls will be based upon a wider bid/ask spread than the 'real-time market'.  Most people who care about price fluctuation in time periods of less than 1 hour should be trading on an Open Transactions exchange that is funded with BitUSD / BitShares.

I am not following you. Does this invalidate my point above about relative volume? I think not.

I suspect that the small market advantage garnered by generating a block would further motivate miners and ultimately help secure the network.   Of course, the reason why decentralizing the hashing algorithm is important is to keep a large percentage of the hash power in the hands of non-professional miners and thus limit the ability to control the market by any one actor.


You assume "small" but is that true. See above.

Quote
Why canceling bid/ask takes 24 hours when blockchain becomes secure after roughly 6 blocks, e.g. 60 minutes?


Any action that could be taken by a miner must wait for the 'chain reorg window' to pass.  Bitcoin currently uses 100 blocks before miners can 'spend' their rewards because during a re-org

So 17 hours.

I don't understand why the blockchain takes 100 blocks to choose between competing forks. I thought that probability of competing forks beyond 6 blocks is exceedingly small?

, decisions of the miners based upon then-current prices are no longer valid.

You lost me again. I don't understand. What decisions? What "then-current prices"?

Writing in a clear, layman's language is very important.

If I cancel my order and then a re-org occurs, a miner in the reorg may have executed my order prior to the cancel.
Obviously, re-orgs are a risk for any trade executed by a miner and those that care about having instant spends should use the off-chain system to exchange and sign an atomic transaction that could survive a re-org.

Ok.

This is another example where the only bids/asks that will end up in the block chain are the 'open orders' / backlog that will only be executed if the price moves significantly (1% or so) in one direction or another.  

You have thoughts going on in your brain that you are not writing down. Again I don't follow why that must be so.

This is typical for programmers (like us) though Smiley Hate slowing down to do clear documentation right.

Quote
14. Dividends allow idle capital to not invest in mining, we want to maximally secure the blockchain.

We want the minimal security required to prevent chain forgeries and ensure things are decentralized.  You don't go around paying for the MAXIMUM security for your house because after a while additional security has a marginal ROI.

The marginal-utility of blockchain security is a constant, and never declines if the mischief that a 51% attack can do it irrecoverable or catastropic (or even less than 51% attack if more frequently manipulating bid/ask, which is why I suggested upthread you remove bid/ask resolution aggregation from the mining).

I am yet undecided if the potential mischief is so grave.

Also with CPU-only PoW, everyone can mine, so everyone can utilize their existing resource (computer) when it is idle (person is sleeping). So everyone can grab some of the debasement, proportional to the productive resources they bring to the system.

Dividends provide the following benefits that ultimately improve security of the network:

1) then encourage saving and value accumulation within the chain.

I provided links upthread that there is tension between saving and growth of the economy via investment at-risk. Saving isn't really a good thing in excess, as it is capital that is not applying any thinking, just sitting there dumb.

2) they create an incentive to bring the unwashed, greedy, masses such as Grandma, into the system because they can get a better ROI than their bank with a better risk profile.
3) having a relatively secure way to generate passive income will help make this go viral

I don't think so, because they get less than the debasement rate of the coin (as some goes to the miners). Unless fees and such will be so extensive, but then people will run from such an onerous coin.

People invest in Bitcoin for the capital gains and for the benefits of decentralized digital currencies. Conversative savers are not going to leave fiat because of interest rates. Heck they are fighting to get negative rates in Europe for the safety-- they pay the sovereign to borrow their money  Shocked
  
4) increased adoption means more small time users, each of which can profitably mine with their CPU, and thus there will be more hash power in the network.

Yeah because they can earn coins for using their idle resource (computer). Has nothing to do with dividends.  A society-wide dividend (without some additional justification) seems silly. We take debasement from ourselves and give it to ourselves again.

Thanks for all of your feedback, it is nice to see some deep conceptual thinkers picking through the paper and design.!

Yw. Thanks for replying. Hope I didn't offend. I like something easy-to-grasp.
hero member
Activity: 882
Merit: 501
Ching-Chang;Ding-Dong

Guys.... please delete your posts on the language debate, they detract from the thread and can be discussed in a PM or separate thread if you want it public.   

Couldn't agree more, let's end this pissing match.
hero member
Activity: 770
Merit: 566
fractally

Guys.... please delete your posts on the language debate, they detract from the thread and can be discussed in a PM or separate thread if you want it public.    
hero member
Activity: 518
Merit: 521
The OT link as promised...

I'm most comfortable with python and Haskell. I think everyone has a pet language and honestly If I could choose any language for this project, then I'd choose Go: https://en.wikipedia.org/wiki/Go_(programming_language)

I found many flaws in Go. I will find my link.

The key issue with Go is duck typing instead of nominal typing. The link explains some of the issues, but they go far beyond that.

Given you like Python and Haskell (excellent languages for their use cases), which both have structural forms of typing, I can see where you would initially think Go might be good.

But there is a key point that you may not have considered yet (assuming you haven't coded extensively in Go, neither have I), is that Python isn't a statically typed language and Haskell is a co-inductively typed language (where Bottom is the type that all types inherit from, unlike inductive languages that mere mortals normally use where Top is the type that all types inherit from-- one of my contributions to computer science theory).

Thus I think you will find that a statically typed, inductive language with duck typing is fundamentally flawed.

Go is an experimental language like Rust that has enormous potential and great vision.

The problem with Rust is its main innovative feature Typestate. It is an auxiliary type system that coexists with and purports to be orthogonal to the actual type system but this is impossible (if we get into type theory), thus it will put the program in an indeterminate state, as exceptions do.

Rather it is better to have a unified, highly expressive type system as Scala does, then (especially if using category theory) you can avoid impedance mismatches (otherwise known as refactorings instead of fulfilling the Expression Problem for reuse).

The following link has some elaboration and links on the above, but please ignore the rest of what is there as it is out-of-date:

http://copute.com/dev/docs/Copute/ref/intro.html#Exceptions

C++ is a horse that has built more than half of all the world's software and will continue to be in wide scale use for decades like C before it. I see not issue with developing our MVP and much of the source for the first few years in C++ and then embracing a gradual migration to other languages where it makes sense. We already have plans to be multilinguistic in respect to our plugin system allowing developers to use javascript.

I hope you separate your code into modular layers with APIs that are modular as much as is reasonable given the rushed deadlines. This is not really easy to accomplish.

Then we can reuse the C++ code in layers, with what ever language we want to going forward.  

Another value C++ provides us is that its mastery is difficult. Any developer who can write good asynchronous C++ code is usually a talented and disciplined programmer. It tells us a lot about the individual behind the keyboard more so than something like Python or Ruby (god help us JS skills). Thus I enjoy it as a recruitment tool to gain a better sense of the skillsets of the people I'm working with.  

Yeah that makes sense. And the set of Scala programmers who can do that is so small, you might be lucky to find one in the next few years.

But for the outer layers (GUI, etc), let's try to be as language agnostic as possible?
legendary
Activity: 1134
Merit: 1008
CEO of IOHK
Quote
I found many flaws in Go. I will find my link.

Go is an experimental language like Rust that has enormous potential and great vision. Also being backed by Google and used in Google products tells me that it's evolution is practically assured. But this actually really beautifully demonstrates the larger point.

Google has a core business model that generates enormous income and permits them to build glass and self-driving cars. Thus that freedom also allows them to embrace new development paradigms that will be better suited for the future realities of programming. We are a small company with a grand vision, but finite resources.

C++ is a horse that has built more than half of all the world's software and will continue to be in wide scale use for decades like C before it. I see not issue with developing our MVP and much of the source for the first few years in C++ and then embracing a gradual migration to other languages where it makes sense. We already have plans to be multilinguistic in respect to our plugin system allowing developers to use javascript.  

Another value C++ provides us is that its mastery is difficult. Any developer who can write good asynchronous C++ code is usually a talented and disciplined programmer. It tells us a lot about the individual behind the keyboard more so than something like Python or Ruby (god help us JS skills). Thus I enjoy it as a recruitment tool to gain a better sense of the skillsets of the people I'm working with.  

hero member
Activity: 770
Merit: 566
fractally
HELP.org, you and I are in complete agreement.

Unfortunately I detect a whiff (not too strong) of socialism-leaning slant to the designers of this proposal. I urge them to back away from the instances of "equality" (e.g. BitShares-wide, wide-area dividend pools) in their design (unless these can be economically justified) back to the time-preference (opportunity cost) return on capital as a model of economics. Capital != money. Capital != wealth. Those are proxies for capital, which is the human productivity.

The only known global optimization algorithm where the dynamic variables are not known a priori is simulated annealing (why ice formed with slow cooling has less cracks than if flash frozen), i.e. maximum degrees-of-freedom (i.e. independent actors) with many microsteps of the state machine (slow cooling).

Binding things together (pools, sharing, and centralization) is the antithesis of degrees-of-freedom, e.g. a train has less degrees-of-freedom of movement than an offroad motorcycle (although the train has more degrees-of-freedom in cargo capacity), c.f. my two relevant blogs:

http://unheresy.com/Information%20Is%20Alive.html#2nd_Law_of_Thermo
http://unheresy.com/The%20Universe.html#Entropic_derivation

Sometimes we tradeoff degrees-of-freedom in some facet in return for greater short-term efficiency (expediency) in another facet, e.g. closed source is more expedient but over the long-term it is less optimal.

Your 'socialism-leaning' detector is indeed very sensitive and I highly respect that.  I always aim to eliminate socialist principles where some people subsidize others and receive un-earned benefits at the expense of others who have un-earned losses.  So, I am going to not take offense at your comment implying a socialism-leaning slant because in my book that is like saying I have a whiff (not too strong) of wife-beating, anti-semantic, racist, commie slant.   I will instead redirect your (whiff of an ad hominem) attack on the designers (me) of this proposal to the proposal itself as you will never find anyone more committed to economic principles than me.  

Given that I am not perfect, I would like to explore the dividend and asset pooling as a form of socialism and eliminate anything that smells of it.

From what I can see the whiff of socialism is highlighted with these two simple trades:

Alice & Bob are paired short / long   at    1 BTS to 1 BitUSD
time passes... price changes...
Adam & Joe then pair short / long  at  1.1 BTS to 1 BitUSD

Both longs end up receiving the same dividends.  With Joe getting the short end of the stick because instead of getting dividends from 2.2 BTS he only gets dividends from 2.1 BTS... mean while Bob saw his dividend rate go up as a result of Adam and Joe's trade.  

Taken in isolation this looks like a redistribution of wealth in a socialist manner, but failure to do this would result in non-fungible assets.   The key being that not all BitUSD is traded short/long, but some people can just sell BitUSD for BitShares without creating a new short position.  This fungibility, divisibility, and merge-ability is a very important aspect of an asset that is being traded.

There is another way of looking at this same deal between Alice, Bob, Adam and Joe.    The price of BitUSD went up and therefore the dividends earned need to adjust to keep a the same relative rate of return.    I also assume that people are constantly rolling over their positions and therefore the average 'margin' should never deviate much from from 1.9 to 2.1 except in extreme volatility.   Instead of viewing it as 2 parties, view this system as 3 parties and I think the socialism smell disappears.  The third party is the exchange itself, which absent a block chain, would be a trusted 3rd party.  

The exchange is the one providing the brokerage service that enables Adam to 'borrow' BitUSD to sell to Joe.   The exchange charges Adam a fee to borrow BitUSD, the dividends on his collateral.  This is a simple market transaction and not socialist at all.   On the other side coin is Joe.  Joe is simply an owner if BitUSD which is issued by the exchange at a variable interest rate.   Joe and Adam are both trading in the exchanges asset.  One is paying interest to borrow it, the other is receiving 'interest' to lend it.   The interest rate is determined by how well capitalized the exchange is.  Thus no socialism at all.







  
hero member
Activity: 518
Merit: 521
Well you have piqued my interest in finding out about Scala but I think that after more than 15 years of C++ programming I am probably not the right person to become a convert.

Grin

(maybe we can end the OT language stuff now and get back to what I think could be a very interesting project)

Allow me one more transgression on OT.

Scala is much more concise (lots of boilerplate you don't need to write), even on common patterns. For an example of more high-end pattern, see the convoluted C++ templates required to emulate higher-kinds. An important use case of higher-kinds is concisely explained on this page.

Higher-kinds are all about code reuse, which is very important if we want to build a lot of varied s/w faster and more correctly (less bugs), but that is probably going to be difficult for you to get a mental picture initially. In practice, it is very elegant once you play around with it.

The conciseness of Scala is not hinged only on such an esoteric concept of higher-kinds.

Guys, language choice is a holy war and not productive debate for this thread.    All I will say on the subject is that making asynchronous applications easy to read and develop is hard. Designing software that can handle the number of async connections, encryption demands, database demands, and memory demands of a block-chain that is running at full capacity (1 MB of trx every 5 minutes) with the ambitious goal of operating in the background as an always-on app like your email client means that picking a language with a lot of overhead would be enough to push us over the threshold that is ambitious to achieve even with optimized with C++.

Scala (under TypeSafe) is especially targeting this with their Akka library. Twitter uses Scala because it scales better to such real-time, asynchronous needs.

Besides, it is well known that profiling is and hand-coding only 5 - 15% of your application in C/C++ is a more correct and efficient paradigm than unnecessarily writing the entire uncritical sections of the program (usually the majority) in low-level code (C++ is low-level from my stance now).

On language shootout tests Java and Scala are usually within 2 - 3X of C/C++ speed, but this doesn't matter for most of your code. Only a few sections of your code are the limiting factor.

Whereas, being much more productive with the bulk of your coding is the big win of high-level semantic language programming.

Fact of the matter is, native C++ apps with Qt provide a better user experience than apps built with a host of other languages where your cross-platform support is limited by the availability of a runtime environment.   Runtime environments represent a source of bugs and security holes that are unacceptable for this application.

Does Java (JVM) not have the necessary runtimes, or all them inferior to Qt?

Even if you assume all of these things are a wash, as the primary developer C++ is the only option for the core code because I can write the best code in C++.  THe core components can be compiled into a library and then provide bindings to any language.

Agreed the languages preferred by the core developer(s) is crucial. I made that point also before reading your post.

And yes one could write portions in Scala/Java and the core in C/C++. You probably know is best practice to put an API between your core library and the GUI code any way (even if you use C++ for both). Then anyone could code another GUI in any language they want and call into your native code API.

If you think that Scala is so much faster to develop in, then you should be able to catch up to the work I have done in the past 6 weeks within a couple of weeks.   I would gladly work with you to define an open over-the-wire spec and if you really can get the kind of improvements you are talking about and can catch up then that would be great.  In my experience though, those types of gains are mostly on paper.

I am too slow on domain specific knowledge w.r.t. this field. I have the big picture, I am a good coder, and I am good with details, but I haven't been in this field long enough, so my domain specific gap exists. I learn fast, but not fast enough to catch up with you if you are already coding.

I may be interested to contribute to a C++ code if it is 100% modularized by an API away from the GUI and other support code. So then I could reuse it, if I decide create a Scala version.

Quote
Scala fits that bill better than C++ if we are evaluating purely on the productivity of an expert Scala programmer vs. an expert C++ programmer.

However, we have to factor in there are a lot more C++ programmers than Scala programmers. And the learning curve for those who don't know Scala.

Yet more programmers does not always trump the quality of the best few programmers

I'm most comfortable with python and Haskell. I think everyone has a pet language and honestly If I could choose any language for this project, then I'd choose Go: https://en.wikipedia.org/wiki/Go_(programming_language). I've used Scala and I actually met Martin Odersky while at a conference in Switzerland. I really believe Scala is an amazing language and I'd highly encourage anyone interested to take Martin's course on Coursera: https://www.coursera.org/course/progfun.

But here's the reality, I'm a CEO and we are running a business with timetables and talent pools. Daniel, and others on the project are experts developing in C++ all with over ten years of experience. It's my job to best use the resources I have at hand and the community has at its disposal. If we choose C++, then we can write code from day 1 and it will be solid, secure code conforming with the best practices of software engineering. If we choose a new language, then we have to spend resources learning it. I just can't justify the months it will take to migrate.

Agreed. Understood. That is why I mentioned those other factors to consider.

I found many flaws in Go. I will find my link.
legendary
Activity: 1134
Merit: 1008
CEO of IOHK
Quote
Scala fits that bill better than C++ if we are evaluating purely on the productivity of an expert Scala programmer vs. an expert C++ programmer.

However, we have to factor in there are a lot more C++ programmers than Scala programmers. And the learning curve for those who don't know Scala.

Yet more programmers does not always trump the quality of the best few programmers

I'm most comfortable with python and Haskell. I think everyone has a pet language and honestly If I could choose any language for this project, then I'd choose Go: https://en.wikipedia.org/wiki/Go_(programming_language). I've used Scala and I actually met Martin Odersky while at a conference in Switzerland. I really believe Scala is an amazing language and I'd highly encourage anyone interested to take Martin's course on Coursera: https://www.coursera.org/course/progfun.

But here's the reality, I'm a CEO and we are running a business with timetables and talent pools. Daniel, and others on the project are experts developing in C++ all with over ten years of experience. It's my job to best use the resources I have at hand and the community has at its disposal. If we choose C++, then we can write code from day 1 and it will be solid, secure code conforming with the best practices of software engineering. If we choose a new language, then we have to spend resources learning it. I just can't justify the months it will take to migrate.
hero member
Activity: 770
Merit: 566
fractally
Btw, I think I may have already solved the level playing field for GPU/ASIC-resistant PoW (some details buried in my posts, no code written yet). I see you are coming closer to my ideas on that since the astute (obviously very intelligent) core Bitcoin developer Gregory Maxwell challenged you.

I would love to hear what you have to offer in this area.
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
I think the domain squatting problem is an interesting one - few (apart from Aussies) would know about the whole Burger King vs. Hungry Jacks issue (someone incorporated a company called Burger King in Australia before the USA chain tried to do so).

Strangely enough even after "Hungry Jacks" finally got back its name ("Burger King") in Australia - it failed as the name "Hungry Jacks" had become more popular (so they closed down the one and only "Burger King" in Melbourne only about a year after opening it and just continued under the name "Hungry Jacks").

This was some years back though so am not sure if they have managed to change the public perception since then but it does show that a name is really only as important as the publicity that surrounds it (as an Aussie I hadn't even *heard* of the name Burger King until I learned about the legal case and didn't even initially know that "Hungry Jacks" == "Burger King" as I am pretty sure many other Aussies would also not have known).
Pages:
Jump to: