If you are writing js professionally and haven't already come to terms with that and the existential crisis it entails... you're gonna have a bad time.
The XML years were some pretty dark times. Pointing out the obvious wasn't appreciated. And so this too shall pass.
I'm super duper impressed by what people accomplish with HTML + CSS + JS. But, wow, the effort involved. Like pushing rope. Drinking the ocean. Juggling plates during a riot. Ironing a shirt while someone's hosing you down with a water cannon.
And the bit rot. Turn around twice and your crap has stopped working. It's worse than anything I experienced doing Windows development.
But maybe the constant renewal, the need for constant energy investment to counter entropy, maybe that's the virtue of "web development". It certainly prevents any status quo from forming.
You have now allowed me to shift a huge burden of antagonistic feelings from human beings onto the fundamental nature of the universe.
I can now be no more upset about coming back to broken code than I would be at the shape of the milky way galaxy.
I guess it started a few years back when I started an introductory programming-class at university where I was supposed to learn Java. I had already tried some light-weight languages like HTML and CSS and felt comfortable modding Wordpress-solutions. At the time, I studied a non-tech minor, and worked at an it-consultancy with a bunch of guys roughly my age. We were pretty good friends, but I strongly remember how they ridiculed Java as being old and outdated, and how I was wasting my time trying to learn more than the course expected of me. And it actually turned me off a lot, mainly because I thought these guys knew what they were talking about.
About a year ago, I tried my way with python for web-scraping and some light scripting, but ran into the same ridicule by a co-worker where I had my internship.
This february I finished my liberal arts'ish IT-master degree, and decided that I needed to learn how to do some code in order to get better at my job, and understanding it and tech in general.
It's actually useful - really, really useful - to understand where these strong opinions come from. As a beginner/outsider you may not understand a lot of the criticism, and when you do understand if you may not agree with it.
But the standard criticisms of all the popular languages are directly linked to how well programmers at all levels can work with them.
So if someone has an opinion about Java, they're really saying "I think Java is a bad language because..."
They may also be saying - and often are saying - "I know a lot about programming because I have a strong opinion about this."
What they're not saying is "You're an idiot" - because most often if you ask someone, they actually have no opinion about your competence, probably don't know enough about you to assess it (unless they've worked with you for a while) and realistically aren't all that interested in a random stranger anyway (unless they have a good professional reason to be.)
So the next time someone criticises a language, ask them why they don't like it, and ask them what they'd recommend instead and why they'd recommend it.
You don't have to agree with them or take their advice, but their reasons may help you understand why we have so many different languages, why no one is really happy with any of them, and why secretly pretty much everyone wishes the whole scene was simpler, better, and less frustrating and imperfect.
I think it has great aspects, and awful aspects, from a technological and just logical perspective, and I suspect even its creators would agree.
Still, I am too weary to see it as anything but a part of the reality of software in 2016. The language was designed in a hurry for commercial reasons, and subject to entirely different design constraints compared to, say, Haskell, which was designed by an academic committee over several years and with no demand for fast shipping, implementation, or familiarity for mainstream coders.
"Wat" to me is a satirical expression concerning the illogical and frustrating situations in which we nevertheless find ourselves needing to operate.
Despite my general appreciation of the language, it hurts me, and "Wat" is a warning that reminds me to be very careful with the treacherous semantics.
(But then, few languages get equality right.)
it is an education, and an important one
one of undefined or odd behaviour
it strengthens anyone who watches it because you can move past the 'am i the only one who thinks this is odd' into the 'this is the spec, my work needs to be mindful of it, and now how do i use this knowledge to my advantage'
(o) edit: instead of 'can be' it used to say 'is', but i prefer specialists' quantification
I would not discourage you from learning it at all, in fact I highly encourage it if you are starting out.
You really need to understand the limitations of the language.
It is poorly designed.
It is infuriating to work with.
As far as the js ecosystem is concerned:
The community is fragmented and largely unreliable.
The workplace is becoming increasingly saturated.
At the end of the day you should just learn what you want to learn, and like you said "fuck the haters". That's why I started learning Haskell a few months back and I'm really enjoying it.
The longer you blame ridicule and others opinions for your procrastination, the longer you will regret not learning to code.
But it's also not a behavior that is particularly uncommon outside of software. It's a kind of tribalism that you often see in communities everywhere. Sometimes people get picky and petty over their interests, careers, hobbies, etc. Game console choice, child-raising, criminal justice, fashion, anywhere the word "proper" is used. People are quick to get emotional about things they care about, and act out of emotion. I'm not excusing it, but it's pervasive. I know I'm guilty of it sometimes.
I hope I've never turned anybody off of learning with that kind of attitude.
I remember reading programming blogs when I was starting to program and instead of feeling like those guys were elitist jerks who were excluding me, I thought, man, you know, I want to someday know as much as they do.
The really good ones will usually go out of their way to help neophytes.
> and I've learned that no languages are better or worse than others
(Yes, Brainfuck is obfuscated on purpose, but I'm just trying to make the point crystal clear. The same thing applies to other comparisons, just to a lesser degree.)
Think of "Language X is better than Language Y" as a comparison operator for a partially ordered set.
It sounds like the trash talk you encountered actually taught you a very important lesson, in the end.
Stick with a language you find fun and useful. If that changes, well just pick up a new language, it is better to be doing and making mistakes and learning, rather than trying to find the perfect language for you - there is no such beast.
I don't think this is True though. Languages are different, and there is no 'best' if you stick to very broad standards of 'best'; But certain languages certainly have better net utility then others, relative to the market.
i have server side code that can do a lot of heavy data calculations, and i client side code that can do a lot of heavy presentation calculations, and then i have the internet as a connection between them
since the presentation layer is burdened by needing to be sent to the client over the connection i have a constant optimisation interest in the size of the client code
if i am concerned about the time and data cost on the client, i can do a lot of presentation calculations on the server and send the results stead the source that found them
alternatively, if i am unconcerned with the time and data cost on the client, i can send more server code to the client to offload some of the work to relieve the server
so i can decide on the fly where any function will run when situations define the optimal configuration
server side js would limit the extra work in some cases
but i doubt i'd utilise it because i find the transliterating step to be valuable in hardening the code and logic underlying
I didn't understand JS.
Well, actually, I did understand JS. I understood it really well. You could show me any obscure piece of JS and I could tell you the semantics. Before I went all Web and JS and Hip New Tech, most of my work had been in Java, so understandably I thought JS was great. Then I started using other languages more seriously and now I am much happier and more productive.
$str1 . $str2 will always be treated as strings, even if both are numbers (I'll get "53" not 8, if $str1 eq 5 and $str2 eq 3). $num1 + $num2 will either coerce them to numbers or fail, and I'll never end up with "5three".
Realistically, you've stop being sensible at this point.
If you insist on going that route, you'll need to define stuff like addition between an object and an array, and there is just no good way to do that.
Making your failure modes safe is a sensible choice. Attributing semantics to any character permutation a developer may throw at your compiler is not.
- The unix chainsaw, how to use tiny tools as lever upon themselves. No absurd wit as in wat. Simply brilliant.
- Also listed above the wat page, https://www.destroyallsoftware.com/talks: boundaries, a whole new world. More abstract wishful thinking. Still brilliant.
- Null Program: http://nullprogram.com/index/
- Insane Coding: http://insanecoding.blogspot.com
- Agner Fog's Blog: http://www.agner.org/optimize/blog
It's about software craftmanship in an enterprise environment
Since we are on the subject of personal blogs is http://www.new2code.com which aims to help people get their first job in tech. I expand on other themes in the future but right now I want to learn and share as much as I can about getting that first software development job.
Of the listed blogs, I have previously read Steve Yegge, Eli Bendersky and Yossi Kreinin - all three fantastic. I'll have fun going through the rest in the list.
Compared to OP's more curated list, many of my subscriptions post only intermittently, but that doesn't bother me. Instead, if a site posts too frequently I might boot it from my subscriptions. RSS is only for sites that I never want to miss a single story from.
He consistently substitutes dogma for evidence and insight.
I was hoping for something more tangible. Searching wikipedia doesn't support the author's claims about FP ( things like "FP is about higher-order abstraction facilities, not immutability").
Teaching difficult ways of thinking, in person, to people who trust and respect you, is already hard enough. Trying to teach them to random people on the internet who think you're quite possibly full of shit and may not even bother reading to the end of what you write, that's an exercise in futility.
Forgive me if I don't accept the implied invitation.
Mikola Lysenko https://0fps.net
Graphics programming, geometry and algorithms.
Steven Wittens http://acko.net
Not underrated in any sense of the word, but I have to include it in case there are people who haven't seen it yet. It's about math and graphics, but also about art and design. Amazingly educational.
http://acko.net/blog/how-to-fold-a-julia-fractal/ is a good starting point for new readers.
Mark Nottingham https://www.mnot.net/blog/
Networking and HTTP.
Jeff Preshing http://preshing.com
Efficient concurrent data structures.
Bruce Dawson https://randomascii.wordpress.com
Software efficiency, performance optimization, fractals and more.
Yann Collet http://fastcompression.blogspot.com
Modern compression algorithms.
Gil Tene http://stuff-gil-says.blogspot.com
Also definitely not underrated, at least not in the Java world. But any engineer who cares about latency and honest benchmarks will benefit. Low latency techniques, GC performance, lock-free programming.
Tony Finch http://fanf.livejournal.com
C and UNIX programming, and more.
Andy Wingo https://wingolog.org
Aleksey Shipilёv http://shipilev.net
JDK internals, low-level optimization.
Question for other folks here: In your experience, does staying up until 4:00AM tend to lead to you being more or less productive in the long term?
For me, what usually happens is I go to sleep, wake up, and have it fixed in 5 minutes.
1. My three bosses were harassing me all day about deadlines. At home I can't sleep because of the stress: "I'm not going to sleep until I fix this bug because we have a deadline." => useless and unproductive. Net negative productivity.
2. Quiet day at the office. Just had a decent meal with friends. Get home to a quiet house at 9pm. Flip the computer on not even planning to work. "Hmmm... wait a sec this is interesting. I wonder if I could... What time is it? Is that the sunrise?" => likely did something in one night that would take weeks/months in an office setting.