1 karma · joined September 1, 2023
I love programming languages and play around with them all the time and have interviewed creators of programming languages. Clearly there is progress being made in the field of programming language design.
The article was saying that you can't necessarily take people opinions in the SO survey at face-value when considering programming languages that are still in a honeymoon phase. There are no 15 year old Julia code bases. Once you have taken over a large code base in a language and have the experience maintaining it that is something else.
It's because writing something new is cognitively less demanding than the hard work of understanding an existing codebase, at least initially.Python and C# seems like outliers here though. People really love them.
Right now you can do -> "Podcast Player" -> "RSS", but I realize that is non-obvious.
Updated
I never understood how you get teams to work that much but one of the factors at least in this case is not wanting to let your team down.
I don't have any monetization happening right now, but it is a great idea. Words of encouragement certainly support the podcast as does just sharing it with people you might think enjoy it.
I think his story is an interesting window into the culture of Apple. Let me know what you think.
He built up a fan club of viewers and started using the game building as an opportunity to teach people programming fundamentals. His approach to programming and teaching, as someone not familiar with the game programming world, is fascinating and seems to have resonated with a lot of people.
However, if the config is a travisCI YAML file that is really just a glorified list of commands I don't think bash or a makefile is a bad solution. Take as much as possible out of the CI config and use a neutral standard format like a makefile to encapsulate much of your logic.
Then when TravisCI stops offering free usage for open source, its easy to move, because your format isn't specific to a vendor.
The problem is when you use YAML (or an ad hoc interpreter embedded in YAML, or a templating system built on top of YAML) for things that should really be a programming language. Things like imports and functions and composition are useful. Templating is a more ergonomic form of string concatenation.
Pulumi is an interesting tool in this direction. Rather than write in something like teraform, you just use your programming language of choice. Pulumi is just a library you use.
People start with some YAML, and everything is fine. Then a simple condition is added, so ok, we are treating code as data, LISP style but in YAML. Then the logic and branching grows, and we introduce templates and so on.
You start with config, then the config ends up with its own config, and eventually, you are using Skaffold to configure Helm, which generates your YAML. That can't be the right solution, can it?
People start with some YAML, and everything is fine. Then a simple condition is added, so ok, we are treating code as data, LISP style but in YAML. Then the logic and branching grows, and we introduce templates.
It not that anyone wants to get where we've ended up. It's that each step along the way seems to make sense until you end up trapped in complex templates, and scripts to configure your config and it's too late.
It is a vicious local optimum that everyone keeps falling into.
Yeah, I am really excited about Dhall. I think this is the future, it supports the types of abstractions that we need without the mess of full templating or full turing completeness.
The one downside to Dhall is you really want to have an implementation for it in each common language. You can use it to generate YAML, but I think it would be better if tools understood Dhall and that is a bigger ask because it is a more complicated implementation.
Let's build Dhall implementations for every major language, convince Gabe to format things in a way that makes it look more familiar to non-haskell people and consider this problem solved.
My problem is people embedding a DSL inside or ontop of YAML. Then you end up with the worst combination of config and an adhoc programming language.
I was growing frustrated with the increasing about of programming that seems to happen in YAML files. At the same time, my friend Krystal was telling me about INTERCAL, an esoteric programming language that is designed to be hard to use. I had fun observing the ways that these two are different and the ways that they are the same.
I'm happy to hear what people think of this article. I am assuming because 'programming in yaml' is so prevalent that many people don't agree with me.
- Deep Questions With Cal Newport
- CoRecursive - Coding Stories (This is my own podcast, so not a listener so much as a creator)
Is the difference instrumentation vs hand written generators and hand written invariants?
2. Twitter
3. Star Slate Codex https://slatestarcodex.com/ - I've been reading through some of Scott's great writing since the whole NYTimes things brought Scott to my attention.
reply
To me, Swift and Kotlin look like they have taken inspiration from Scala. I think Kotlin explicitly did. That idea transfer from one area to another is how we get better langauges.
I'm not sure about the JIT part though. Aren't many of the recent language success stories now about AOT compiled languages like Go, Rust and Swift?