@ovstoica@shipclojure Absolutely. I’ve been doing the same and it’s great. I suggest checking out difftastic for a nice compact way of viewing differences. It works really well with Clojure. https://t.co/DLRJ1lZJBg
@ovstoica I like them for this too, handling an expanding set of event types. Could use ‘case’, but multimethods feel like the right amount of separation.
I’m talking to an OCaml team:
“Argh, our compile times are so slow, it takes 15 seconds to compile the project from scratch!”
I’m talking to a C++ team:
“Wow, our compile times are so fast, it takes only 55 minutes to compile the project from scratch! It used to be 8 hours.”
I had so much fun watching Christoph Neumann's (@enigma2a) Clojure/conj talk on his work enabling live sports and e-sports programming.
I haven't watched e-sports much, but I did watch the documentary of Google DeepMind’s AlphaStar, where it played some of the best StarCraft II players in the world. The event was so brilliantly done, and was hosted by professional commentators, who helped explain and give context to what we were observing.
It was so good that I made my kids watch it, and I’m not ashamed to say that it actually made me cry! (As did watching the documentary on Google DeepMind AlphaGo — holy cow. Move 37 FTW!)
(I'll include the links to those videos at the bottom of this tweet.)
Christoph gave an amazing talk on how the code he wrote enables these types of live e-sports broadcasts of some amazing gaming brands:
- Heroes of the Storm (including the draft tool to facilitate team hero selection in real-time, as well as enabling the commentators to do their job, too)
- Hearthstone (including tools to analyze and display the game state live on-air)
- Overwatch (including integrating live game statistics for the Overwatch League)
He also describes some of the work he did to help brands such as Blizzard Entertainment (home of StarCraft II, which was obviously the game that AlphaStar competed in), NFL, Overwatch League, Heroes of the Storm, Activision, Call of Duty League, Hearthstone: Heroes of Warcraft, NEP, Twitch, Wimbledon Championships.
One reason I was nerding out so much during Christoph’s talk was because he had hinted at so many of these things in his awesome Functional Design in Clojure podcast (@clojuredesign), but never really elaborated on what he actually did. I’ve listened to every one of their 100+ episodes that he did with Nate Jones, @ndj, and always hoped they would go into more detail about what they’ve done in e-sports.
Wish granted! It’s such a cool talk.
Among other things, he talks about the high stakes involved in live events — mistakes are seen by everyone, and could actually jeapordize events where hundreds, thousands, or even millions of people are watching!
Christoph: "You have hours of boredom followed by seconds of terror."
Ha!
Everything he's built is done in Clojure, whether it's a event in front of an audience, broadcast over the airwaves, or streamed to a channel.
"My hope is that by the end of this talk, you're going to have an idea of what's involved in pulling off a live sports production, and then how to build a system using it."
Yes!!!
1/n
Source: https://t.co/pdmO4UTDjL
Also: the amazing video of StarCraft II AlphaStar live broadcast: https://t.co/c1BtjwQzai
But #babashka isn't just #clojure on the command line. It includes the babaska.* libraries that dramatically ease working with files and processes (and other things). Clojure has always flourished as a hosted language, and Babashka fits into it's host (the terminal) just as well.
Happy Birthday Babashka! This wonderful tool enables me to bring Clojure's data-oriented simplicity to my terminal scripts. I no longer have to bash my head against the wall trying to remember how to write a conditional or loop in a shell script.
#babashka#clojure
Today is #babashka's 5th birthday! To celebrate, share your favorite bb scripts, tips, tricks, projects with the #babashka and #clojure hashtag, star the repo if you haven't done so or RT this tweet! Thanks for using bb!
https://t.co/S3r9W5Z1oG
What are the building blocks of pure data models? How does each part contribute to robust, understandable code? In our latest episode, we look at pure data models we've created and see what they have in common.
#clojure#functional#podcast
https://t.co/zFKi9uQocL
What code is the essence of an application? Is it concentrated together or spread all over the codebase? In our latest episode, we find a clear and pure heart in our application, unclouded by side effects.
#clojure#functional#podcast
https://t.co/JtLYtETM69
Frontend codebases a dizzying maze? Code, markup, images, media, events, bundling, frameworks, browser APIs, oh my! In our latest episode, we turn our attention to the frontend, and our eyes burn from the complexity.
#clojure#functional#podcast
https://t.co/6RTeHCAk1Y
Have you felt lost in a new codebase? How can you make sense of it quickly? What clues show how it all fits together? In our latest episode, we look for a suitable place to dig into the code and find an entry point.
#clojure#functional#podcast
https://t.co/wgljRj92q9
Have you joined a project and felt frustrated with the docs or tests? Was it hard to figure out the structure and flow? Worse yet, it's your old code! Listen to our new series about setting your future self up for success!
#clojure#functional#podcast
https://t.co/QNehTruHOS