+this ... I think learning to deal with people, actually listening and assuming you are wrong first have been some of the most difficult things to come to terms with. I'm decades in and just the past few years have started to get much better with people skills. Working with someone that has every personality quirk you have dialed to 11 was eye opening.
Cloud agnostic? Not really. All the resources are cloud specific. You can't configure anything of any complexity without knowing details about your specific provider.
Low level? It's about as far from "low level" as you can get. I would barely call it a programming language.
That being said, I do think it is a worthwhile skill to learn.
I interpreted those things being listed as individual items in a list, not one continuous thing, so I assume the "low level programming" is it's own task.
Also, I think a certain level of cloud agnosticism is possible. A lot of things like App Engine-esque services and FaaS can be boiled down to a core subset that can be agnostic. Once you get into managed queues and such, then you start losing some agnosticism for sure.
You're right Terraform is not cloud-agnostic in terms of resources, but I'd argue you wouldn't really want a truly cloud-agnostic configurator at the resource level as it would be far too leaky an abstraction to have any reliable value. On the other hand, in terms of a cloud configuration system as a whole, Terraform's state management and sequencing resolution is provider agnostic, which I think makes it a much better investment than any cloud-specific orchestration system.
I think systems thinking is needed more than ever. There are way too many myopic decisions being made all across the board.
For specific programming languages, I think Elixir is a great investment.
Edit: Some systems reading if anyone is curious:
* Thinking in Systems by Donella H. Meadows
* Designing Freedom by Stafford Beer. I also recommend anything by Stafford Beer.
* Anything by Christopher Alexander
* Systems Thinking For Social Change: A Practical Guide to Solving Complex Problems, Avoiding Unintended Consequences, and Achieving Lasting Results: A new to me book that I haven't read but looks promising.
+1. I always recommend starting with the foundational document, Cybernetics by Norbert Wiener (and the companion title, The Human Use of Human Beings).
I'm not sure how much you know about Elixir, so apologies for stating anything obvious.
* Elixir sits on top of the BEAM (the Erlang VM), which has several decades of being battle tested.
* Elixir is at its core a functional language, with immutable only (not just by default) data, and comes with built-in processes and OTP, a library that provides ready-made abstractions on top of processes. It's very, very good at concurrency.
* Elixir has Mix, Hex, and ExUnit, which provide great tooling and package management.
* Elixir's ecosystem is rather vibrant and active. Phoenix, LiveView, Livebook, Nx, Axon, and more. Elixir generally takes the approach of building things on top of Elixir from scratch, which frees it from having to deal with impedeance mismatches. See Livebook (the Elixir notebook solution) and Nx/Axon, and all the other machine learning stuff going on in Elixir right now.
I highly recommend the presentation The Soul of Erlang And Elixir by Sasa Juric.
I can’t answer every question known to man based off the vague prompt I answered. I took a pretty good stab at it. :) I also don’t know what makes things learning worthwhile to every type of person.
> Do Elixir's ideas improve your thinking when working on other languages?
Most languages do, and I’ve already mentioned Elixir’s unique features. Although, in a way, it will make working with other languages feel painful if you do any concurrency. Elixir and Erlang change the way you think about and work with concurrent processes and do it in about the best way possible, as it’s built in to the language in a core way. Learning how to deal with immutable data, writing pattern matching code, and functional programming are also all pluses.
> Are Elixir developers in demand compared to other languages?
I don’t know how to judge this, because define demand. The answer is ultimately relatively irrelevant to me and how I look for positions. If you’re asking, in a roundabout way, whether there are well-paying jobs in Elixir, the answer is yes.
> Is it a fad language?
I don’t know what a fad language is. Stack Overflow is not the global truth, and the plot is linked without context. Elixir has had its official forum for seven years now. It was created around the beginning of 2016, which roughly corresponds to the peak in the data you posted with a bit of lag in the downturn, as might be expected as people learn of the new forum.
Lastly, making a decision based upon what is popular now is not a long term thinking decision. What is popular now was making head winds 10-20 years ago.
Formalised thinking strategies never clicked for me. It’s either completely obvious stuff (almost like trying to teach someone common sense), or very vague generic statements without practical applications.
What do you mean by "formalized thinking strategies"? Guessing at what you mean, I'm not sure it completely overlaps with systems thinking and systems theory, which can be quite mathematical at times.
What's the best way to learn machine learning without a real GPU or a budget for cloud time? There's lots of demos and stuff that can run on low end CPUs, but is that close enough in terms of skill to what you'd actually be doing on the job to be worth it?
Unfortunately this might not be the truth any longer, as it has adopted a new pricing model that is far stingier with gpu time and very confusing to properly track and predict.
I think you can go far quite cheaply. Get your code working on smaller/toy models, and then when you want to test it on larger ones you can ship it over to a machine at one of the cheaper providers (vast.ai/jarvislabs etc) to give it a run before pausing/killing the machine.
I've been porting Stable Diffusion (which isn't a small model) over to Elixir and as part of doing that have been starting/stopping my jarvislabs machine when I start/stop building. I've been spending about $1/day without trying to be efficient.
Also, fast.ai is a great resource for learning ML, I highly recommend it.
For 1. specifically, I like this quote from Jeff Bezos:
> I very frequently get the question: "What's going to change in the next 10 years?" And that is a very interesting question; it's a very common one. I almost never get the question: "What's not going to change in the next 10 years?" And I submit to you that that second question is actually the more important of the two -- because you can build a business strategy around the things that are stable in time. ... [I]n our retail business, we know that customers want low prices, and I know that's going to be true 10 years from now. They want fast delivery; they want vast selection.
> It's impossible to imagine a future 10 years from now where a customer comes up and says, "Jeff, I love Amazon; I just wish the prices were a little higher." "I love Amazon; I just wish you'd deliver a little more slowly." Impossible.
Funny because I think we are at a point where I wish averages prices were a little higher on Amazon, by eliminating all the junk and fake stuff off it.
But also with accepting the tradeoff of higher prices. In other words, lower prices and faster delivery don't trump quality. If they have to be fudged a bit a better guarantee of quality then that is acceptable.
That's why base skills like being able to confidently administrate Linux systems and maintain networks will be more valuable than knowing Kubernetes ten years down the line. Yes, the latter pays more right now and it will still be around, but it's a trend nevertheless. Linux isn't going anywhere.
I'd add that improving logistics in terms of bundling packages and slowing shipping to handle reduced shipments would do a lot in terms of reducing an ecological footprint (not that I'm big on woke environmentalism).
+1 on reducing options and improving curation... I've gotten in the habit of nearly always selecting "sold by amazon" option in searching... if nothing else, at least the return process is less likely to be a hassle.
There's also Charlie Stross (@cstross), from "Dude, You Broke the Future" (2017):
When I write a near-future work of fiction, one set, say, a decade hence, there used to be a recipe that worked eerily well. Simply put, 90% of the next decade's stuff is already here today. Buildings are designed to last many years. Automobiles have a design life of about a decade, so half the cars on the road will probably still be around in 2027. People ... there will be new faces, aged ten and under, and some older people will have died, but most adults will still be around, albeit older and grayer. This is the 90% of the near future that's already here.
After the already-here 90%, another 9% of the future a decade hence used to be easily predictable. You look at trends dictated by physical limits, such as Moore's Law, and you look at Intel's road map, and you use a bit of creative extrapolation, and you won't go too far wrong. If I predict that in 2027 LTE cellular phones will be everywhere, 5G will be available for high bandwidth applications, and fallback to satellite data service will be available at a price, you won't laugh at me. It's not like I'm predicting that airliners will fly slower and Nazis will take over the United States, is it?
And therein lies the problem: it's the 1% of unknown unknowns that throws off all calculations. As it happens, airliners today are slower than they were in the 1970s, and don't get me started about Nazis. Nobody in 2007 was expecting a Nazi revival in 2017, right? (Only this time round Germans get to be the good guys.)
Edit: I think I watched both the Angular course (after having used Angular for a while) and the React with TypeScript course (at the time I transitioned to React).
And with Udemy for the last few years, one can always just wait a few days and get the course at 90% off.
I tried both, I'm not sure how Axum is much different than actix-web, seems like they both have similar syntax for creating a new router, adding routes and middleware, and starting the server. I think actix-web has macro-defined routes but I haven't been using those anyway.
The language in the last 5 years added so much and is on the way to adding so much more.
Highlights are hard to name because different people like different features!
The packaging/dependency situation is pretty much solved now. Cabal v2 has been a godsend. That used to be the big issue. Stack is still around and works fine. ghcup makes installing everything easy. And Nix support is excellent and offers diversity of choice between nixpkgs and haskell.nix (which opens your way to proper x-compilation!)
I don't use it, but the Haskell Language Server is also vastly improved.
The library ecosystem is also the best it's ever been. Again, depends on what you wanna do. But there are more people and companies out there contributing to Haskell OSS than ever.
The compiler and RTS also keep solving problems and pushing the bleeding edge. Compact regions, a new latency-optimized GC, and the eventlog have greatly improved the RTS. And linear types landed recently - still nascent but still a big deal. And dependent types are definitely on their way.
Pertinent for 2023, learn about costs. If you're an engineer, understand how much the services you're responsible for are costing. How can you reduce that cost? Can you optimize costs enough to save your monthly salary?
If one has time and want to increase ones foundation, yes, learn C and assembly.
I feel I don't see jobs in those languages as frequently as I do in other more modern languages, but I at least really enjoy the feeling of knowing a tiny bit about what goes on behind the scenes.
Eh seems like the big investors will be winding down their crypto funds and layoffs are harsh in crypto. I wouldn’t go there now. Also the fact that the billions didn’t lead to any successful businesses other than the gold pick sellers (coinbase, FTX lol) and shady big yield lending services that are all now bankrupt
* GPU programming (GPUs have consistently kept up with Moore-like laws)
* FPGA/ASIC design (hard but price for all of these is dropping rapidly, so becoming more accessible)
* Bitcoin/cryptocurrency related tech, including standing up your own miner, full node, or understanding how to build applications on top of it (web3/etc.) (despite the hate, cryptocurrencies are still around and thriving)
* Solar and battery related tech (solar prices continue to drop, as does battery technology. Consumers ROI on solar installations are approaching 2-5 years instead of 10+).
Understanding "fundamentals", either in terms of computer science education or mathematics, I think is also critical but I don't really know what fundamental math should be focused on, in the short term. It's easy to say "neural networks" but proficiency in that area is mostly about learning frameworks (as a snapshot of right now) and little to do with some underlying theoretical understanding.
In terms of specific languages or frameworks, just a word of warning. What language/frameworks that were popular 10 years ago are still relevant today? Many people gain utility both from using and from being paid to manage frameworks (and to a certain extent languages) but they tend to be ephemeral.
One piece of advice that I think was pretty good was to avoid the "stampeding hoards". One can "win" at the game of being the best at what's fashionable now but the greater utility is in understanding more fundamental skills with the added benefit of, should a skill become fashionable later, being well versed in it when it does.
Not so much a skill but I'm curious to see where the low-code scene goes and will be following it closely.
I feel like a low-code platform that can be stood up on infrastructure (cloud or otherwise) owned by a company could provide a lot of value. Many companies and especially local governments have unique infrastructure requirements that make using a random website for a business function a non-starter. If they could bring a properly supported low-code platform to their infrastructure i could see that being super productive for a lot of the simple use cases they encounter.
93 comments
[ 3.9 ms ] story [ 151 ms ] threadLearning how to learn new stuff
Kubernetes is still incredibly relevant but growth is slowing down (mostly because it ate the world already).
WASM and eBPF are hot new technologies but still niche.
CDK landed last year and will probably become more and more relevant for new projects vs vanilla Terraform.
Low level? It's about as far from "low level" as you can get. I would barely call it a programming language.
That being said, I do think it is a worthwhile skill to learn.
Also, I think a certain level of cloud agnosticism is possible. A lot of things like App Engine-esque services and FaaS can be boiled down to a core subset that can be agnostic. Once you get into managed queues and such, then you start losing some agnosticism for sure.
For specific programming languages, I think Elixir is a great investment.
Edit: Some systems reading if anyone is curious:
* Thinking in Systems by Donella H. Meadows
* Designing Freedom by Stafford Beer. I also recommend anything by Stafford Beer.
* Anything by Christopher Alexander
* Systems Thinking For Social Change: A Practical Guide to Solving Complex Problems, Avoiding Unintended Consequences, and Achieving Lasting Results: A new to me book that I haven't read but looks promising.
* Elixir sits on top of the BEAM (the Erlang VM), which has several decades of being battle tested.
* Elixir is at its core a functional language, with immutable only (not just by default) data, and comes with built-in processes and OTP, a library that provides ready-made abstractions on top of processes. It's very, very good at concurrency.
* Elixir has Mix, Hex, and ExUnit, which provide great tooling and package management.
* Elixir's ecosystem is rather vibrant and active. Phoenix, LiveView, Livebook, Nx, Axon, and more. Elixir generally takes the approach of building things on top of Elixir from scratch, which frees it from having to deal with impedeance mismatches. See Livebook (the Elixir notebook solution) and Nx/Axon, and all the other machine learning stuff going on in Elixir right now.
I highly recommend the presentation The Soul of Erlang And Elixir by Sasa Juric.
https://www.youtube.com/watch?v=JvBT4XBdoUE
It really gets at the core of what makes Elixir and Erlang special, but I'd say Elixir has a lot more quality of life improvements over Erlang.
Do Elixir's ideas improve your thinking when working on other languages?
Are Elixir developers in demand compared to other languages?
Is it a fad language? https://insights.stackoverflow.com/trends?tags=elixir
Questions like this probably reveal more important qualities of an investment.
> Do Elixir's ideas improve your thinking when working on other languages?
Most languages do, and I’ve already mentioned Elixir’s unique features. Although, in a way, it will make working with other languages feel painful if you do any concurrency. Elixir and Erlang change the way you think about and work with concurrent processes and do it in about the best way possible, as it’s built in to the language in a core way. Learning how to deal with immutable data, writing pattern matching code, and functional programming are also all pluses.
> Are Elixir developers in demand compared to other languages?
I don’t know how to judge this, because define demand. The answer is ultimately relatively irrelevant to me and how I look for positions. If you’re asking, in a roundabout way, whether there are well-paying jobs in Elixir, the answer is yes.
> Is it a fad language?
I don’t know what a fad language is. Stack Overflow is not the global truth, and the plot is linked without context. Elixir has had its official forum for seven years now. It was created around the beginning of 2016, which roughly corresponds to the peak in the data you posted with a bit of lag in the downturn, as might be expected as people learn of the new forum.
Lastly, making a decision based upon what is popular now is not a long term thinking decision. What is popular now was making head winds 10-20 years ago.
Related: the ability to radically change one’s mind on things you believe strongly.
There are 3 things to learn at any given time:
1. That which never changes i.e. humans, yourself and others
2. What you need to know to succeed right now i.e. deeper in your current tools and systems, or those you'll need to use next month
3. Whatever intrigues you. Maybe this is what you're asking: what's new to be intrigued by?
To the latter, I would say to start learning machine learning if you haven't already.
I've been porting Stable Diffusion (which isn't a small model) over to Elixir and as part of doing that have been starting/stopping my jarvislabs machine when I start/stop building. I've been spending about $1/day without trying to be efficient.
Also, fast.ai is a great resource for learning ML, I highly recommend it.
> I very frequently get the question: "What's going to change in the next 10 years?" And that is a very interesting question; it's a very common one. I almost never get the question: "What's not going to change in the next 10 years?" And I submit to you that that second question is actually the more important of the two -- because you can build a business strategy around the things that are stable in time. ... [I]n our retail business, we know that customers want low prices, and I know that's going to be true 10 years from now. They want fast delivery; they want vast selection.
> It's impossible to imagine a future 10 years from now where a customer comes up and says, "Jeff, I love Amazon; I just wish the prices were a little higher." "I love Amazon; I just wish you'd deliver a little more slowly." Impossible.
https://www.inc.com/jeff-haden/20-years-ago-jeff-bezos-said-...
https://news.ycombinator.com/item?id=33692661 (2022)
+1 on reducing options and improving curation... I've gotten in the habit of nearly always selecting "sold by amazon" option in searching... if nothing else, at least the return process is less likely to be a hassle.
When I write a near-future work of fiction, one set, say, a decade hence, there used to be a recipe that worked eerily well. Simply put, 90% of the next decade's stuff is already here today. Buildings are designed to last many years. Automobiles have a design life of about a decade, so half the cars on the road will probably still be around in 2027. People ... there will be new faces, aged ten and under, and some older people will have died, but most adults will still be around, albeit older and grayer. This is the 90% of the near future that's already here.
After the already-here 90%, another 9% of the future a decade hence used to be easily predictable. You look at trends dictated by physical limits, such as Moore's Law, and you look at Intel's road map, and you use a bit of creative extrapolation, and you won't go too far wrong. If I predict that in 2027 LTE cellular phones will be everywhere, 5G will be available for high bandwidth applications, and fallback to satellite data service will be available at a price, you won't laugh at me. It's not like I'm predicting that airliners will fly slower and Nazis will take over the United States, is it?
And therein lies the problem: it's the 1% of unknown unknowns that throws off all calculations. As it happens, airliners today are slower than they were in the 1970s, and don't get me started about Nazis. Nobody in 2007 was expecting a Nazi revival in 2017, right? (Only this time round Germans get to be the good guys.)
<http://www.antipope.org/charlie/blog-static/2018/01/dude-you...>
Multiple HN discussions: <https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...>
Edit: I think I watched both the Angular course (after having used Angular for a while) and the React with TypeScript course (at the time I transitioned to React).
And with Udemy for the last few years, one can always just wait a few days and get the course at 90% off.
Just dig into the official resources [1].
https://go.dev/doc/
None of them are new but still trendy
Highlights are hard to name because different people like different features!
The packaging/dependency situation is pretty much solved now. Cabal v2 has been a godsend. That used to be the big issue. Stack is still around and works fine. ghcup makes installing everything easy. And Nix support is excellent and offers diversity of choice between nixpkgs and haskell.nix (which opens your way to proper x-compilation!)
I don't use it, but the Haskell Language Server is also vastly improved.
The library ecosystem is also the best it's ever been. Again, depends on what you wanna do. But there are more people and companies out there contributing to Haskell OSS than ever.
The compiler and RTS also keep solving problems and pushing the bleeding edge. Compact regions, a new latency-optimized GC, and the eventlog have greatly improved the RTS. And linear types landed recently - still nascent but still a big deal. And dependent types are definitely on their way.
Systems Thinking. It helps you understand how components interact to form a system, and how to change it. Books:
- The Goal: https://www.amazon.com/Goal-Process-Ongoing-Improvement/dp/0...
- Thinking in Systems: https://www.amazon.com/Thinking-Systems-Donella-H-Meadows/dp...
Pertinent for 2023, learn about costs. If you're an engineer, understand how much the services you're responsible for are costing. How can you reduce that cost? Can you optimize costs enough to save your monthly salary?
I feel I don't see jobs in those languages as frequently as I do in other more modern languages, but I at least really enjoy the feeling of knowing a tiny bit about what goes on behind the scenes.
1. https://tailwindcss.com/
2. https://htmx.org/
I'm not a fan of any of those :D
* GPU programming (GPUs have consistently kept up with Moore-like laws)
* FPGA/ASIC design (hard but price for all of these is dropping rapidly, so becoming more accessible)
* Bitcoin/cryptocurrency related tech, including standing up your own miner, full node, or understanding how to build applications on top of it (web3/etc.) (despite the hate, cryptocurrencies are still around and thriving)
* Solar and battery related tech (solar prices continue to drop, as does battery technology. Consumers ROI on solar installations are approaching 2-5 years instead of 10+).
Understanding "fundamentals", either in terms of computer science education or mathematics, I think is also critical but I don't really know what fundamental math should be focused on, in the short term. It's easy to say "neural networks" but proficiency in that area is mostly about learning frameworks (as a snapshot of right now) and little to do with some underlying theoretical understanding.
In terms of specific languages or frameworks, just a word of warning. What language/frameworks that were popular 10 years ago are still relevant today? Many people gain utility both from using and from being paid to manage frameworks (and to a certain extent languages) but they tend to be ephemeral.
One piece of advice that I think was pretty good was to avoid the "stampeding hoards". One can "win" at the game of being the best at what's fashionable now but the greater utility is in understanding more fundamental skills with the added benefit of, should a skill become fashionable later, being well versed in it when it does.
https://openai.com/blog/triton/
https://triton-lang.org/master/index.html
I feel like a low-code platform that can be stood up on infrastructure (cloud or otherwise) owned by a company could provide a lot of value. Many companies and especially local governments have unique infrastructure requirements that make using a random website for a business function a non-starter. If they could bring a properly supported low-code platform to their infrastructure i could see that being super productive for a lot of the simple use cases they encounter.
* be empathic
* be humble
Cloud technologies: AWS/kubernetes/docker
Languages: English/any other native lang of country that you are trying to settle in