Pkl: Apple's New JSON/YAML Killer (I actually want to use this...)

Ғылым және технология

I would never have guessed that Apple of all companies would make ANOTHER YAML alternative, but here we are. I'll admit, pkl (pickle) is actually really cool. Too bad I don't use Kubernetes lol
BLOG POST: pkl-lang.org/blog/introducing-pkl.html
SITE: pkl-lang.org/index.html
GITHUB: github.com/apple/pkl
XKCD: xkcd.com/927/
Check out my Twitch, Twitter, Discord more at t3.gg
S/O Ph4se0n3 for the awesome edit 🙏

Пікірлер: 806

  • @Malix_off
    @Malix_off3 ай бұрын

    They open-sourced it because they want it to be a standard

  • @skrypets

    @skrypets

    3 ай бұрын

    because of 'Mother Nature"

  • @lmao4982

    @lmao4982

    3 ай бұрын

    I mean yeah it would be insane to keep this kind of thing proprietary no?

  • @Malix_off

    @Malix_off

    3 ай бұрын

    ​@@lmao4982you'd be surprised

  • @no_name4796

    @no_name4796

    3 ай бұрын

    Probably because they want people to freely maintain it. I hate corporations abusing open source, but putting a big price to the end user. Open source it's great when end users benefit from it. If open source is hidden under 20 meters of proprietary garbage, why is it any different then unpaid labor?

  • @ayoubthegreat

    @ayoubthegreat

    3 ай бұрын

    @@jhuglen whats wrong with it

  • @TheRyulord
    @TheRyulord3 ай бұрын

    The fact that Pickle and .pkl are already the name and extension for a common existing file format is driving me insane.

  • @ck-dl4to

    @ck-dl4to

    3 ай бұрын

    No one should use a file extension as identifier.

  • @DemPilafian

    @DemPilafian

    3 ай бұрын

    The fact that pickle ball makes such an annoying popping sound is driving me insane.

  • @monad_tcp

    @monad_tcp

    3 ай бұрын

    ​@@ck-dl4to NTFS had streams and that failed because people hate Metadata inside the file Metadata goes in the file system, the name is Metadata, extension and file type also is

  • @KaiHenningsen

    @KaiHenningsen

    3 ай бұрын

    @@monad_tcp NTFS probably had streams because MacOS had resource files.

  • @livioribeiro

    @livioribeiro

    3 ай бұрын

    Swift was already a programming language before Apple release theirs

  • @FIIRdesu
    @FIIRdesu3 ай бұрын

    13:17 "Imagine if your JSON autocompleted and gave you errors when you were editing it" You don't even have to imagine, it's already a thing with JSON Schema.

  • @ephektz

    @ephektz

    3 ай бұрын

    He mustn’t have edited a package.json in a while.

  • @CryptoDrewStreams

    @CryptoDrewStreams

    3 ай бұрын

    Within the first 3 mins of this video, I was already screaming JSON Schema. It follows DRY principles, has validation, is standardized, can be transpiled to POCO code in various languages. And JSON Schema files can also be referenced in an OpenAPI/Swagger spec to generate code for entire API endpoints. But sure, Apple, do your own thing. Just like they are trying to build the next standard of podcasting when we already have a well-developed Podcasting 2.0 standard.

  • @soniablanche5672

    @soniablanche5672

    3 ай бұрын

    yep and it's supported natively by vscode

  • @fullstack_journey

    @fullstack_journey

    3 ай бұрын

    Typical theo

  • @omri9325

    @omri9325

    3 ай бұрын

    But it doesn't have for-loopsd!!@#!@#

  • @jesse9999999
    @jesse99999993 ай бұрын

    as a person who uses python pickle files every day i find this naming choice very annoying

  • @timothyvandyke9511

    @timothyvandyke9511

    3 ай бұрын

    Literally thought the same thing (but I’ve only used the library like once)

  • @toeJams

    @toeJams

    3 ай бұрын

    PYTHONISTA: REEEEEEEEEEEEEEEEEE

  • @soupnoodles

    @soupnoodles

    3 ай бұрын

    Youre supposed to name those as ".dat" files

  • @magikarpusedsplash8881

    @magikarpusedsplash8881

    3 ай бұрын

    I found it funny because usually if I wanted to pickle something, there was a better solution assuming I wanted my project to be scalable in some way. And to be fair, you're going to choose one or the other, and as far as I know there's no external programs that open pickle files directly so you'll just be opening Apple's .pkl with a text editor and not touching pickles directly anyways.

  • @Axman6

    @Axman6

    3 ай бұрын

    You should probably stop using the security nightmare that is python pickle.

  • @SilentFool602
    @SilentFool6023 ай бұрын

    You can tell they want folks to use it because they also released a neovim plugin and aren't just catering to VScode users

  • @lbgstzockt8493

    @lbgstzockt8493

    3 ай бұрын

    Why does the EU live in your head rent-free?@@jhuglen

  • @lbgstzockt8493

    @lbgstzockt8493

    3 ай бұрын

    @@jhuglen Ah okay, I thought you had some weird hate-boner for the EU 😅

  • @jambalaya974

    @jambalaya974

    3 ай бұрын

    the neovim plugin is crap though

  • @jasondclark
    @jasondclark3 ай бұрын

    I used to Pickle my Python back in the day.

  • @marwan7614

    @marwan7614

    3 ай бұрын

    Mmm Pickled python.

  • @vikingthedude

    @vikingthedude

    3 ай бұрын

    My mom used to as well

  • @VivekYadav-ds8oz

    @VivekYadav-ds8oz

    3 ай бұрын

    ​@@vikingthedudeYour mom used to pickle his python?

  • @thedoctor5478

    @thedoctor5478

    3 ай бұрын

    I still pickle my python. pkl is a well-known file extension for this. WTF

  • @ahmadaccino
    @ahmadaccino3 ай бұрын

    the smartest thing a new standard can do is make it easy to incrementally migrate, and it seems they are doing that

  • @dstick14
    @dstick143 ай бұрын

    Someone's writing Doom in that

  • @NotNazuh

    @NotNazuh

    2 ай бұрын

    the funny thing is is that you're probably correct

  • @TanukiYT
    @TanukiYT3 ай бұрын

    I love that the example password they used was "hunter2" lol

  • @SeafoodFriedRice

    @SeafoodFriedRice

    3 ай бұрын

    What was the password? All I see is *******.

  • @sion123ful
    @sion123ful3 ай бұрын

    I work at apple, i joined when it wasn’t open source and i was very skeptical about PCL ( internal it’s called PCL instead of PKL) but it does solve a lot of problems and the IDE integration is great. It has completely replaced helm in our team, it’s much better. I hope eventually helm charts will also be published in PKL.

  • @dronicx7974
    @dronicx79743 ай бұрын

    I feel bad for people that have to now use this and the pickle module for file saving in python programs

  • @catalystcorp

    @catalystcorp

    3 ай бұрын

    I feel bad for people that have to use python.

  • @techsavvy9258

    @techsavvy9258

    3 ай бұрын

    Yeah fuck me

  • @X-3K

    @X-3K

    3 ай бұрын

    @@catalystcorpi feel bad for people

  • @gh0stcloud499

    @gh0stcloud499

    3 ай бұрын

    @@X-3KI feel bad

  • @tsvetanvasilev8346

    @tsvetanvasilev8346

    3 ай бұрын

    @@gh0stcloud499I feel

  • @Brixster
    @Brixster3 ай бұрын

    Regex makes this all the more cursed. Now you can have a string format language inside of a data format language which can now be directly processed inside of your application's language, which means you have a language in a language in a language. I am absolutely digging this! 😂

  • @mortenhattesen

    @mortenhattesen

    2 ай бұрын

    Strictly speaking, RegEx is not a language, it is a pattern matching syntax. What would a better alternative have been? Invent yet another string pattern matching syntax for Pkl?

  • @lunakid12

    @lunakid12

    Ай бұрын

    ​@@mortenhattesenIt was (basically) a tongue-in-cheek comment.

  • @thegittubaba
    @thegittubaba3 ай бұрын

    About the IDE autocompletion 13:30, you do have json-schema.

  • @Gunzy83

    @Gunzy83

    3 ай бұрын

    ​@@jhuglen Wtf are you on about

  • @ParasocialCatgirl

    @ParasocialCatgirl

    3 ай бұрын

    ​@@jhuglenthe easiest comments to delete are the comments that never get made 🙏

  • @iivarimokelainen

    @iivarimokelainen

    3 ай бұрын

    ​@@jhuglenyou need to get off the internet

  • @DrumMeister

    @DrumMeister

    2 ай бұрын

    It’s time consuming to write, even if tools can help it’s full of boilerplate

  • @ilonachan
    @ilonachan3 ай бұрын

    chatter getting worked up about "version conflicts in config files": that's literally just a thing. The config format (or parts of it) may change over time after all, and it's important to keep track of that. It's great if Pkl can encode these existing problems and provide editor support for solving them... tho I wonder what form that'll take in practice, if and how different versions of a config format might be supported at the same time.

  • @MichaelBabcock

    @MichaelBabcock

    2 ай бұрын

    There's a difference between changing config files and tracking configuration versions so you can load data from older formats properly.

  • @corscheid
    @corscheid3 ай бұрын

    It's basically the SCSS/SASS of config. Slick.

  • @jacoL8

    @jacoL8

    3 ай бұрын

    @@jhuglen hey can you stop spamming replies with this nonsense… You are conflating two completely different things… Apple is forced by the eu to conform to certain standards that the eu has set, like using USB-C ports, but that doesn’t mean that the eu has “forced” them to make a config language they developed open source… Like.. I really don’t know what you mean by “eu forced them” or “only in eu” here

  • @SwatejTech

    @SwatejTech

    3 ай бұрын

    I'm guessing you are 14 @@jhuglen

  • @sebastianskovnielsen6472

    @sebastianskovnielsen6472

    3 ай бұрын

    @@SwatejTech I wan't to know what he said ):

  • @OverG88

    @OverG88

    3 ай бұрын

    Actually, it's mostly HOCON.

  • @Ali-sc6dh
    @Ali-sc6dh3 ай бұрын

    This is so awesome ! Currently I'm using json config file to validate and get autocomplete on my json files. And I do not have the best experience with it. Pkl could be a game changer !

  • @AndrewTSq
    @AndrewTSq3 ай бұрын

    My first thought was it sounds just more complicated to use

  • @justa9560

    @justa9560

    3 ай бұрын

    @@jhuglen You really need to take a nap or some shit man. It's either extreme sleep deprivation, an absurd amount of alcohol, or you're doped the fuck up on psychedelics. Either way, you need a break

  • @ESPViper100

    @ESPViper100

    2 ай бұрын

    That's my second and third thought as well. No, wait, the third is overengineered.

  • @DeuxisWasTaken
    @DeuxisWasTaken3 ай бұрын

    When I saw a configuration language that is "a blend between a static language and a general-purpose programming language" I immediately thought of Nix, a language with similar ideas created for a similar purpose. Nix doesn't seem to do very well outside Nix and NixOS ecosystems though, and Pkl does seem easier to grasp.

  • @miallo

    @miallo

    3 ай бұрын

    Totally agreed - for my NixOS system that I have been using for almost 4 years now I am happy with the subset of the Nix language that I need to know, but even then it sometimes still is hard for me to understand the syntax. And for programmer that is not used to it I think it is harder to fight with some of the constraints that you will run into when using nix in a very dynamic ecosystem: in the company I work for we are using it e.g. for building some JavaScript stuff and just the amount of work it takes for _some_ of the dependencies to be packaged is just insane (but to be honest, so is what those dependencies are doing on installation...). So yes - I really love NixOS, but I personally am sometimes struggling a bit with the nix language (yes - because I don't use it (or something similar) that often)

  • @dotanuki3371

    @dotanuki3371

    2 ай бұрын

    @@miallo just learn FP .. here's a hint: you can do everything with foldl'

  • @thetukars
    @thetukars3 ай бұрын

    Just taking a preliminary look, it genuinely looks fantastic

  • @_fudgepop01
    @_fudgepop012 ай бұрын

    honestly this seems REALLY cool - from the title I thought it was just another way of storing data that's nicer to use than json like hjson or yaml, but no this seems like WAY more!! really cool stuff :D

  • @chhihihi
    @chhihihi3 ай бұрын

    Being a big fan of comptime in Zig, this will work beautifully. Types in more complex use cases are in desperate need of logic that can be resolved during the compilation of a particular program.

  • @kevanschwitzer8585
    @kevanschwitzer85853 ай бұрын

    This is the kind of content I'd subscribe for. Have seen your videos ocassionally, but valuable content like this is subsbscription worthy.

  • @PatrikStutz
    @PatrikStutz3 ай бұрын

    Sooo... They didn't know Nix, Nickel, Dhall, CUE, Jsonnet or HCL existed and therefore had to create their own thing? :/ It doesn't even look that good tbh. But yeah, impressive that Apple open sources something. That doesn't happen very often.

  • @DemPilafian

    @DemPilafian

    3 ай бұрын

    What browser did you use to make your comment?

  • @nikkiofthevalley

    @nikkiofthevalley

    3 ай бұрын

    ​@@jhuglenWhy on Earth are you constantly talking about the EU in every single comment?? What about any of this has anything to do with the EU????

  • @game_time1633

    @game_time1633

    3 ай бұрын

    @@jhuglenbro you’re drunk get off KZread 💀

  • @torsten_dev

    @torsten_dev

    3 ай бұрын

    ​@@jhuglen The EU just said you need user consent before you store data on their PC for reasons other than purely functional. The Industry could have just followed the Do Not Track setting, but they want your data. Not the EU's fault that sites are evil.

  • @ytdlgandalf

    @ytdlgandalf

    3 ай бұрын

    Cuelang is still rough but the real deal. I'm trying to understand it better and contribute.

  • @qandstuff
    @qandstuff3 ай бұрын

    That’s really interesting, thanks for doing a video on this.

  • @togofar
    @togofar3 ай бұрын

    That you can reference an environment variable from a pkl file is absolutely terrifying.

  • @Ebiko
    @Ebiko3 ай бұрын

    So from my understanding, this is supposed to help checking out projects, where the default config is ommitted from the repository, but you still want a default config to be created on first run, like an ENV bootstrap ? Or what is this useful for ?

  • @3ombieautopilot
    @3ombieautopilot3 ай бұрын

    There's another configuration language I like which is Dhall. For those who love Haskell, Rust and etc.

  • @PRIMARYATIAS

    @PRIMARYATIAS

    3 ай бұрын

    Unfortunately it seems only the Haskell bindings are maintained and non of the other languages.

  • @victorperezasuaje255
    @victorperezasuaje2553 ай бұрын

    Pkl feels like Typescript meets SASS

  • @scottamolinari

    @scottamolinari

    3 ай бұрын

    I was about to say something similar.

  • @cobrasys

    @cobrasys

    2 ай бұрын

    Very true.

  • @ChristopherCricketWallace
    @ChristopherCricketWallace3 ай бұрын

    I would rather them put thos energy into fixing the crashing bug in Xcode. Or maybe decoupling that IDE and compiler from MacOS versions so you can work on old apps without having to switch to old Macs with old MacOS versions.

  • @wolfeygamedev1688

    @wolfeygamedev1688

    3 ай бұрын

    lol, apple dev will always be somewhat cursed. Its what they chose when they decided to be super proprietary.

  • @designator7402

    @designator7402

    3 ай бұрын

    >old (anyhting) >Apple There is no backwards compatibility. There is no tolerance. You will work with the newest version, whether or not it makes sense.

  • @markuskonrad6049

    @markuskonrad6049

    3 ай бұрын

    You do realise Apple has more than 5 engineers and not all of them can meaningfully work on xcode, right?

  • @U20E0

    @U20E0

    2 ай бұрын

    does Apple even use XCode internally?

  • @John-zz6fz
    @John-zz6fz2 ай бұрын

    This is really pretty awesome... I am very excited to use this

  • @joaodiasconde
    @joaodiasconde3 ай бұрын

    I dont want logic in my config files, jesus christ I cant find this appealing at all.

  • @geomorillo

    @geomorillo

    3 ай бұрын

    Really i prefer to validate my jsonf config file in my code, i dont like this and i agree with you, whats with this trend of overcomplicating things....omg, for example in c# i could use a library like fluenvalidation an validate rules for my json's structure with rules like "port" is an int for example .... not needing to define a new language for that 🤣🤣

  • @henlostinky273

    @henlostinky273

    3 ай бұрын

    this, just writing the parser for this was probably some intern's whole summer and it only made the problem worse. JSON is from 2001 and it's not impressive to be slightly better than one part of it 20 years later.

  • @duartecunhaleao

    @duartecunhaleao

    3 ай бұрын

    I would love not to have to write any more validation code along the main code...

  • @joaodiasconde

    @joaodiasconde

    3 ай бұрын

    @@duartecunhaleao but consider that what is 'valid' may change from consumer or other factors and I doubt you are going to skip server/app side validations anyways and just leave it to this config, so you will end up doubling the validations. Also validation should be close to the app code im reading/writing as it is crucial.

  • @Spoonbringer

    @Spoonbringer

    3 ай бұрын

    Seriously. And if you are creating long config files with a lot of repetition just write a script to generate them.

  • @jocdiazm
    @jocdiazm3 ай бұрын

    Honey, I shrunk the JSON!

  • @terabit7400

    @terabit7400

    3 ай бұрын

    Don’t worry, you have a great personality ❤

  • @mortenhattesen

    @mortenhattesen

    2 ай бұрын

    Did you end up with YAML?

  • @Lemmy4555
    @Lemmy45553 ай бұрын

    As a Typescript developer i don't see much value in this, because a pkl file have roughly the same lines of code of a regular js/ts file used for configuration, but using js/ts doesn't need to install additional binaries or dependencies. However i can see some potential for more complex languages like Go/Rust/Java/etc. that are not suited for small "scripts" since they take in account stuff that you don't care when creating a configuration file such as pointers, packages, namespaces, classes, the borrow checker, constructors, errors handling.

  • @dealloc

    @dealloc

    3 ай бұрын

    > but using js/ts doesn't need to install additional binaries or dependencies Huh? What world are you living in where JS and TS doesn't require binaries or dependencies?

  • @recepciftci2642

    @recepciftci2642

    3 ай бұрын

    @@dealloc Computer has already NodeJS installed. So you don't need to install anything extra.

  • @dealloc

    @dealloc

    3 ай бұрын

    @@recepciftci2642 What computer? No computer comes with NodeJS preinstalled. You may have Docker images, but then it makes his initial point moot. Plus you'd still need to add TSC compiler as a dependency. That is besides the point, it's comparing apples to oranges.

  • @Nekroido

    @Nekroido

    3 ай бұрын

    @@dealloc you don't need to add TSC to a TS project, because it's already been added. Use TS configs for TS projects, PHP for PHP projects, you get it

  • @MrBa143

    @MrBa143

    2 ай бұрын

    ​@@dealloc I will help you understand the comment. The comment did not mean that JS and TS doesnt require binaries / dependencies to be installed, the commentor was talking about simply using JS/TS files as a configuration file, thus not having to install any other binaries related to configuration management tools. Sometimes its okay to assume things and not take everything literal, especially in a world in which english is a secondary or tertiary language for many people. Perfect grammar is something alot of us wish we'd have. Sometimes we slip up, and the meaning of a sentence might differ from what we actually had in mind when we wrote it.

  • @zephyr7k
    @zephyr7k3 ай бұрын

    I can't wait to see this for Terraform

  • @gearboxworks

    @gearboxworks

    3 ай бұрын

    Of course a third party might do it, but it's not likely to get first-class support from Hashicorp since they defined their own config language in HCL. It *might* make Hashicorp listen to users more and address some of the issues with HCL, though.

  • @LaoZhao11

    @LaoZhao11

    3 ай бұрын

    I agree with your point of view!!!

  • @pqnet84

    @pqnet84

    Ай бұрын

    Have you tried cdktf?

  • @PieJee1
    @PieJee13 ай бұрын

    When i heard about pkl i was not interested thinking we already have enough tools, but the features shown here have some features. I can imagine using this to share a configuration between a frontend js and a backend rust/php/c application.

  • @HaraldEngels
    @HaraldEngels3 ай бұрын

    Cool, if that should become available for PHP I will use this straight away. Thanks for sharing.

  • @murtadha96
    @murtadha963 ай бұрын

    This actually seems AWESOME!

  • @Wurlipurili
    @Wurlipurili3 ай бұрын

    Is there a specific software that records Arc pages in such a way (rounded edges, link in the middle-top, square camera feed)? Seen it a few times

  • @froxx93
    @froxx933 ай бұрын

    That gives me strong Proto vibes. Looks cool. Especially for data APIs

  • @TheKmsaboor
    @TheKmsaboor3 ай бұрын

    Yes .properties are still being used especially in default spring boot apps

  • @31redorange08

    @31redorange08

    3 ай бұрын

    Can't blame him. He lives in a frontend bubble.

  • @shubitoxX

    @shubitoxX

    3 ай бұрын

    you can use yaml configs which are more readable for larger configs

  • @TheKmsaboor

    @TheKmsaboor

    3 ай бұрын

    @shubitoxX I know I just wished my department used YAML more often 😂

  • @mohitkumar-jv2bx
    @mohitkumar-jv2bx3 ай бұрын

    I am loving that theo has returned back to his roots in terms of tye content he is putting out.

  • @asmod4n
    @asmod4n3 ай бұрын

    Til now I’ve just used URLs for configuration, this looks like the first replacement which actually adds useful functionality beyond that.

  • @Moosems-pk8vc
    @Moosems-pk8vc2 ай бұрын

    Does it support references/pointers from one variable to another? It would make so many past JSONS of mine so much cleaner. For example: if I have a file that outlines the theme of a custom code editor and I want to have an easy to edit color scheme, I have to change each occurrence of a color in a JSON file but if I could reference variables I could put the color scheme at the top and make all uses references so it can easily be modified.

  • @spaphy
    @spaphy2 ай бұрын

    I'm going to keep using JSON, avoid YAML, never use XML on principal and now avoid using Pkl. Sounds good!

  • @offroaders123
    @offroaders1233 ай бұрын

    Wow this is extra cool! Been looking into doing things like this lately, with TS types. I've been wanting to write a language-agnostic schema for Minecraft NBT types, which can be saved down to any language's type system as needed. This could work extra well for that. It kind of reminds me of WebIDL as well!

  • @palmberry5576

    @palmberry5576

    2 ай бұрын

    ??? What do you mean by language agnostic? Nbt is language agnostic and if you are too lazy to parse binary data, snbt exists

  • @offroaders123

    @offroaders123

    2 ай бұрын

    @@palmberry5576 I meant that like rather than writing the type definitions for the NBT shapes using `.d.ts` files, I'd like to build those using some form of intermediate definition language, which could be more-easily converted to that of other programming languages. Say like how this is in TS, `interface Hi { Hello: StringTag; }`, it would be nice to have a way to deduce the equivalent of what that would be in C++, so something like `struct Hi { string Hello; }`.

  • @mkaufmandev
    @mkaufmandev2 ай бұрын

    Did I miss a way to fix iterating over and parsing arrays and/or objects and mixes of the two? JavaScript's nested for loops or for ins or Lodash etc.. to get properties and values is stupid. Did I miss where Pkl fixes this? The casting of obj/array just to iterate and put in the correct order and other things? Thanks for the video nonetheless.

  • @JoshuaBarone
    @JoshuaBarone3 ай бұрын

    How would you compare this to Cue? Seems like they are solving the same problems

  • @WeaponBalalaika

    @WeaponBalalaika

    3 ай бұрын

    Yes, definitely! cue seems more pure and pkl more eng oriented. They clearly share underlying abstraction.

  • @codingjake

    @codingjake

    3 ай бұрын

    I was thinking the same thing

  • @DryBones111

    @DryBones111

    3 ай бұрын

    Cue looks more powerful to me. The built in scripting engine in Cue is brilliant.

  • @brodriguez11000

    @brodriguez11000

    3 ай бұрын

    @@DryBones111 Hopefully no security holes.

  • @ssshenkie
    @ssshenkie3 ай бұрын

    Cool idea, but I'm having a hard time understanding the actual use case. I have never found myself needing a language agnostic config, Both JSON and YAML have schema files which solves auto complete.

  • @dealloc

    @dealloc

    3 ай бұрын

    When you work with environments which practically live on configurations and a mistake can take down a fleet of services, this is _very_ useful.

  • @virkony
    @virkony2 ай бұрын

    Nickel also have constraints and documentation. And Nix is really cool in merging things and have inter-dependent pluggable modules of configurations.

  • @franklerch1012
    @franklerch10122 ай бұрын

    reading an article while recording yourself is soooo creative, original and value adding....

  • @patricknelson
    @patricknelson3 ай бұрын

    All the Python folks are hissing about this (don’t blame ‘em, they’ve been using “pickle” for serialization for ages). Anyway - I wonder if at Apple, all their Kubernetes cluster manifests are written in Pkl files. Hmm… that’d be interesting to look at!

  • @BastianInukChristensen
    @BastianInukChristensen3 ай бұрын

    1:26, Apple has an official Swift LSP for VSCode btw

  • @joseph_p
    @joseph_p2 ай бұрын

    I could see this being useful for generating docker compose files.

  • @DeuxisWasTaken
    @DeuxisWasTaken3 ай бұрын

    They thankfully realised that the only way to have it adopted is to not only open source it but provide extensions to major editors, even VS Code. It's a good call, if they tried to make something proprietary, it would die painfully. Pkl seems cool, but it smells of something that will be infamous for quirks and hard to make parsers like YAML. Time will tell I guess, I do like it and hope it catches on and ends up being good.

  • @AloisMahdal
    @AloisMahdal3 ай бұрын

    sure validation is PITA, but why solve it only for file-based config? what about envvars, CLI params and other places such as HTTP endpoints?

  • @Danny-zn8hd
    @Danny-zn8hd3 ай бұрын

    A few years ago Apple introduced a conditional and declarative configuration mobile device management model to set conditional parameters to be set on the iOS, MacOS operating systems. This seems like the underlying programming framework is pKL.

  • @mattmmilli8287
    @mattmmilli82873 ай бұрын

    ngl the most interesting part to me is standardizing the way runtime json gets generated 😮 it’s an easy task but cool not to have to decipher whatever madness someone cooks up to do it

  • @Jebediah_w
    @Jebediah_w3 ай бұрын

    This feels like a great format for openapi honestly. It's easy to generate clients for APIs if you share the pkl files

  • @seannewell397
    @seannewell3973 ай бұрын

    Is it a less powerful nix?

  • @_RafaelKr
    @_RafaelKr2 ай бұрын

    Awesome, finally I can write my Ansible configs in a sane way. Not the full config, but what I define in my Inventory.

  • @trietang2304
    @trietang23043 ай бұрын

    Such a cool thing. I think an app need to have a lot complex config to require something like this.

  • @ArizeOW
    @ArizeOW3 ай бұрын

    "Pickle" sounds like "Pickel" which is German for "Pimple". Can't wait to hear my coworkers say "Create a pimple file for this project!". For that reason, I'm out 😆

  • @carmineingaldi47
    @carmineingaldi473 ай бұрын

    It seems they tried to recreate Terraform's HCL language, but without Terraform behind. Still I don't see it's usage overlapping wit json/yaml/toml or whatever. Let's see 3 use cases: 1. Transport format: it doesn't seem suitable (if I need schema oriented stuff and validation why not using binary formats such as thrift,avro or protobuffers?) 2. app configuration: imho I still would go for something simple and execute logic in my application instead of adding an additional step in my build process for compiling and packaging 3. Build configuration: do i really need standardization?eg If I'm in the jvm ecosystem I use gradle with groovy or kts and there is one in a billion cases where I need to transfer this configuration to another stack. Yes it takes more mental energy to learn all the tools and languages in order to be a polyglot developer but there is not so much to do unless you don't want to invent a an ecosystem agnostic deps/build management system...and good luck with that!

  • @MSparta4ever
    @MSparta4ever2 ай бұрын

    Seems pretty nice for testing purposes too. Could define data structure in pkl and create tests that are invalid. If you also could import data restrictions from pkl into the code, that would be awesome. Like defining data structure in pkl and define constraits on the data there, and using data described in the structure in the code would then import the constraints too. Though exporting logic out of the code is not necessarily that good, but maybe could use some autocomplete function in IDE instead.

  • @ChristopherButeau
    @ChristopherButeau2 ай бұрын

    Seems really neat tech. I do not see a use case where I need to generate all these configuration files.

  • @mortenhattesen
    @mortenhattesen2 ай бұрын

    It's like what CMAKE is to Make (and other build systems). A meta-configuration language/syntax to generate/validate configuration files

  • @prozacgodgamedev
    @prozacgodgamedev3 ай бұрын

    I tried something tangentially similar to this - I had a half hearted attempt years ago at SQL -> yaml for minecraft server (modded) The idea was I would normalize all configuration into a database, and then through a FUSE filesystem mounted over your config folder, it would magically generate confs to read and accept changes written to it. I never finished it but it seemed like a cool idea.

  • @Thorax232
    @Thorax2323 ай бұрын

    JetBrains editors already have a decent understanding of common config files. package.json for example has the autocomplete that's shown here (it will even do lookups for dependency versions). next.config.js has this too. But I understand the value of codifying this into something common.

  • @omri9325
    @omri93253 ай бұрын

    This is very very cursed, could not expect less from Apple

  • @Rudxain
    @Rudxain3 ай бұрын

    2:01 I wish Rust had built-in syntax for that. Ranged Ints are cool and all, but it should be built-in for any lang like Rust

  • @PASTRAMIKick
    @PASTRAMIKick3 ай бұрын

    idk, Apple is kinda growing on me, if they allow sideloading on their phones one day I might find myself being an Apple guy

  • @flipperiflop

    @flipperiflop

    3 ай бұрын

    Be careful with identifying yourself with a corporation - they are not your friends, and that logic can blind you to the dirty tricks the corporation does.

  • @secretzpt176

    @secretzpt176

    3 ай бұрын

    If it has anything to do with the USB-C, removable batteries or sideloading then it seems like the EU regulations are growing on you 😂 Maybe one day the EU will also enforce right to repair, we can only hope.

  • @PASTRAMIKick

    @PASTRAMIKick

    3 ай бұрын

    @@flipperiflop it's just an expression I would never be a consoomer or simp for a corporation. I would never base my identity on a corporation that thought is repulsive to me, don't worry bud

  • @PASTRAMIKick

    @PASTRAMIKick

    3 ай бұрын

    @@secretzpt176 that'd be awesome, although I'm sure Apple will to anything in its power to only apply these good changes in the EU as long as it doesn't affect their bottom line

  • @pifpafize
    @pifpafize2 ай бұрын

    wow thats soooo cool! solves alot of things that i wrote my own stuff for..

  • @excitedbox5705
    @excitedbox57053 ай бұрын

    So C macros for config files? something like Cmake? This is just another syntax to add to the collection I have to use once every few weeks. Between all these scripting languages, config formats, CLIs, programming languages, etc we are expected to know is nearing 100+.

  • @soniablanche5672

    @soniablanche5672

    3 ай бұрын

    you can actually use C macros in any languages, but nobody does it because it would confuse newbies who have no idea what a preprocessor is EDIT: also your IDE would complain about syntax errors lol

  • @dealloc

    @dealloc

    3 ай бұрын

    Definitely not like CMake. Thankfully.

  • @gjermundification
    @gjermundification3 ай бұрын

    Does it have its own query language like XSLT?

  • @withindreams
    @withindreams3 ай бұрын

    Dude this isn't as big of a problem in JS land. For JSON, we have schemas. For JavaScript and TypeScript, most packages come with a defineConfig out of the box, and if they don't, rest assured somebody has already published an NPM package for that purpose.

  • @krellin
    @krellin3 ай бұрын

    this is a great tool that solves something that is not big of a deal... i'll use it too. Nice that someone solved it and shared as open source.

  • @rafaelnegron_web
    @rafaelnegron_web3 ай бұрын

    I feel like that laugh at 3:49 was a genuine Theo, almost like he broke character for a second and had a real chuckle. Great content! Keep it up.

  • @jenreiss3107
    @jenreiss31072 ай бұрын

    I wish there was a rust integration. this looks fantastic for my work

  • @dzivojelic
    @dzivojelicАй бұрын

    once again reinventing the wheel 😅😅

  • @emo4123
    @emo41233 ай бұрын

    apple and open source in the same sentence is funny af

  • @Mikenight120
    @Mikenight1203 ай бұрын

    The fact Go is considered as the first 4, shows Go is going places🔥

  • @stankenootgaming
    @stankenootgaming3 ай бұрын

    Was pkl apple's?? have been using it for a while with my save data for games, has worked OK for me so far

  • @HiImKyle
    @HiImKyle3 ай бұрын

    So it doesn't replace or "kill" anything, it just makes making those things more usable? I don't think I'm understanding it right

  • @yoanhg421

    @yoanhg421

    3 ай бұрын

    Clickbait

  • @felixw841

    @felixw841

    3 ай бұрын

    Well, both. There's the json/yaml/whatever generators in the CLI itself. With those, you could only ever *write* PKL from now on and add a pkl step to your build process which translates your pkl config your desired format. There's also the interpreter/compiler implementation for different languages, so you could also load pkl files directly from through one of the supported languages (Go, Java, Kotlin, Swift) without the intermediate step to json/yaml/...

  • @HiImKyle

    @HiImKyle

    3 ай бұрын

    @@felixw841 But whats wrong with json schema?

  • @stephenjames2951
    @stephenjames29513 ай бұрын

    Would like to see some AWS cloud formation config written in this. I find YAML hard to parse mentally

  • @j.r.qwertz
    @j.r.qwertz3 ай бұрын

    Sounds nice. Now I'm thinking about Pkl generating XML files...

  • @Duconi
    @Duconi2 ай бұрын

    How does pkl solve validation? If you write the checking condition into the config file, someone can just change the condition together with changing the config. It has to be validated in the application itself. So you could just use JSON Schema to validate a JSON config and that would work better, as the config itself is smaller and you don't have to implement validation twice and it's already supported by IDEs. I can imagine it for infrastructure as code but for example Terraform already has a language for it, called HCL. Maybe pkl is better than HCL. It looks to me not like a replacement for JSON but a programming language to generate JSON. Similar to CDKTF, where you write for example TypeScript code to generate a JSON to execute with Terraform. There Pkl could help.

  • @nO_d3N1AL
    @nO_d3N1AL3 ай бұрын

    This came out of nowhere, they basically made a very accessible and powerful modelling language with generators and all... incredible

  • @enderger5308
    @enderger53083 ай бұрын

    This concept has already been executed in the form of Dhall and Nickel. Nice to see another competitor, but I’ll stick with Dhall.

  • @gearboxworks

    @gearboxworks

    3 ай бұрын

    Had not heard of DHall or Nickel. Just found their websites and notice that while DHall has a VS Code plug-in, they have no support for JetBrains IDEs. So for that reason alone Pkl is more attractive to me, since I'm spend most of my days in GoLand.

  • @rpWeb3
    @rpWeb33 ай бұрын

    I am not sure why, but I love this..

  • @monterreymxisfun3627
    @monterreymxisfun36273 ай бұрын

    Does pkl work with Kubernetes?

  • @ivailogeimara
    @ivailogeimara3 ай бұрын

    Why would you create a new language with regex support and use strings for regex that need to be escaped? They could use the perl/js regex syntax of a statement surrounded by 2 slashes.

  • @CalebHesse01
    @CalebHesse013 ай бұрын

    Am I the only one that thinks this would be creating more work and costing more time than it saves? It just seems awfully redundant. Maybe it's just because of the nature of what my projects usually are...

  • @vitalysuper3193
    @vitalysuper31933 ай бұрын

    Every year you present two vscode killers and three json replacements

  • @JordanShurmer
    @JordanShurmer3 ай бұрын

    Theo, I like your style. You should look into bespoke british tailoring

  • @sergiotortosabenedito8604
    @sergiotortosabenedito86043 ай бұрын

    Honestly, I've already seen all of this before. There's a language much smaller called Nickel, same concept but it's based on FP (perfect for config) and it's already past 1.0.0.

  • @bholmesdev
    @bholmesdev3 ай бұрын

    Got mad scientist thoughts for a better Drizzle now…

  • @brokecoder
    @brokecoder3 ай бұрын

    I will wait till openai, trains gtp on pickel.

  • @tombuckley91
    @tombuckley913 ай бұрын

    I knew Silicon Valleys fondness of pickleball was going to spill over into the collective unconscious.

  • @hopskipjumpfly
    @hopskipjumpfly3 ай бұрын

    Now can you please do that video on why you love Xcode? 😛

  • @anthonvanderneut
    @anthonvanderneut2 ай бұрын

    I went over the source code of Pkl and although it support non-string keys in mappings (i.e. more like msgpack than JSON), it looks like very much it only support a subset of YAML 1.1. Since the YAML 1.2 has been out since 2009, that might have to do with the state of YAML parsers/dumpers in the Java/Kotlin, world and not necessarily a conscious choice by the developers. That unfortunately makes it only a potential replacement for a subset of YAML supporting applications, and also not a potential replacement for Python's pickle format.