In Darwin’s evolutionary theory, the concept of survival of the fittest stands for the phenomenon that the traits of life forms that have the biggest reproductive success will, over time, become prevailing, while other traits disappear.
I would like to adopt this framework for the age of algorithms. On the leading tech platforms such as Facebook, YouTube, Twitter, Instagram, LinkedIn and TikTok (gotta be inclusive here), algorithms play a key role in selecting what information people get to see, and who gets to be seen. Since these services’ business models are centered around advertising, their algorithms are optimized for making people spend as much time as possible on them.
Thanks to the vast amounts of usage data generated by billions of daily users as well as the ever-improving capabilities of machine learning (or “Artificial Intelligence”), one has to expect this optimization process to eventually become highly effective, if not truly perfect.
The result, then, would be something akin to an “algorithmic survival of the fittest”. The algorithms will reward those characteristics of information and traits of people who convey information — e.g. journalists, Instagram influencers, YouTubers, traditional celebrities, political pundits, Twitter opinion leaders — with reach and monetary incentives that generate the biggest attention and thus ad revenue.
This causes a feedback loop in which creators and information curators are observing and learning which type and style of information the algorithms want, followed by an increased supply of that kind of material. Then the whole cycle starts again.
While this is happening, algorithms are shaping the habitual patterns and minds of producers and consumers of that information alike. Over time, producers and consumers become what and who the algorithms “want” them to be. Technically of course it is not an actual “want”, but a consequence of their task to optimize for attention and user engagement.
For example, as a creator, if you realize that the algorithms reward you for screaming, being angry, being outraged, being controversial, or for actively behaving unintelligent, this is what you might keep doing. After a while, due to Neuroplasticity, this will have an actual impact on your brain structure, your mental models and who you are as a person. Even if it is a simplified way of putting it, you might become that angry, outraged, controversial, unintelligent-behaving person that the algorithm trained you to be (if you chose that path initially).
Another example: If the algorithms figure out that feeding you with ever more extreme ideological content makes you stick around longer and longer, they’ll keep doing that, casually turning you into a full-blown radical. It’s worth mentioning here that as with the original evolutionary theory, algorithmic survival of the fittest is not about individual survival in the physical world. It is about survival of certain traits that serve the algorithms’ needs. If a person that got radicalized on social media gets killed while committing a mass shooting, this doesn’t go against the algorithms’ interest. On the contrary: Perversely, algorithms will then leverage the increased polarization of the society and radicalization of individuals that follows the shooting for another round of maximizing people’s attention. Where do many people go after major incidents to express their sorrow, anger, and to look for information? Social media, of course.
As an individual and as a society, noticing how algorithms are taking over the minds while it happens is as hard as noticing your hair growing when you have a daily look in the mirror.
One day you see yourself in the mirror and realize “I need a haircut. How could I even let my hair get that long??” When it comes to the power of algorithms over us, we might already be way past that moment.
======= Sign up for my weekly email, loaded with great things to read about the digital world.
Algorithmic survival of the fittest was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
For a recent series of Java interviews, I prepared a question on how to reverse an immutable list. I figured out that the problem was not that straightforward for most of the candidates. Hence, I have decided to share it.
We have to implement the following interface to reverse an input list:
As an example of the expected result:
Input: 1, 2, 3 Output: 3, 2, 1
The only constraint is that the input list is immutable.
The current implementation is the following:
This solution will produce the expected result. Yet, from a performance perspective, there are few problems. Can you spot them?
Would you have implemented it in a different way?
We consider accessing a given index of the input list is done in a constant time.
As a basis, running this function on Oracle JDK 9 and an Intel Core i7–7700 (3.6 GHz) with1M elements results in the following response time:
problem avgt 403.000 us/op
First of all, let’s check the way to iterate on the input list. As we know, there are different alternatives to the classic for.
From Java 5, using the for-each loop:
Is it really faster? In Effective Java, Joshua Block says:
[The for-each loop] may offer a slight performance advantage over an ordinary for loop in some circumstances, as it computes the limit of the array index only once. While you can do this by hand, programmers don’t always do so.
Said differently, if we already pre-compute the list size (as we did in the initial implementation), there should not be any difference with a classic for.
Another option from Java 8 is to use the Stream API:
Again, this does not offer any major performance advantage. Running a benchmark with the for-each and the stream solution is giving more or less the same results:
An ArrayList is a resizable-array implementation. Under the hood, it manages a capacity which is the size of the array used to store the elements.
Each ArrayList implementation has a growth policy which may vary depending on the JDK (for example, multiplying the capacity by 50% once the array is full).
If we want to get rid of this dynamic growth, we can just initialize the ArrayList with a given initial capacity. This is made possible as we already know the size of the output list.
This is done this way:
Let’s check the results:
problem avgt 403.000 us/op initial-capacity avgt 403.000 us/op
Nothing really changed. How can we explain that?
Most likely, the runtime optimizations made by the JIT compiler leads to thinking that missing this initial capacity is somehow not that important. If we disable the warmup period, we can notice the response time difference between both tests is way more important.
Let’s take a closer look at the way we insert elements in the produced ArrayList:
The time complexity of this simple expression is linear, not constant. Indeed, inserting an element at the position zero of an ArrayList requires to shift all the elements to the right.
This is the main problem of the implementation. So what are the different options?
The first option is to use a data structure having a constant time to insert an element at position zero. In Java, we can use a LinkedList as it manages a pointer on the first element.
Inserting at the first position is done using the method addFirst():
Any major improvement this time?
problem avgt 403.000 us/op linked-list avgt 541 us/op
Way better! 🍾
The second option is to keep an ArrayList structure and to insert the elements to the end (which is, this time, managed in a constant time complexity).
As a consequence, we have to iterate in the opposite order like this:
The response time is even smaller than with the LinkedList solution.
Actually, using a LinkedList adds a small overhead due to dynamic memory allocation (every element is wrapped in a node object). So, if we already know the size of the structure, it is obviously faster to use a structure like ArrayList.
Internal Array Copy
ArrayList is backed by an array. What if we were trying to copy this internal array and doing an in-place inversion of this copy?
The swap() function simply swaps two indexes from a given array.
There will be a tiny overhead when we will call get() as we need to process list.size() – 1 – index. In real life, it might be worth considering how the list will be used. If it is accessed very frequently, perhaps a copy would have been the best solution.
One last thing to mention. Some people tend to highlight that functional programming and immutability will always have a negative impact on the performance of an application. This statement cannot be generalized.
Actually, in our case, the best solution relies on the constraint of the problem itself.
Interview Question: Reversing an Immutable List in Java was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
In this series I explain how to use Mythril Classic to find and exploit security bugs in Ethereum smart contracts. The articles will cover basic principles and advanced techniques, such as testing security properties, proving invariants, analyzing multi-contract systems and auto-looting ETH from vulnerable contracts on the Ethereum network.
Mythril Classic — also known as the “Swiss army knife of smart contract security” — has lots of bells and whistles, but to use it effectively you need a basic understanding of the analysis techniques used. This article provides an overview of the most important concepts.
The first key step we usually recommend to new users is installing Mythril Classic. You should do this also in case you to want follow the examples in this article (if run into trouble installing, you can ask for help in our Discord support channel).
After successful installation the myth command line tool will be available on your system. Make sure you have version 0.19.7 or higher:
$ myth -V
Mythril version v0.19.7
The basic command for executing security analysis is-x / –fire-lasers:
$ myth -x $ myth --rpc RPC_OPTION -xa
This command runs a generic analysis that works reasonably well in most situations. Before we get ahead of ourselves though, let’s have a look at what is going on behind the scenes.
Multi-Transactional Symbolic Execution
Mythril Classic checks for security issues by running a custom implementation of the Ethereum Virtual Machine. The analysis process involves the following steps:
Obtain the contract bytecode by compiling a Solidity file or loading it from an Ethereum node;
Initialize the contract account state either by running the creation bytecode (if source code was provided) or by retrieving data from an Ethereum node on-demand;
Symbolically execute the code to explore all possible program states over n transactions, whereby n defaults to two but can be set to an arbitrary number;
Whenever an undesirable states is encountered (such as “the contract kills itself”), logically prove or disprove the reachability of those states given certain assumptions (e.g. “given the right inputs anybody can kill the contract“).
This type of analysis has a couple of advantages:
Vulnerabilities are reliably detected irrespective of their cause(s)(which could, for example, involve uninitialized state variables, integer overflows or exposed initialization functions) provided they are reachable within n transactions.
We can compute the input transactions required to reach the vulnerable states detected. This is useful not only to to determine the root cause of an issue, but also for auto-creating exploit transactions should one be so inclined.
With that out of the way, let’s try Mythril Classic on a smart contract exploitation challenge from CaptureTheEther. TokenSale is a simple smart contract that allows users to buy and sell tokens for the bargain price of 1 ETH. Here is the source code:
Working with code is easier than working with on-chain contract instances because that way Mythril can show you the the code responsible for each bug it finds. Copy/paste the code into a file called tokensale.sol and run the following command:
$ myth -mether_thief -x tokensale.sol
Note the use of the -m argument which accepts a comma-separated list of analysis modules to execute. Let’s have a closer look at a particularly useful module called Ether Thief.
Looting that precious ETH
As its name subtly foreshadows, the Ether Thief modulechecks for transaction sequences that extract ETH from the contract. Specifically, it looks for states that fulfill the following conditions:
A non-zero amount of ETH can be withdrawn from the contract;
The sender withdrawing the ETH is not the contract creator;
The amount of ETH withdrawn can be greater than the total amount previously paid into the contract by the same sender.
This is a pretty low-false-positive way of of spotting contracts that “leak” ETH to anonymous attackers. Let’s now unleash this module on the TokenSale contract:
$ myth -mether_thief -x tokensale.sol
==== Ether thief ==== SWC ID: 105 Type: Warning Contract: TokenSaleChallenge Function name: sell(uint256) PC address: 693
Users other than the contract creator can withdraw ETH from the contract account without previously having sent any ETH to it. This is likely to be vulnerability.
In file: tokensale.sol:25 msg.sender.transfer(numTokens * PRICE_PER_TOKEN)
Myhril claims that to have found an issue in the withdrawal function but the root cause is not immediately apparent. If you haven’t spotted the bug yet, take another good look at the code and try to figure out the attack.
As you have probably deduced there’s an integer overflow issue at play here. To exploit the issue you need to pass a very specific value to the buy() function. Don’t fire up your calculator just yet though, there’s some good news: Mythril can compute the correct input transactions for you automagically. All you need to do is add the –verbose-report flag:
The DEBUGGING INFORMATION section contains the two transactions computed by Ether Thief. A look at the call_value fields shows that no ETH is transferred to the contract by the sender. Let’s have a closer look at the calldata:
The first transaction contains the first four bytes of the function signature hash of buy(uint256 num_tokens) as well as an innocent-looking extra byte — 0x20 — which represents the leftmost byte of uint256 num_tokens (the remaining zeroes don’t have to be sent explicitly as the EVM will interpret uninitialized calldata as 0x00). The value passed to num_tokens works out to:
PRICE_PER_TOKEN is set to 1 Ether which corresponds to 1e18 wei. As it turns out, multiplying this amount with the value Mythril has computed fornumTokensresults in an integer overflow. More specifically, the result of the binary multiplication uint256(1e18) * uint256(numTokens) is zero — note that there are other input values that could be used here.
The require statement therefore passes and a large amount of tokens is credited on the sender’s account even though they’re not sending any ETH.
In transaction two, the illegitimate tokens are then sold in return for ETH (call to sell(uint256)). Because Mythril represents the contract balance symbolically it outputs some large value for numTokens. In reality, the attacker would pass a lower value corresponding to the actual number of ETH in the account.
If you haven’t done so already, now is the time to fire up Metamask and give the challenge a shot.
Configuring transaction count
An important concept to know when using Mythril Classic is transaction count. This variable specifies the number of transactions to be executed symbolically. The default value of two is sufficient for detecting many common bugs such as the integer overflows, uninitialized storage variables and misnamed constructors. However, a search that goes two transactions deep will not discover bugs that need three or more transactions to reach.
Unfortunately, because each transaction can have multiple valid final states, the space of states to explore grows exponentially with the number of transactions. Symbolically executing three transactions therefore takes significantly longer than executing two (we’re currently working on a way of optimizing the number of transactions executed within a predefined timeframe — I’ll update this article as soon as this becomes available).
To demonstrate this let’s have a look at another example. See if you can spot the security issue (beware of spoilers in the contract name):
This contract has a “backdoor” in it that allows anyone knowing the secret password to take it over (but as we know, private state variables aren’t really secret — the only difference is that the solc doesn’t generate an accessor function for them).
Another popular Mythril Classic module is Suicide. This module checks for transactions that, if sent by anyone other than the contract creator, will “accidentally” kill the contract. Running the Suicide moduleon the code above returns the following output:
$ myth -msuicide -x killme.sol
The analysis was completed successfully. No issues were detected.
Mythril appears to overlook the vulnerability. The reason for this is that a minimum of three transactions is needed to kill the contract: The sender must provide the correct password to activatePassword(bytes11 password), call pwnContract() to become the owner, and finally call kill() to trigger the suicide.
Let’s see what happens if we increase the number of transactions executed using the -t / –transaction-count argument:
This time the issue was detected and we get a sequence of three transactions. Inspecting the calldata more closely reveals the names and arguments of the functions being called:
Mythril Classic’s Ether Thief and Suicide modules detect security bugs that allow attackers to steal from, and even kill, poor innocent smart contracts. When the–verbose-report flag is added, Mythril will output the input transaction(s) needed to trigger each bug detected. Increasing transaction count helps Mythril detect more bugs but also increases execution time exponentially.
Part 2 is probably coming soon. Join our growing Discord community to stay up-to-date, get support and discuss things related to Ethereum security.
Practical Smart Contract Security Analysis and Exploitation— Part 1 was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
To own something is to have the rights (1) to determine exclusively how it is used, (2) to appropriate exclusively any income or other benefits it yields, and (3) to transfer the foregoing rights to others by sale, gift, or bequest. In this light, it is clear that no one owns a culture, and hence no one may legitimately seek state violence for the defense of such asserted property rights.
One may have preferences about culture. One may have affections for or aversions to a culture or particular elements of a culture. But such preferences do not entail any rights of ownership. Moreover, all cultures are constantly changing to a greater or lesser degree by spontaneous, decentralized processes, including interaction with other cultures. Such interaction has always been the case except for the cultures of people completely isolated from the rest of the world.
To treat the arrival of new members of society who live to some degree in accordance with different cultures as if these persons were “invaders” who threaten to destroy one’s culture is simultaneously to evince little faith in the attractiveness and strength of one’s culture and to seek its defense as the enforcement of property rights where no such rights exist.
Robert Higgs is Senior Fellow in Political Economy at the Independent Institute, author or editor of over fourteen Independent books, and Editor at Large of Independent’s quarterly journal The Independent Review.
Naturally, all companies suffer from various crises. No matter whether it is a small or big company, it always requires its leaders to master strong crisis management skills; otherwise, it is fighting a losing battle.
Evidence shows that mismanaged crises are usually caused by poorly educated leaders and lead to serious consequences. Businesses run by well-educated skilled entrepreneurs handle crises more effectively and are more likely to fully recover from them in no time.
Business schools offer both current and prospective entrepreneurs numerous sophisticated tools for managing crisis of any nature, such as personnel, systematic, and contextual ones, with positive and calm attitude. Except for those tools, students learn many other things without which managing a successful business is hard, if not impossible.
Why It is Recommended to Have a Diploma in Business.
Even though many believe that education is of no use when it comes to business, the statistics show the opposite. In fact, one may not need specific expertise and skills to start a company, but running it successfully and managing all of those crises require more than just a secondary education. Even experienced individuals may fail to run a profitable business and thus should earn a relevant diploma. Below, we consider the things an average b-school gives its students.
Excellent Communication Skills.
Interacting with partners and clients properly is of a great importance for any business. Applying to a b-school means that upon graduation students will be able to communicate with an audience on the level. For instance, marketing classes will teach them how to fix a consumer trust crisis, while corporate communication ones will contribute to their presentation skills.
Well-Developed Sales Skills.
These skills have much in common with communication ones. Practicing sales skills will allow students to increase their success rate later on. A business education is what one needs to create and implement effective sales techniques that suit a particular area. If you decide on applying to a b-school but are not sure about your writing skills, then obtain an MBA essay editing service to ensure that your application paper has no mistakes.
Knowledge of How to Manage Finances.
To avoid a financial crisis, a business owner should have enhanced financial management skills; otherwise, their companies are likely to use resources ineffectively. B-schools teach prospective business owners how to handle their companies’ finances, follow government regulations, and make their companies as profitable as possible.
Most b-school students plan to organize their own companies and thus are interested in co-founders to cooperate with. Therefore, all prospective or current entrepreneurs would be glad to meet and interact with different individuals who share their career goals.
In a b-school, one can also master skills required for selecting co-founders and making good working connections. There, students learn how to manage others and build organizational culture properly.
Many current and prospective entrepreneurs go to b-schools hoping to come to know many people who can one day lend them a helping hand. There are students as well as educators with different backgrounds. Therefore, if you want to develop software but come from the financial industry, then you can try your fate and look for someone with the relevant background to support your idea.
There is no other place for establishing reliable business relations than b-schools as they give a unique chance to interact with a hand-picked group of students arriving from different corners of the world who are focused on business. Through these connections, you will always have someone to ask for advice on any stage of your business lifecycle.
Many Specialized Courses.
Those interested in particular topics, such as international business, real estate, business ethics, and so forth, can choose among narrow-focused programs or courses. All they have to do is to contact their local colleges and universities to see what kind of options they offer. No matter the location and size of an organization, what its owner really needs is to take crisis management courses.
Fundamentals for a Startup.
All of us have many great ideas, but not all can bring them to life. This is mainly because of that knowledge gap in business fundamentals. Therefore, it is of a great importance to apply in a b-school to get that foundation for running a sound company. Various classes in accounting, operations, management, and so forth don’t make you an expert in all those areas but will definitely help you to get a deep insight into the most essential principles concerning business. Without this expertise, you will not be able to manage your organization effectively and thus are likely to face many crises posing risk to everything you have.
In conclusion, business education is a very good tool all should obtain as it helps to cope with unpleasant situations which happen in every company sooner or later. Along with crisis management skills, b-schools have other things to offer: they provide basic know-how and the foundation that most lack to set up and run a startup business productively.
Running a business with your spouse can be very exciting. After all, who else would you want to build a company with than the person you vowed to spend forever? Working hand in hand with your spouse can teach you a lot—how to communicate, play to each other’s strengths, and resolve conflict, which can make you better partners in business and in marriage.
That isn’t to say couples in business are smiles and rainbows all the time. Financial issues, disagreements, and not being able to draw the line between work and home life can mean disaster for entrepreneurial partnerships. To make sure your dream partnership doesn’t turn into a nightmare, here’s are some tips on how to keep your business from harming your marriage:
1. Make your partner your number one
Couples need to make each other their number one client if they are running a business together, and one way to do this is by spending quality time together, focusing on the physical connection. The release of the oxytocin hormone released during physical intimacy and other forms of touch can have a positive impact on a marriage, such as improving trust, increasing marital satisfaction, and boosting monogamy—just to name a few.
Maintaining an emotional connection to your spouse is essential if you’re going to run a business together. Studies show the longer a couple is together, the more likely they are to emphasize the importance of emotional intimacy.
Furthermore, in a study about what makes a lasting marriage, social issues lecturer and writer Francine Klagsbrun reported eight characteristics of long-married couples that account for their success. Of these characteristics, being able to change and adapt to new circumstances, trusting each other, and enjoying one another’s company all rated high on the list. Couples who spend quality time together building their emotional and physical connection are more likely to view one another as friends as well as lovers.
2. Practice the art of communication
If you don’t communicate openly and honestly with your spouse, neither of you will ever have any idea what’s going on in the relationship. Running a business with your spouse can bring up many emotional and financial issues, which makes it even more important to be open and honest when you communicate.
Couples must learn to resolve conflicts fairly. This involves a multistep process of identifying a problem, listening carefully to a partner’s needs and opinions, and discussing how to solve the issue. Arguments should never take place while at work, nor be an excuse for couples to berate one another.
Open communication is a two-way street. Both partners must be willing to talk about any molehills before they become mountains.
3. Be professional
When you work alongside your spouse, the line between business partner and “snuggle buddy” can become more than a little blurred, so for the sake of the company and your marriage, it’s important to keep things professional.
There are things we might say to our spouse that we would never say to a colleague. This can come in handy when you’re in business with your husband or wife. For example, you’ll be able to express yourself more openly with your partner than you would with an employee, which can make accomplishing tasks much more efficient.
However, such familiarity can work against couples. They may forgo manners, argue in public, talk over one another, take personal calls during meetings, or use casual or inappropriate language in a work setting. Letting personal disagreements interfere with work can occur, so while working together doesn’t mean you should be cold or distant with each other, you should be mindful of how you are behaving in a work setting. Your staff also will appreciate your professional behavior in the workplace.
Other Articles From AllBusiness.com:
The Complete 35-Step Guide for Entrepreneurs Starting a Business
25 Frequently Asked Questions on Starting a Business
50 Questions Angel Investors Will Ask Entrepreneurs
17 Key Lessons for Entrepreneurs Starting a Business
4. Talk about your finances regularly
Studies show that couples are more likely to have repeated arguments about financial issues than any other issue. This is no surprise, as starting a business can be a costly endeavor, and with both partners working at the same job, it can be easy for money to be tight.
It almost goes without saying that money worries can cause stress, anxiety, and depression. And these are three circumstances that can have a devastating effect on one’s mental health and marital happiness.
Couples should sit down together and properly discuss a business budget and a home budget. This conversation should include how to handle debts and bills, taking home a paycheck, and how to sustain the household during the business startup period.
Setting small financial goals is a great way for couples to get on the same page about money. Married partners should check in regularly regarding their financial situation to see how well they are doing.
5. Don’t talk about work at home
The flexible schedule of an entrepreneur means that oftentimes a couple may end up taking work home with them. It’s natural for partners to want to talk about their workday together, and even more so when they work for the same company. However, it is important that discussions of work do not dominate the conversation.
Couples should agree to not talk about work for more than a set number of minutes after they are “off the clock.” This will allow them more time to reconnect on a romantic level and spend quality time together as a couple—not as business partners.
To make a business partnership with a spouse work, each partner should make their relationship a priority and communicate regularly. Also, taking some well-deserved time for themselves, discussing finances, and leaving work at the door are all essential steps for maintaining a healthy marriage and business partnership.
RELATED: 10 Tips on Starting a Home-Based Business With Your Spouse
About the Author
Post by:Rachael Pace
Rachael Pace is a relationship expert with years of experience training and helping couples. Rachael has helped countless individuals and organizations around the world, offering effective and efficient solutions for healthy and successful relationships. She is a featured writer for Marriage.com, a reliable resource to support healthy, happy marriages.
Connect with me on Facebook, Twitter and LinkedIn.
The post 5 Ways to Protect Your Marriage When Starting a Business With Your Spouse appeared first on AllBusiness.com
The post 5 Ways to Protect Your Marriage When Starting a Business With Your Spouse appeared first on AllBusiness.com. Click for more information about Guest Post.
TLDR: Money is a tool for recording value exchanged among economic participants. One way to record such value is in a digital ledger. Bitcoin is the first digital ledger to figure out how to prevent the State from destroying it. Bitcoin’s deflationary monetary policy provides an alternative to state-fiat money’s inflationary paradigm.
What is money?
Money is art. Money attempts to transport one person’s subjective experience into another’s mind: the experience of valuing something. However imperfectly, money lets one person answer another: How much is this worth to you?
Money is true speech. The payment of money for some good is a claim about how much I value that good. It cannot be faked because the act of payment requires a commensurate sacrifice of value. Any business trying to charge for a product understands the difference between a user’s white lie “I value this” and the customer’s true claim “I value this” proven with payment.
Money is a measuring tool. It measures the value exchanged between economic participants. This measurement can be performed using physical items: stones, shells, beads, or coins, each acting as a mnemonic device for tracking the amount of value exchanged. Alternatively, the measurement can be written down: scratches on a stone tablet, ink on parchment, or pixels on a screen, in the case of digital money.
Money is information. Our USD account balances are simply numbers recorded in a bank database by those in charge of our financial infrastructure. This written wealth has no physical manifestation. Our acceptance of these numbers as a valid measure of exchanged wealth is a collective fantasy. A fantasy incentivized by our common economic and security interests, and, if those fail, the threat of state violence.
If we accept that money can be implemented via a record of transactions kept among like-minded people, then it follows that any group of people is capable of starting their own.
Simple Coin — SMP
Let’s create our own money right now…
SIMPLE COIN LEDGER
From Genesis to Reader: 50
From Genesis to Author: 50
Above we’ve recorded Transaction 1 and Transaction 2 in which we create 50 SMP “from Genesis” for each of us, meaning we simply write them into existence. We can do this as long as the users of SMP coin (you and I) agree that this is a legitimate way to distribute our new money.
Let’s use it. Let me buy some pizza from you for 25 SMP. Below is the updated SMP Coin ledger reflecting our transaction history after the pizza purchase.
SIMPLE COIN LEDGER
From Genesis to Reader: 50
From Genesis to Author: 50
From Author to Reader: 25
Transaction 3 spends 25 of my SMP coins, sending them to you the Reader, although I’m still waiting for my pizza…
An interesting point to note here is that this ledger does not keep a record of account balances, but only records the transaction history. The account balances can be derived from this transaction history. For example, after my pizza purchase, my (Author) account balance is 50–25 = 25, while your account balance (Reader) is 50 + 25 = 75.
Many may find this example frivolous, but such a record is sufficient to maintain a primitive money. To be taken more seriously, the first challenge for such a money would be to grow its network. As the number of economic participants in the network increases so would its value. As the value increases, adversaries would become incentivized to steal funds, attempt to control its ledger, or in the case of a state adversary like the US government, to shut down the upstart competitor.
This was ultimately the fate of all previous attempts to launch a non-state digital currency including e-gold and Liberty Reserve. Many were successful in growing their networks large enough to draw the ire of the US government, who proceeded to shut down the companies running the ledgers. These companies succeeded in solving the marketing challenges, but no one could overcome the security challenges necessary for a digital money to survive the scrutiny of a state-level actor… until Bitcoin.
There is no such thing as “a bitcoin”. It doesn’t exist in the physical world, and there is no single digital file or files that you can point to and say this file is my bitcoin. What bitcoin really is… is a history of transactions “written” in a digital ledger, in essence, identical to the primitive SMP coin ledger written above.
The difference between Bitcoin, my SMP ledger, and other private-money ledgers, disappeared by the US Government, is that no single entity is entrusted to maintain the security and validity of the Bitcoin ledger, making it extremely difficult to stop. This is what is meant when we say that Bitcoin is a decentralized currency. Bitcoin’s major innovation was the ability to maintain an immutable written ledger of economic transactions communally, without having to trust a central authority to secure or validate it.
In light of this truth, much of the criticism we hear directed at Bitcoin, that it’s slower than other digital money, that transaction fees are too expensive, are largely irrelevant as these are all explicit trade-offs consciously made to achieve Bitcoin’s primary objective: a decentralized, uncensorable, written record of transactions, impervious to even state-level adversaries.
Over time, Bitcoin will iterate to address these weaknesses on top of its foundation of impenetrable security, while competitors won’t be able to work backwards to address the weaker security assumptions on which they are premised.
Bitcoin is Freedom
What does a decentralized money, not controlled by anyone give us? The ability to run an experiment about whether inflationary or deflationary monetary policy is best, and to have different monetary regimes compete against each other to see which one works best for humanity.
There is no one to manage Bitcoin’s monetary policy, or to abuse it. Its hard limit of 21 million bitcoin is coded into the software protocol which defines it. This monetary paradigm provides a free market alternative to the inflationary state-backed fiat money we’ve grown up with. Because states can’t shut down the Bitcoin ledger, they will have to compete with it, and either do a better job to maintain their user base, or watch Bitcoin adopted as a superior money.
Bitcoin bulls argue that Inflationary monetary systems discourage savings, inflate asset prices, and distort the true costs of wars and unbridled consumption, and that deflationary sound money is the answer. Because of Bitcoin’s decentralization, we finally have a currency which has met both the marketing, and security challenges necessary to survive, and give us a chance to find out if they’re right.
Originally published at cryptograf.io on November 13, 2018.
Bitcoin Is Money was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
Going from idea to MVP is both exciting and bewildering at the same time. A quick search of the interwebs reveals plenty of info about tech stacks, funding, a whole industry of motivational charlatans for startups. But, there’s precious little about the process of finding and working with an external development partner.
It really hit me how absurd the whole process is when a fellow founder mentioned that he’d reached out to 150 agencies to build his startup’s MVP. He settled on one and was satisfied with the result. Nonetheless, the whole ordeal created more questions than it answered. Proposals varied by orders of magnitude.
I don’t have a silver bullet, but here are a few points to help you out as you look for a team to develop your MVP. With a bit of work on your side, you can get much more accurate estimates and save yourself a lot of time and trouble in the long run.
Describe your MVP in concrete terms
Abstract ideas like ‘wouldn’t it be cool to make the Uber of cat toenail trimmers’ are great ways to chat over a few beers, but nobody can give you estimate from that. Such a description is a good place to start for an elevator pitch. Engineers, on the other hand, need to know what you’d like your app to do.
Instead, say that you are looking for an app that lets a client create an account and search a database of cat toenail trimmer — who have their own accounts. Additionally, there is an admin account that handles disputes and customer service. Payment will be in-app using Stripe.
That’s enough to give you a ballpark figure that should be within 30% or so of the final estimate.
Think in user stories
When you create personae and user stories, it’s much easier to uncover other features you need.
As the owner of a cat with super long toenails I can find a feline pedicurist based on location, rating, services offered and price.
Showing this to an engineer lets them know that your MVP needs a map integration, reviews and search filters for cat owners. For feline pedicurists there needs to be the ability to edit profiles based on price and services offered.
Know your market
Figure out how your clients are going to access your app. Is mobile a priority or do you predict more desktop users? Is iOS or Android dominant in your market, what about older browsers?
This way an agency can present tech solutions that meet your business needs rather than vice versa.
Racing to the bottom with price
It’s tempting to scrape the bottom of the barrel and go with someone on a freelance site offering to work for $10 an hour. You can win the lottery and get a great engineer, but let’s be realistic.
There are plenty of horror stories with agencies telling clients whatever they want to hear at price that’s too good to be true. These stories don’t have happy endings.
You likely don’t need the most expensive coders on the market for your MVP. Try to balance quality and price. If you cut too many corners at the start, adding new features and scaling is going to be an expensive nightmare.
Be upfront with how you’d like to communicate with the team that’s building your MVP. My experience shows that having a single point of contact for most communication is the easiest. Nonetheless, it’s also important that everyone on the team is visible to the client.
If you’re from a direct and cut to the chase culture, check that the team you hire shares the same values. Language is also a dealbreaker. Be upfront that you need to check the team’s English (or whatever your working language is going to be).
Nobody can do everything
Even the best agency can’t handle every kind of project. If the answer to every question you ask is yes, that should give you pause. If an agency seems to have no core area of expertise and chases after buzzwords like five-year-olds playing football — watch out.
Have a ballpark budget and timeframe
Conventional wisdom dictates that you hide your budget from vendors. In practice, I don’t really see the point of this. If an agency only takes on projects over $50k, but you’re looking to build a $15k MVP it’s better to realize this right away.
The same goes for start dates and timelines. Be upfront about what’s flexible and what’s not.
How to evaluate a proposal
A proposal needs to have a detailed breakdown of how your MVP is going to be built. This is usually illustrated in weeks or sprints for each key feature. Ignore estimates that don’t do this.
Murphy’s never far from any project, and giving perfect cost and time estimates before a single line of code’s been written is tricky. Nonetheless, detailed scoping minimizes risk and gives a solid baseline.
This also makes it much easier to compare proposals. If two agencies have provided nearly identical scoping, comparing prices is much less of a black box.
And the winner is…
If you organize your app idea into user stories and features, you can get more accurate estimate faster. A bit of extra work at this stage helps with business decisions that pay dividends down the road when it’s time to add new features and scale.
Originally posted on eTeam’s blog.
How to Get a More Accurate MVP Estimates was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
AI, blockchain, and the value of being human with Singularity University’s Reese Jones and Project Shivom’s Henry Ines at Blockchain Economic Forum
Martine Paris / Via Martine Paris
What does the world’s first decentralized AI humanoid, Sophia the Robot, have to do with owning the data that makes us human?
“A lot!” said Henry Ines, Chief Innovation Officer of Shivom, in his interview with me at the recent Blockchain Economic Forum in San Francisco. Ines, a former DFJ DragonFund partner, just completed a $35 million ICO to fund the building of Shivom’s genomics hub and is now partnering with the makers of Sophia’s brain, SingularityNET, to use AI-driven analytics and machine learning tools to power the dawn of precision medicine.
“A Tylenol that’s right for you might be different than a Tylenol that’s right for me, that’s why the future of medicine is one that can be customized specifically for the biology of individual patients. To get there, researchers need to mine vast data sets. This is why Big Pharma pays millions of dollars each year to companies like 23andMe, to access the data that people donate when they mail in their saliva swabs to find out about their ancestry.”
“At the same time, there are low income, indigenous populations that have zero social capital yet tremendous intrinsic value when it comes to their own genetic makeup. Their genes may hold the key to solving some diseases out there, so we have come up with a way for them to own and profit from their genetic data by logging it onto the blockchain ledger and passing payment directly onto the donor.”
I asked how Shivom is planning for mass adoption when most people don’t yet understand blockchain, particularly in lesser developed countries where some don’t even have a device to manage wallets and keys.
“Yes, UI/UX is very important. We’re trying to make our platform as simple as possible as most patients are pre-occupied with their wellness, not blockchain. Users can buy a physical kit with fiat or simply upload their 23andMe report. Their data is encrypted, anonymized and stored on the backend, and the only thing stored onchain is their HashID, GlobalID and any transactions protected by cryptokeys. Users have complete control of who can access and license their data, and payment might be made on a debit card with tokens which can be redeemed for fiat or healthcare services. For places like India, we’re still working out the model.”
Blockchain technology allowing us to own and profit by our own data is a huge paradigm shift. Most people are so used to giving it away that one can only imagine the cultural ramifications resulting from biological data becoming part of the gig economy.
Martine Paris / Via Martine Paris
I had a chance to speak further about this with Reese Jones, Associate Founder and Board Trustee at Singularity University who was keynoting the conference on the evolution life and data and the role of AI and blockchain.
Reflecting on Sophia, he shared with me his insights on the coming singularity, the point in time in which computers are expected to become smarter than people and runaway technological growth will make things unpredictable with unimaginable consequences.
“We are learning more of what it means to be human, and respond in a human-like way everyday, and technology is getting better at representing itself as sentient, but just when and how AI will ever become a species risk is hotly debated. At the Long Now Foundation, there is a Long Bet between Ray Kurzweil, co-founder of Singularity University, and Mitch Kapor, co-founder of the Electronic Frontier Foundation, that by 2029 no computer or machine intelligence will have passed the Turing Test.”
If you’ve seen Bladerunner then you know that the Turing Test is an interview in which a subject is asked a series of questions to determine whether it is human. Kurzweil who is the mastermind behind deep learning at Google believes strongly that advances in algorithms that drive data acquisition and analysis will be enough to pass the test, but Kapor believes the computer will never be able to fake tacit human experiences that are nuanced and cannot be explicitly expressed or written down.
For anyone who watched Google Assistant call a restaurant at Google IO 2018 back in May, the conversational AI was pretty impressive, certainly had the intonation of a human voice. Not sure where I’d place my bet but certainly looking forward to meeting Sophia in her next iteration.
Will The Real Robot Please Stand Up was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.
There once was a time when companies were concerned about letting their employees connect to their corporate network from home. Many articles were written on this topic, discussing the risks and how to create policies that mitigate them. This is something that still hasn’t changed today. In fact, the only real change is that employees are now using their personal laptops, tablets, wearables, and smartphones to make these connections. Experts believe the number of these devices will continue to grow exponentially, which means employees’ personal data will grow more mixed in with the business data on these devices. As an organization, you must take steps to protect everyone who’s involved here.
Determining Your Risks
The first step you must take is to perform a high-level risk evaluation. During this evaluation you should ask:
· What types of devices are your employees using (e.g. computing, storage, smart) for work activities? Where are they being used? What security controls are also used there?
· How many of the devices are owned by the business and how many are owned by its employees? How can information be removed from employee-owned devices? (This is especially important when employees no longer work for your business.)
· What devices are your business using to collect some type of data?
· What types of devices are being used to store information for your business?
· What mobile apps are being used? Once you know this: What information are they collecting? Who’s this information shared with? Who has access to all your business’ data?
· What type of training and awareness have you set up for your employees? Are there any confidentiality contracts in place?
Once you’ve made your way through this list, you’ll want to go even deeper in search of any risks or gaps there.
Create and Document Security and Privacy Policies and Procedures
With knowledge of your risks at hand, it’s time to establish documented security and privacy policies so you can mitigate the risks you’ve identified to an acceptable level. By giving your employees rules about all the different types of technology they use, you’ll have a major impact on your business — in a positive way. However, you must go beyond creating policies to also document procedures.
One thing you must remember here is that if your policies and procedures aren’t documented, you can’t expect employees to know they exist. This is why you must take some time to write down the following types of policies and procedures:
· Non-disclosure and confidentiality agreements should be signed by every employee when they start working for you.
· Processes regarding how you’ll get data from all your employees’ computing devices once they no longer work for your company. This should include reviewing with them how they’re under a legal obligation not to use the data for other purposes and what they should do with any information they had access to while working for your company. Reviewing the legal ramifications of all these things with them before the end of their last day working for you can save everyone a lot of time and trouble in the future.
· Information about what types of technology employees are and are not permitted to use while at work.
· Policies regarding where business information (e.g. information about customers, employees, patients; personal information) can and can’t be posted, shared, stored, etc.
· Requirements outlining how employees who use their own devices in unlimited locations should be trained to protect everyone’s security and privacy.
Identify Tools to Support the Policies and Procedures
Using network security threat tools will help you make sure your firewall is working well to prevent any possible malware. There are many different tools you can choose to use for this purpose. They include:
· Encryption for all types of data, including that which is at rest, that which is in transit, and that which you’re collecting
· Data logging tools are used for tracking data that your business needs about your business, customers, employees, and patients
· Remote tools that can wipe data off devices that ex-employees have used or that were lost or stolen
· Firewalls and anti-malware tools for all the devices your business uses
Unless you’re willing to take the time to make the effort to train your employees what to do, they won’t know what you expect of them. Not just any training will do. It must be effective, which means it must be more than simply handing them a document.
Send Occasional Reminders to Continue Encouraging Awareness
As time passes after training, employees will start thinking less and less about how to secure your customers’ information and protect their privacy. This is why you must continually and frequently remind your employees about taking steps to protect your customers.
Always Monitor Compliance
Creating rules for using computing devices and managing business data isn’t enough. You must also make sure that the rules you’ve put in place are effective. Putting the rules out there, then assume that they’ve been followed never works because there will always be some people who don’t understand, notice, or choose to follow the rules. You’ll also have some people who will forget about them or make mistakes. Any of these happenstances will result in incidents and breaches of your business’ information. To prevent this from getting out of hand, you must monitor how effective your policies and procedures are throughout your business.
As a business owner, it’s up to you to keep up-to-date with what the current and emerging risks are in your industry. You must also pay attention to all the trends that exist around the public use of technology and computing devices. Knowledge is only the first step, though. From there you must also make sure you create and document rules about using this technology. Taking this a step even further: Make sure these rules are being followed by every employee in your organization. While all this will take time, it’s well worth your effort to keep your customers safe so they can continue trusting your business for many years to come.
6 Measures to Eliminate Business Risks was originally published in Hacker Noon on Medium, where people are continuing the conversation by highlighting and responding to this story.