995 karma · joined August 30, 2017
Programming education is totally ad-hoc and you can be a great programmer even with a degree in agriculture.
Programmers have to remember a vast amount of domain knowledge. Consider the basic task of choosing where you are going to store some data, well first you need to know which options exist and there's dozens of them (do you want Postgres, SQLite, Redis, LevelDB, ..?). Then you need to know the strengths and weaknesses of each. And I hope you have been keeping your knowledge up-to-date because the answer in 2018 is very different to the answer in 2008.
The lack of barriers to entry actually makes it harder. There are "law schools" and "med schools" to teach you all the knowledge required to become a lawyer or a doctor. There is no "programming school", every programmer is self-taught. A computer science degree hardly scratches the surface.
While there are specialisms, such as game development or embedded development, most programmers are expected to be generalists. You may find yourself needing to write networking code, and there's a whole bunch of knowledge that goes along with that. Or, many programmers end up having a working knowledge of cryptography.
Sure, almost anybody can learn JavaScript or Python, and write code, but learning a programming language is only 1% of the job.
This is the most secure choice, using something like websockets to transfer data only.
Unless your product is completely offline and never connected to the internet, I don't think an IoT device that runs a web server is ever a good idea. All it takes is one successful remote attack, and soon your users could be installing ransomware at the device's direction!
Don't serve HTML/JS from a device that you can't physically pull the plug on.
I realize I shouldn't be surprised, but that shocked me. God forbid taxpayers should have access to the research they paid for. How these organizations expect any public sympathy is beyond me.
Rust defines safety as memory safety, but unfortunately memory safety is only the tip of the iceberg when it comes to safety. Logic errors are just as pernicious.
Programmers have a natural bias towards solving problems with technical solutions, but for me, Rust's memory safety is achieved at the cost of a high productivity penalty and a moderate readability penalty. Both of these reduce my ability to understand and manually verify the code.
Whereas languages that achieve memory safety via a GC, allow me to focus my mental energy on writing correct code, not on memory management.
> Programs written in Rust are empirically safer than programs written in C or C++.
But Rust defines safety as being safe from the kinds of errors that the Rust compiler is capable of making one safe from (buffer overflows, race conditions, undefined behaviour, etc).
If one if distracted by trying to satisfy the borrow checker, they might overlook a logical error. People have limited concentration, patience and perseverance and usually have to work to deadlines.
Rust is great for writing high-performance code, or code that needs to be parallelised within a single process. However if performance is not a concern then a statically typed language with a GC is usually a better choice.
For instance, in 2005 the US was one of the last countries to abolish the death penalty for children, not by passing a law, but on the action of the judiciary interpreting a new individual right into the constitution (i.e. to not be executed for crimes committed under the age of 18). Quite how they managed to get the age 18 out of the words "cruel and unusual punishments" is something to ponder.
Prior to that, the states had an inviolable constitutional right to execute children.
So the US was prevented from ratifying the UN Convention of the Rights of the Child because Congress couldn't make a law violating the right of states to execute children, yet the US states could not individually ratify the UNCRC themselves because that would be violating the right of Congress to make treaties.
The outcome of this battle of rights between governmental bodies, is that children in the US are to this day denied individual rights that they would otherwise have under international law, or even national law, and rely on 12 judges to extract their rights from thin air.
While the treaty between the states and the federal government has very little reason for change, the rights of individuals need to change as society changes.
But the US constitution does not lend itself to easy modification, so in practice the Supreme Court is used to "interpret" further individual rights into existence.
Smells like bullshit, how is any of this meant to distinguish a mildly sophisticated fraudster from browser autofill?
So yes I still prefer the train. Buses are cool too!
Many shareholders care about stability, There is the whole distinction between "growth" stocks and "income" stocks. Some investors prefer low-growth companies that pay big dividends, other investors prefer just the opposite.
Some investors care about environmental issues, or social issues, or religious issues. e.g. the Norwegian sovereign wealth fund divests from companies that don't meet its ethical objectives, and is often a significant investor.
When I give a tip, it's a gift. I don't expect anything back from it.
The nodes define what a bitcoin is. So long as they agree that bitcoin should follow the original exponentially decreasing reward schedule, then that is what will happen.
There are some problems, for instance, if almost all miners decided to switch to another fork, then the original chain would simply die because of the difficulty. But miners have electricity bills to pay and are strongly incentivised to mine the most profitable chain. It is not a matter of convincing the miners, but of convincing the world that your uncapped fork is more valuable.