For more engineering updates and insights: * Visit our blog: www.wix.engineering/blog * Follow us on: Twitter: twitter.com/WixEng * Visit us on GitHub: github.com/wix * Subscribe to our monthly newsletter: www.wix.engineering/subscribe * Follow our Medium publication: medium.com/wix-engineering * Listen to our podcast: www.wix.engineering/podcast * LinkedIn: www.linkedin.com/showcase/wix-engineering/
Hi all A few answers to the comments below: 1. I'm using neovim 2. The repl is leningen inside a drop down terminal of your choice (yakuake/guake/iterm2) 3. Some plugins that I use: fireplace, rainbow-parens, paredit, ale 4. The errors in vim are from the ale plugin in tandem with joker - a clojure linter Glad you enjoyed this! P.S - I'm not a Wix employee - Wix mainly write in Scala on the backend. I work at AppsFlyer and gave this talk at Wix at their request
Hi Nir: Thanks for the talk and for the response to the Qs here. Is there any way to get @Wix Engineering Tech Talks to pin this comment so that it stays at the top of the page?
This presenter is awesome, whenever I'm thinking of a question he immediately answers it, as if he knew what I was thinking! 12/11, would definitely recommend!
I tried learning Scheme on my own when I had just learned programming and I was put off by it's odd syntax, but now that I am interested in functional programming again some 20 years later thanks to my exposure to ReactJS, I find Clojure's syntax very appealing (this video is the first time I see it). It looks way more approachable than Haskell (for a non lambda calculus nerd) and seems to have a more developed ecosystem of third party libraries than Elm. I'm going to have to take a deeper look.
The `:as` is used to separate the requests parameters from the request itself. When you list the parameters, you get both named parameters (the ones specified on the route string) as well as query string parameters (ones that don't appear on the route string, used with a question mark). Example: (GET "/user/:name" [name company] (str "Hello " name ", from " company "!")) You can then call the URI `server.example/user/dmitry?company=acme` and that works. If you, besides the request parameters (named and query string), want the request itself, you use the `:as` keyword to say the parameters list is finished, and the next variable will hold the request. (GET "/user/:name" [name company :as req] (str "Hello " name ", from " company "!")) I now have a reference to the request itself (which I didn't use, but I could). :)
Its neovim. Specifically with a Qt graphical frontend. There are graphical frontends (e.g. gtk), or you can just run it in a shell. I typically use it that way, this vid is making me consider switching to a graphical frontend.
I do get why you'd assume this, but it's not correct. Framework === Multiple libraries serving you as a toolkit. Take Ruby on Rails as framework example and React as JavaScript UI Library.
There is a huge difference between libraries and frameworks. With libraries you call it's code, with frameworks, it calls your code. Example: you can use a "bridge pattern" with a library, calling your own function that implements the needed functionality being provided by the library. This gives you the ability to swap out the library later without having go and revisit every implementation of that library throughout your application (running into this now with an ORM). However with a framework, there is no such protection, it IS your application, it IS your code. You can't just swap out a framework - you simply rewrite your app. This the same argument I'd use against React's claim to be merely a "view library". Try and head and swap it out for another "library", you'd end up rewriting your entire app.
For more engineering updates and insights:
* Visit our blog: www.wix.engineering/blog
* Follow us on: Twitter: twitter.com/WixEng
* Visit us on GitHub: github.com/wix
* Subscribe to our monthly newsletter: www.wix.engineering/subscribe
* Follow our Medium publication: medium.com/wix-engineering
* Listen to our podcast: www.wix.engineering/podcast
* LinkedIn: www.linkedin.com/showcase/wix-engineering/
Hi all
A few answers to the comments below:
1. I'm using neovim
2. The repl is leningen inside a drop down terminal of your choice (yakuake/guake/iterm2)
3. Some plugins that I use: fireplace, rainbow-parens, paredit, ale
4. The errors in vim are from the ale plugin in tandem with joker - a clojure linter
Glad you enjoyed this!
P.S - I'm not a Wix employee - Wix mainly write in Scala on the backend. I work at AppsFlyer and gave this talk at Wix at their request
Amazing talk, I wish to see more talks like this. You have such an amazing interactive skill and its fun watching you. Thanks
Hi Nir: Thanks for the talk and for the response to the Qs here. Is there any way to get @Wix Engineering Tech Talks to pin this comment so that it stays at the top of the page?
This presenter is awesome, whenever I'm thinking of a question he immediately answers it, as if he knew what I was thinking! 12/11, would definitely recommend!
I tried learning Scheme on my own when I had just learned programming and I was put off by it's odd syntax, but now that I am interested in functional programming again some 20 years later thanks to my exposure to ReactJS, I find Clojure's syntax very appealing (this video is the first time I see it). It looks way more approachable than Haskell (for a non lambda calculus nerd) and seems to have a more developed ecosystem of third party libraries than Elm. I'm going to have to take a deeper look.
been tryna learn this language since 2012… not easy to do as side project
great talk, really enjoyed this
Very good! Thanks for putting this up..
Great talk. I would like to know what neovim's plugins did he use?
Great! Very clean explanation of things
What gives you those blinking errors?
What vim/neovim plugins is he using ?
Did that change that http-kit is now a wrapper around netty? I remember it being a full http implementation.
Absolutely correct - I was thinking about aleph-http when giving the talk. http-kit has its own impl.
Great! I only not understand clearly why need :as in binding after GET
The `:as` is used to separate the requests parameters from the request itself. When you list the parameters, you get both named parameters (the ones specified on the route string) as well as query string parameters (ones that don't appear on the route string, used with a question mark). Example:
(GET "/user/:name" [name company]
(str "Hello " name ", from " company "!"))
You can then call the URI `server.example/user/dmitry?company=acme` and that works. If you, besides the request parameters (named and query string), want the request itself, you use the `:as` keyword to say the parameters list is finished, and the next variable will hold the request.
(GET "/user/:name" [name company :as req]
(str "Hello " name ", from " company "!"))
I now have a reference to the request itself (which I didn't use, but I could). :)
awesome!
can someone tell what editor he is using?
He's using Vim.
vim in the yakuake drop down terminal
Its neovim. Specifically with a Qt graphical frontend. There are graphical frontends (e.g. gtk), or you can just run it in a shell. I typically use it that way, this vid is making me consider switching to a graphical frontend.
I need his .vim*
That's great! I didn't know Borat uses Clojure...
"we'll do it live"
Has a Gnome sticker on but runs KDE?
I find it a real crime, I mean... using Vim for speed and a bloaty window manager behind. Anyways...
It's not a window manager. But it's convenient so can't really blame him for that.
gnome has a cooler logo, that's all
Who gives a sh*t what and how he uses his machine?
strange fellow but very good teaching style
Clojure is bordering on esoteric language, right? All those parentheses.. 😂😂
Nah
he's doing coding without mouse or advanced editor, he's probably a god
NOTHING TO DO WITH THE VIDEO'S TITLE. SKIP THIS VIDEO AND FIND ANOTHER ONE THAT ACTUALLY EXPLAINS CLOJURE.
*Maybe production ready but certainly not simple! I can do the same in seconds. Why? Because it's always the same crap and I have a template for it!*
You dis frameworks and then you discuss libraries. frameworks and libraries are the same thing.
I do get why you'd assume this, but it's not correct. Framework === Multiple libraries serving you as a toolkit. Take Ruby on Rails as framework example and React as JavaScript UI Library.
There is a huge difference between libraries and frameworks. With libraries you call it's code, with frameworks, it calls your code. Example: you can use a "bridge pattern" with a library, calling your own function that implements the needed functionality being provided by the library. This gives you the ability to swap out the library later without having go and revisit every implementation of that library throughout your application (running into this now with an ORM). However with a framework, there is no such protection, it IS your application, it IS your code. You can't just swap out a framework - you simply rewrite your app. This the same argument I'd use against React's claim to be merely a "view library". Try and head and swap it out for another "library", you'd end up rewriting your entire app.
what is this junk programming language. so hard to read