Skip to content
0:00 / 0:00

#clojure#enterprisearchitecture#monoliths

Philly ETE 2016 #2 - Transforming Enterprise Development With Clojure - Dmitri Sotnikov

ChariotSolutions

9.3K subscribers • 10 videos on Hallway

YouTube
  • Recommended by 1 person: 1 in engineering communities.
  • Presented by Dmitri Sotnikov

Intermediate. Assumes working knowledge.

4.2K views10 years ago1 recommendation

Programming languagesSoftware designLisp and ClojureSoftware architecture

Dmitri Sotnikov explores how Clojure's simplicity and focus on pragmatism encourage writing loosely coupled, reusable code in enterprise environments.

Modern software architecture emphasizes modularity and composability. While the industry at large is rapidly moving toward approaches such as microservices, the monolith is still alive and well in the enterprise. Monolithic projects will often have tight coupling between components, resulting in codebases that are large and unwieldy. This directly impacts productivity, and translates into costs for the organization. In this session we will explore the aspects of Clojure that encourage writing code that is loosely coupled and reusable. We will discuss the benefits of the Clojure approach, and we will see how it applies in practice with a live demo.

Why it's here

1 person recommends this

What people say. Recommended for showing how Clojure's simplicity and loose coupling benefit enterprise development.

Moments people linked to

u/yogthosin r/functionalprogramming • Recommends

On “Can't decide between F#, Clojure, Haskell... or something else?”

I've been using Clojure for past 6 years professionally, and I still enjoy working with it immensely. I find that the language does a really good job of getting out of the way and allowing me to focus on the problem. In my view, the biggest advantage of Clojure over other choices is its simplicity. Clojure is a small language with a strong focus on pragmatism. I find that it allows you to apply a small number of concepts to a wide range of problems. This results in code that's easy to read and maintain, and prevalence of common patterns accepted by the community mean that it's easy to read code written by others as well. The pragmatism also extends to the choice of runtimes. Clojure applic…

u/yogthosin r/Clojure • Mentions

On “I keep hearing that the Clojure REPL is a qualitatively better experience from the JavaScript and Python REPLs. How is that so?”

The real magic is in the integration with the editor. Clojure REPL is an integral part of the development process. Whenever I do any development in Clojure, first thing I do is start the application and connect the editor to its REPL. Each time I write a function, I run it from the editor to see that it's doing what was intended. You can see this workflow illustrated here.
23View on Reddit

u/yogthosin r/Clojure • Mentions

On “Videos of people developing using the repl”

I gave a talk a little while back where I built a small app from scratch using the REPL driven workflow.
19View on Reddit

u/yogthosin r/Clojure • Mentions

On “Clojure for beginners”

Clojure is a small and practical language, and I think it's a good one for beginners to learn. The main value of learning Clojure is that it provides a different perspective on how to solve problems from imperative languages such as Java and Python. I think that Clojure encourages good development patterns. Its focus on immutability is one example of that. Since Clojure makes it easy to work with immutable data, it encourages writing applications that don't have a lot of global state. This in turn makes code easier to reason about and to maintain. The syntax is small and consistent, so you don't have to learn a lot of things to get up and running. I wrote a primer that covers the basics he…
18View on Reddit

u/yogthosin r/Clojure • Mentions

On “New Clojurians: Ask Anything”

Clojure offers a few things over Ruby or Js. First, I think the tooling and packaging situation is much better. With Clojure, I can use Leiningen or Boot for every aspect of the project lifecycle. They manage dependencies, run tests, package the app, and so on. The way libraries are managed is a lot saner in my opinion. Maven repos are immutable, and libraries are pulled in by explicit versions. This makes it much easier to do repeatable builds. Packaging situation is much better as well. A Clojure app is just a jar that contains everything the app needs to run. You can put that jar anywhere with a JVM runtime, and you're good to go. I think Clojure provides a superior workflow with the R…
11View on Reddit

u/yogthosin r/Clojure • Mentions

On “New Clojurians: Ask Anything”

I live coded a small web app during a talk here. It illustrates the REPL driven workflow I use with Cursive. Basically, you want to use an editor that integrates with the REPL. Clojure aware editors provide keybindings for sending code from the editor directly to the REPL, and to switch namespaces, and so on. So, any time you write a piece of code, you can use a shortcut to evaluate it.
8View on Reddit

u/yogthosin r/Clojure • Mentions

On “Used Clojure for more than 2 years? What are your thoughts about it?”

I gave a talk last year where I illustrate my workflow. Blessing of Interactive Development is a good article on the topic, and What makes a good REPL is another one.
7View on Reddit

u/yogthosin r/Clojure • Mentions

On “New Clojurians: Ask Anything”

I highly recommend using the REPL during development. Generally once you start the application, the only time you need to restart is when you change dependencies or configuration in `project.clj`. When the application is up and running, you can use the REPL to evaluate code in it. So, any time you write a function, you can run it immediately to see what it does. I recently blogged about how this works with Atom here. You can also see this workflow in a talk I gave where I use Cursive to live code a small app interactively. I haven't used Vim for Clojure development, so I'm not sure how the REPL is configured there. Perhaps somebody who works with Vim can field that part.
3View on Reddit

u/yogthosin r/Clojure • Mentions

On “New Clojurians: Ask Anything”

Luminus starts nREPL on port 7000 as the default specified in `dev-config.edn`, and you just have to connect your editor to it. I gave a talk a while back where I run through an example workflow here.
3View on Reddit

u/yogthosin r/Clojure • Mentions

On “New Clojurians: Ask Anything”

This article has a good overview. I gave a talk a few years ago where I illustrate the workflow starting here.
3View on Reddit

u/_youtubot_in r/functionalprogramming • Mentions

On “Can't decide between F#, Clojure, Haskell... or something else?”

Video linked by /u/yogthos: Title|Channel|Published|Duration|Likes|Total Views :----------:|:----------:|:----------:|:----------:|:----------:|:----------: [Philly ETE 2016 #2 - Transforming Enterprise Development With Clojure - Dmitri Sotnikov]|ChariotSolutions|2016-04-26|0:54:46|13+ (100%)|987 > Modern software architecture emphasizes modularity and... --- ^Info ^| ^/u/yogthos ^can ^delete ^| ^v1.1.3b

u/_youtubot_in r/Clojure • Mentions

On “Used Clojure for more than 2 years? What are your thoughts about it?”

Video linked by /u/yogthos: Title|Channel|Published|Duration|Likes|Total Views :----------:|:----------:|:----------:|:----------:|:----------:|:----------: [Philly ETE 2016 #2 - Transforming Enterprise Development With Clojure - Dmitri Sotnikov]|ChariotSolutions|2016-04-26|0:54:46|16+ (100%)|1,171 > Modern software architecture emphasizes modularity and... --- ^Info ^| ^/u/yogthos ^can ^delete ^| ^v2.0.0
2View on Reddit

u/yogthosin r/Clojure • Mentions

On “New Clojurians: Ask Anything”

Here's an example of my typical workflow.
2View on Reddit

u/yogthosin r/Clojure • Mentions

On “New Clojurians: Ask Anything”

The statement means exactly what it says. The REPL runs within the application runtime, and you have access to every part of the application from it. You can change anything in the running application via the REPL at runtime. Here's an example of what this looks like in practice. As a concrete use case, I had a production issue a little while back where a service that my application was calling changed its API. I was able to connect my editor to the production instance of the application, and update the logic that was consuming the payload to accommodate for the new format. How would I accomplish that using Intero? I think Spec provides a strictly more powerful way to describe constraint…
2View on Reddit

u/RaymondWiesin r/Clojure • Mentions

On “Using Luminus or not? New project”

Talk specifically from Luminus guy: link to this video