156 karma · joined March 3, 2012
The suggestions look a lot like code linters in FAANG companies. People from the outside will be shocked at some of these "inclusive" linters if they take a look.
Projects can fail in many ways, not trying to understand the problem better and not trying to re-adjust after are typical pitfalls. Migrating from monolith to micros is just a natural transition between SOME stages, and it shouldn't happen until you hit those stages. You may hit those stages very early, or sometimes never.
But I don't know about the boilerplate functions, some of them feel useful (like output capturing, state preserving), while others are just shallow abstractions over the vim API, which is almost never good. Abstraction over API is only useful when it provides different and better semantics, like jQuery over DOM.
Internet.org may not succeed at the end, because of the conflict of interests in many parties (corporate and political) involved in its running. But the idea of providing limited access for free is IMO very good and important, and arguing details before anything being done is at best unproductive.
All the people here already have internet access, and most without any limit or censorship. But can you try to think of this from POV of the users of internet.org? Not to think for the children in poor regions, but think AS those children.
Let me explain from my experience, where limit of access mostly comes from heavy censorship.
I was born in China at the end of the Culture Revolution. Fortunately, my family still had got TV when I was in elementary school, and we had internet when I was in high school. All the information, programs, news, cartoons, whatever contents from TV or internet were heavily censored. They were censored so heavily that I, as a kid, could not realize that they were censored at all. But I still enjoyed a lot of information, entertainment, knowledge from TV and internet as a kid. As an adult now, I hate and want to fight those censorship with all I have. But without TV or internet, I'd very unlikely to be able to code, or to write English, or anything I enjoy doing today.
To me, the limit of access that's forced by government doesn't differ much from the ones by corporates. But having some limited access to information is absolutely critical, when the ONLY other option is no access.
Finding a good career path may take quite some time, but working for the wrong company can cost magnitudes of more time.
For most HN readers, including me, the answer is an obvious "testify", because we see it as a big plus. Do you want to work for people who see it as the right thing to do, or people who avoid it?
However, almost all the good new things came from some re-invention. Don't let the tradeoff scare you away from your original ideas. Maybe the whole interface doesn't beat what we have now, but there are quite a few very good stuff in your demo. And I believe some of them (zoomable overviews, widgets), can truly work better than what we have now. It somehow reminds me of Rob Pike's Acme editor, though they look very different.
For most of people, the intuition of intelligence is a bit naive, and nowadays intuition is often at the opposite of the truth. It often is along the line of "looking intelligent and knowing what it is doing”. Something like turing test describes the first part intuitively. But we soon found out that we wouldn’t call something “intelligent” even it passes turing test since the machine is unlikely to know why it is saying something, hence the latter part. But again, this is about consciousness or “strong AI”, which is even further away from our understanding than “intelligence”. How do we know that the machines that “look intelligent” don’t “know what they are doing”? Consciousness is very hard to define and even harder to inspect, and maybe someday machines begin to have consciousness even before we realize it? In fact, we already did this to most animals, thinking they are not intelligent or self-conscious while they are.
But to me, the psychology behind these definitions is very interesting and maybe quite important. No matter how we try to define intelligence, we wouldn’t call machines intelligent until they very much behave like us. Because to most people, intelligence is what defines humans, so they intuitively use their feelings of “does that feel human” to benchmark intelligence. And psychologically, we are exceptionally good at telling something “not human” from “feeling/looking/speaking like human”. But this is a very narrow and, if I dare to say, ignorant and self-centric view, because it implicitly relies on the thinking of “we are far more intelligent than any other life form, and human's intelligence is the only way intelligence can be work”.
Think about it, if there’s a super-intelligent being that observes our world, maybe to it, human’s intelligence is as primitive as fish, and trees aren’t far behind; and maybe, entities such like countries or the internet are actually of more intelligent “life” forms, just we haven’t realized that yet because they don’t look like us at all; and maybe, on the scale of intelligence from 0 to that super-intelligent, humans, birds and machines are clustered in a small range, though significantly larger than zero, still not far from it.
Although the research on human brains and a lot of our own stuff inspired the research of AI quite a lot, it is perfectly possible that we create something truly intelligent or conscious without us understanding human intelligence or consciousness fully. We can have a different kind of “intelligence”, and our researches are well on their way toward that. It’s very hard to see because we don’t understand intelligence, and maybe our hardware isn’t powerful enough to fully utilize our theories.
To use colors correctly (not many programmers can do this, in fact Chrome/Firefox/Safari don't show the same color for same RGB value on my machine), programmer needs to consider color profiles, gamma correction, white point etc. The sad truth is that RGB is mostly misunderstood from intuition, and most graphic libraries don't deal with device-dependencies at all. Luckily, most engineers don't have to deal with colors outside sRGB.
The absolute best place to read about digital colors (or image processing in general) is efg's references: http://www.efg2.com/Lab/Library/Color/Science.htm. It contains overwhelmingly large amount of info, but they are good info and quite essential for professional work.
Vim, in pure code editing sense, has two unique advantages that no other editors have or dare to have: modal editing and ubiquity.
Modal editing makes code editing absolutely DRY, as users can avoid any repetitive typing/clicking that they wish to avoid. It doesn't necessarily increase your code throughput much as a lot of the time you'll be thinking instead of typing, but it reduces the frustration of editing to almost zero when you do have to type, hence reducing distractions and cognitive load. Once you are familiar with Vim, its commands have close to one-to-one mapping to ANY ways you want to edit code.
For example, you want to change the html text two lines above? kkcit. Then come back to the place where you left? g;g;. Re-indent the lines? =ip. They look foreign and unintuitive to non-vim users, but are actually muscle memories for vim users. This is probably why vim users swear by it, but non-users find it hard to love.
Ubiquity is something you can only appreciate when you have to. If your work environment is Windows, this probably won't occur to you. But if you have to code in different OSes, or in SSH sessions, or in git commit, or in less/man commands, you'll find vim invaluable.
After all, Vim is just a tool, a very good one. But if your work doesn't have the need for it, you won't find it useful.
The problem is really not about monopoly, but whether the beneficiaries of these business contain a larger population.
"Isomorphic Javascript" is a bad choice of word because coffeescript/typescript feels more "isomorphic" to Javascript than client/server js libraries.
I got 1. Ebonics 2. New Zealand 3. English (England) for dialect and 1. Turkish 2. German 3. Finnish for native language. I'm native Chinese currently living in California.
On Linux, you probably need to create a .desktop file for the app.