99 karma · joined February 28, 2014
I bet if you ask people if they are willing to pay $1000 dollars (financed as $40/m in 25 months) to secure a spaceship ticket to escape the failing earth climate (assuming the spaceship already exists), many people will happily pay it.
> An Object is a set of functions that operate upon implied data elements
If this is replaced with:
> An Interface is a set of functions, often operate upon implied some implied data elements (but not necessary).
Everything in the article will probably be less confusing.
In China, the companies are the puppies; in US, the government is the puppy. This is probably a very fundamental difference.
the site probably should have presented these puzzles from a different perspective, so that it is easier for people to recognize the message about what kind of programmer skills and mindset it is looking for.
And rather than going to the court for justice, the US place tariffs for a war..
China has been having IP laws and protection since around 1980, and China government never said once that stealing IP is okay. It is IP law execution and enforcement in China that is sub-par. Policing is sometimes hard.
Also, I believe the US really wants to treat IP as an "asset" rather than a "product".
That said, the dep people also made a similar mistake on not clearly confirming with Go core team that they had a chance to integrate dep into the official toolchain eventually. They wanted dep to be the thing, and they really thought that they were on the right track.. poor folks..
If Russ managed to influence the "problematic" group to do what he wants, rather than doing it by himself, he could give these people a meaningful place in the Go community. That is the gain. If that is worthy or not (comparing with discarding 2-month work on Russ's own time) depends on your own perspectives, and I am not sure what Russ thought or thinks. No matter how, it will affect how the community grows in the future.
So this goes back to the root issue about how the Go core team view its Google-external language community (or even more fundamentally, if they will be rewarded/recognized by Google if they did a good job on making the community happy). Specifically, do they want to carry the responsibility to deliver messages to the community clearly, at least to some certain extent? Opinionated is fine and firing users (e.g. users who think generics is a must) is fine, sometimes even preferred, but hurting people that were willing to follow and contribute might not be the best way to go.
However, what happened was that he told the dep people "I will build a dep tool myself to understand more on the problem details", which implies "after I understand more, I will come back to you and discuss more", but not "after I build the tool myself, I will just integrate my version into the official tool". For this part, Russ was not executing his own words, or at least delivered the wrong impressions. Maybe this result should be already well expected based on Russ's personality or how the golang team did stuff in the past, but many programmers are not that politically awareing..
It is not the technical result that the "vgo" solution kills "dep" saddens dep people. It is rather the form of communication: "vgo" stabs "dep" in the back, by emerging suddenly out of Russ's pocket, and essentially claims immediate victory using the power of the Go core team. When the vgo posts are out, and the vgo proposal is posted (and it is not really bad technically), there is really no effective way for the rest of the community to reject it.
Russ could have kept his words by going back to the dep people and told them about what he learned from writing "vgo", and then move forward with integrating "vgo" if a consensus cannot be reached. Eventually, Russ might just be able to get the same technical results as today anyways (but maybe with larger communication overhead).
What the dep people essentially says here is that, if Russ really wants, they can also implement exactly "vgo" from "dep", but they never got the chance.
People's Daily [2]. Not sure if it has an English translation.
https://www.quora.com/What-is-your-opinion-on-the-recent-Chi...
http://web.mit.edu/Saltzer/www/publications/rfc/csr-rfc-185....
Unix:
https://people.eecs.berkeley.edu/~brewer/cs262/unix.pdf
or pretty much everything here: http://cseweb.ucsd.edu/classes/fa17/cse221-a/readings.html
CS can be pretty broad.
Maybe what you fear is not that you are threatened, but that your current way of threatening other people in the world is no more. What you fear is change.
And yes, you are stating the facts: one of the ugly parts of human nature.
Chinese people also feel threatened by the West, because they don't trust you. There's not much more to it. They fear that you might abuse your power or use it to destabilize China. There's a lot of hatred of China, and they don't want you to try and trample Chinese norms, culture, society... things which they care about and are deeply connected to.
That's not to say the West actually would do any of those things, the key point is the lack of trust, specifically trust that you would do anything to benefit Chinese people or protect Chinese or that you care about them at all. They don't trust you, and the specifics of what you could do to hurt them are not really something they consider (but as you, the West is already powerful, you have many more options... to the point where one day maybe be the Chinese are dwarfed again by the West, and have no ability to defend themselves should they have to.) The west is very scary to Chinese people.
See how this goes?
A C like language with golang like syntax. Pure Go language implementation.
https://shanhu.io/smlvm - shows the dependency structure of the project.
https://github.com/shanhuio/smlhome - example code that we wrote in the language.
https://godoc.org/e8vm.io/e8vm/dagvis
it is possible to layout any DAG (directed graph with no circles).
The dependency graph of golang programs are generated by this package:
https://godoc.org/e8vm.io/tools/godep
I have not very well packaged the drawing part (sorry), but the essentials are here:
https://github.com/e8vm/shanhu/blob/master/web/js/dag.js
it is using d3.
Source code:
Using centralized message passing/routing/registering is just being lazy on handling dependency, it is like abandoning structure programming and starts using "goto" for every branch, which makes the logic flow eventually untraceable. For a system of N modules, it ideally should have around O(N) dependency edges, but a centralized hub is essentially modeling a possibly O(N^2). It only makes sense to introduce a hub when everyone potentially wants to talk to everyone.
And worst of all, every module using the framework now depends on the "hub" now. While the actual logic-related dependencies are all converted to "dynamically" instantiated ones, this "static" dependency on the hub becomes extremely hard to remove in the long term. It's like a cancer. It is not a good "pattern".
I built e8vm.io (https://github.com/e8vm/e8vm, https://e8vm.io), which is all written in go, and it has a full-blown compiler, with no optimizations though. The language has go-like syntax and C-like run time.
shanhu.io (https://shanhu.io) provides an online playground for the language, which runs the compiler right inside the browser, thanks to gopherjs.
e8vm is an open-source self-contained simulated virtual machine that has its own simple mips-like instruction set, and its own system programming language (G language). G is a language that has a golang-like syntax but with a c-like runtime -- no runtime.
shanhu.io provides an online playground where you can develop G language programs and run it in a simulated e8vm virtual machine right in your browser. The website requires a github account to login to save the workspaces.
The entire project is written in Go language, with no circular dependencies among files and packages, with each file no more than 300 lines (maximum 80 chars each). As a result, the project can be visualized in a hierarchy of DAG's:
The G language compiler enforces the same dependency rules, so a small operating system in G (still in development) can also be visualized:
It is a hobby project of mine. Questions and feedbacks are welcomed. :)
Here are my hand-made tools to generate those stuff: https://github.com/h8liu/e8tools
Javascript version (I actually wrote this first for go std lib): https://github.com/h8liu/dagvis
http://lonnie.io/gostd/dagvis/
If you write your project that even has no circular deps among files and all files are small (like me in https://github.com/h8liu/e8vm), you can draw the similar graph but at a much finer granularity, like this:
http://lonnie.io/gostd/dagvis/
or this: