1,840 karma · joined October 7, 2011
The opinions I express here represent my own and not those of my employer.
With this out of the way, what's so special about lisp? Where did it get this reputation for mind-expansion? Part of it is historical. 20-30 years ago, the industry was focused around _stricter_ (for lack of a better term) languages like C++ or Java, and lisp presented some features that were super powerful, like REPL, interactive debuggers, higher order functions, lexical scoping, lambdas, etc. Lots of mainstream languages have since adopted these features (python, perl, ruby, javascript, ...), making lisp a bit less exotic than it used to be.
Still, today, there're some things that are unique to lisp that might be worth studying. The most important thing is macros. Macros are only possible because of the (lack of) syntax of lisp. It's a programming technique that consists of _programming your compiler_, for lack of a better term. It allows you to define a language specific to the domain you're working on. Pretty unique technique, and like all the other techniques, sometimes smart, sometimes useless, sometimes abused. I still believe it's worth learning, because understanding how macros work will explain a lot of things about the other tools you're using as a programmer.
I hope this makes things a bit clearer.
TLDR: A lot of what made lisp special is now available in other languages. Learning lisp is still worth it to expose you to _macros_. Regardless of how well you know lisp, going through SICP will be massively beneficial.
Seriously, I wonder if adding those cookie banner impacted tracking in any significant manner, because it definitely significantly impacted the usability of the web.
As someone who discovered Unix in the early 00s, this makes me chuckle. What a world!
Tests can sometimes be very repetitive and identical, and it's tempting to want to refactor it in some clever way. That's almost never good.
On top of the reasons laid out in parent comment, tests also function as unofficial documentation. I like having everything explicit in there, it makes them easier to read and understand.
It's a very famous computer science paper, pretty easy to read. Nothing niche or controversial. I'm sure you'll find it interesting.
So far, Red Hat plays in a field slightly different than AWS/GCP/Azure. Our customers mainly want something _on premise_, something on their machines, their datacenter, behind their firewall. Most of our customers don't want to, or can't, hold their data on machines they don't physically own.
Seriously, it's in the man page.
Any evidence to back up your guess, or is it just the hunch of some dude on the internet?
I'm assuming that you're implying that's what IBM wants?
If you care about integration with other text-based tools (like email, instant messaging, source control, code review, IRC, ...) then switching to emacs will transform your workflow.
There are a couple of emacs modes that stand out, and in my opinion make emacs worth it:
* Org-mode (https://orgmode.org): A note taking system * Magit (https://magit.vc/) the best git client I've ever used.
Still, I find no harm in asking "what is it about this species that makes them stand out?" I was expecting to get factual answers along the lines of "these butterflies are tied to this specific other species and we know that this could snowball into X, Y, Z". I would've liked to hear something like this instead of the other patronizing answers and the accusative tone.
> Asking questions is fine! It's great. It's how we learn. But cavalier comments like the OP are downvoted not because they are asking serious questions, but for stinking of militant ignorance.
I'm getting downvoted just like OP. Am I being cavalier too?
I'm more concerned about our inability to have a discussion without assigning nefarious implicit meaning to questions. I realize that denying human impact on the environment is a reality in US politics. I'm not from the US. I don't understand much of these things.
If you don't mind me asking, what exactly in OP's question made it stink of militant ignorance? Am I displaying the same ignorance as well? Or am I only expected to perpetuate the outrage and never question anything.
For instance can I ask where this comes from "The extinction rate today is 100 to 1000 times higher than geological norms." or will it sound like I'm denying all human impact on the planet?
Not breaking user space is fundamental to the success of most operating systems today. I read this article I cannot seem to find about Microsoft employees spending months replicating "wrong" behavior in <oldwindows.. win95?> so that applications still ran on <newerwindows... win98? win2000?>. Users don't want to see their applications crashing.
I wish I could find this article again, it's very relevant to your comment.
You don't want your machine to start crashing after installing the latest kernel. Or at least, that's the golden rule of Linux development.
If phones start crashing after installing the latest Android update, people won't see this as a security/stability improvement. They'll simply see the new version as buggy and of poor quality.
Raymond Chen talked[1] about the importance of supporting that ran on Win95 but broke on WinXP, even if they weren't complying to Microsoft specs.
I also remember reading that web browsers had to go to great length to render completely non-compliant web pages.
In your experience, when should you decide to support "non-complying" behavior?
[1]: Unfortunately I cannot find the original article by Chen but I could find extensive mentions of it in [this article by Joel Spolsky](http://www.joelonsoftware.com/articles/APIWar.html)
The things I dislike about Monopoly:
* Not too much strategy involved. The player who wins is usually the one who buys a lot of lands early.
* It's long. Even the shortest games last over 90 minutes. However the winner is decided much earlier in the game. There's very little you can do to prevent an early leader from taking the game, and you have to sit there watching them bully you slowly for several hours.
* The theme sucks. "Buy land, make more money". I don't find that particularly fun.
* The good elements of monopoly are often found in other games that don't share the same bad elements (I'm thinking of Settlers, but there are others too).
Not even for libertarians.
* Writing (doc, blog posts, ...)
* Evangelization (answer questions on IRC/Mailing-lists, help your entourage to start using it, go on live conferences, give talks, ...)
* Testing. Test everything in each new release and give the authors a good bug report when needed. Test the tool on multiple OSs, using multiple versions of a lib, test the different drivers, different dbs, etc. Test the installation procedure and the user features.
* Triaging issues in a bug tracker. What's really a bug, what isn't? What's a major blocker for users? What's a luxury nice-to-have feature? What's too old and not relevant anymore?
You can start doing all this, without actually needing any permission or access to anything. I'd suggest you just let the active members of the community know you exist (they usually hang out on an IRC chan or something like that). That's not even required, if you're shy don't say anything and start working.
As you get more and more active, you're going to be naturally contacted by someone active in the project and from here, you'll usually be given more "official" responsibilities.
AWK is old. 1977 old. Later versions that appeared (nawk and gawk are the most common) helped make it a smoother language, but it's still a pain. There are definite features you will be missing in an awk script:
- Any useful data structure slightly more complex than associative arrays. Try multi dimensional arrays, it's actually fun to do. Once.
- Any useful programming construct to help manage with complexity of scripts longer than a few hundred lines. No classes, no variable scoping, no namespaces in general. Not to mention an extremely permissive compiler.
- Any easy way to deal with the environment (other than text). Try sending http requests in awk, it can be a pain.
In 2015, if you need to write a script you should almost always prefer python/ruby over awk.
Now if you're asking whether you should learn awk? It comes in handy. There are a lot of awk scripts in the wild, and you may need to read them or edit them one day. Also, awk has a fun way of parsing input, which makes for very enjoyable one liners. Learning awk (and some complementary utilities like sed or find) turned me into a "oh, it can be done in a quick one-liner" kind of guy. Definitely recommended.
Learning emacs won't automatically give you a huge productivity boost the way learning vim does. Vim is this blazing fast editor; it's been designed from the ground up to be good at editing text. If your goal is to increase your productivity, I'd say invest time learning vim advanced features, like jumps, macros, registers, and the plethora of other things I don't know about.
Emacs is not about speed. It's about control. It's a fully customizable environment to manipulate text. You can use it to edit prose, code, scientific formulas, but also emails, IRC/Jabber clients, clients for virtually anything with a REST API. Here are some of the use cases that make my work easier using emacs:
+ Evaluating pieces of code at once. I write a lot of Python. Most REPLs out there allow editing of one line at a time. emacs allows me to fire a python interpreter and evaluate regions (multiline function definition, or data structure) at once. Similar features exist for other "dynamic" languages.
+ Better code review workflow. I receive code review requests via email immediately inside emacs. I can play with the diff files, the source files. I can make modifs or run the code without leaving my editor. And since the code review system has an HTTP API, I can even post my comments and votes back.
+ Org-mode (http://orgmode.org/). I would use emacs for this module alone. It's a note taking system that can easily transform into an agenda, todo lists, memo, document markup, tables (oh, the org-mode tables!), ...
Basically, to answer your question: I think you'll get a lot of benefits from emacs if you enjoy customizing it and integrating it to your workflow. If you don't like spending time customizing and prefer something that will just make you write text (well, code and configuration files) faster, stick to vim and spend this time learning advanced commands.