Pre-West Interview: Fumiko Hanreich

April 15, 2015

This interview was graciously conducted by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!

Introduction

Fumiko Hanreich is the next interview participant. She is giving a talk at Clojure/West about using the HoneySQL library for Clojure. The background to her talk is available, if you like.

Interview with Fumiko Hanreich

Nola: How did you get into Clojure?

Fumiko: In January 2012, my then-former-company asked me to take an online Clojure course. They asked me to spend about 5 hours a week for the course (and my twins were barely 16 month olds then), and I thought it was doable and I said yes. The reality was that I spent way more than 5 hours a week. Just reading and “understanding” reading assignments took a lot of time before starting an assignment. Clojure was my first Functional Programming language. Then the company sent me to Cascalog training offered prior to 2012 Clojure/West, which was my very first Clojure conference. I rejoined the company in summer. A few months later, I started coding in Clojure (for production). Very steep learning curve, yet I fell in love with the language immediately. That’s how :)

Nola: What other languages have you done?

Fumiko: My very first language was C++ followed by Java at college. From the get-go, everything was OOP (and I believed that was the best thing). I have done quite a few other languages such as Visual Basic, groovy, Flex / ActionScript 3.0, php, ColdFusion, JavaScript, etc. To me, it was easy to adapt to a new language except for Clojure.

Nolq: Your talk is about SQL and Clojure, how did you decide on HoneySQL?

Fumiko: Very good question. I knew someone was going to ask thist :) To tell you the truth, I did not decide it myself. Our architect, Sean (@seancorfield), and Justin (@jkkramer), author of honeysql, spoke at 2012 Clojure conj. After that, it was recommended to me to use for the project I was assigned. I am extremely grateful that honeysql was already there when I needed it. It had everything I needed and made my life much easier.

Nola: What editor(s) do you use and what is your tooling like?

Fumiko: Emacs + paredit and Light Table. I still go back and forth.

Nola: If Clojure was a food, what do you think it would be?

Fumiko: This is an easy question. Quinoa and arugula or kale salad with lemon juice and splash of grounded ginger. Because that’s what I love and am excited to have every single day! It can also be any vegetables or fruits like mango, for example. Simply put, anything I love represents Clojure :)

Nola: Thanks for the interview. It was very informative.


This post is one of a series called Pre-West Prep.

For more inspiration, history, interviews, and trends of interest to Clojure programmers, get the free Clojure Gazette.

Learn More

Clojure pulls in ideas from many different languages and paradigms, and also from the broader world, including music and philosophy. The Clojure Gazette shares that vision and weaves a rich tapestry of ideas from the daily flow of library releases to the deep historical roots of computer science.

Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.

You might also like

Pre-West Interview: Morgan Mullaney

April 15, 2015

This interview was graciously conducted by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!

Introduction

Morgan Mullaney is the next interview participant. She is giving a talk at Clojure/West about why clojure is good for programming games. The background to her talk is available, if you like.

Interview with Morgan Mullaney

Nola: How long ago did you learn Clojure?

Morgan: Learning a language is more a drawn-out process with lots of stops and starts than a discrete event, but I first wrote a 'hello world' in Clojure in 2011 and I've been using it "professionally" for about 2 years

Nola: What recommendations do you have for someone learning clojure?

Morgan:

Nola: Have you made games in other languages besides Clojure? If so, which languages?

Morgan: I've poked around with game making in Python, Common Lisp, and Twine, but nothing terribly serious in any of those.

Nola: What is your favorite computer game(s) to play?

Morgan: Gosh what a broad question. It's impossible to pick favorites, but I keep picking up FTL and Starbound over and over. One that really stands out in recent memory is Porpentine's "With Those We Love Alive" which is just moving. If you haven't already, definitely go check it out.

Nola: If Clojure was a food, what would it be?

Morgan: Hummus, with some coffee beans mixed into it. Nothing against coffee, but what is it doing in here?

Nola: Thanks for the interview. It was very informative.


This post is one of a series called Pre-West Prep.

For more inspiration, history, interviews, and trends of interest to Clojure programmers, get the free Clojure Gazette.

Learn More

Clojure pulls in ideas from many different languages and paradigms, and also from the broader world, including music and philosophy. The Clojure Gazette shares that vision and weaves a rich tapestry of ideas from the daily flow of library releases to the deep historical roots of computer science.

Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.

You might also like

Pre-West Interview: Elena Machkasova

April 15, 2015

This interview was graciously conducted by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!

Introduction

Elena Machkasova is the next interview participant. She is giving a talk at Clojure/West about adapting clojure to the classroom. The background to her talk is available, if you like.

Interview with Elena Machkasova

Nola: How did you first learn Clojure?

Elena: One of my students mentioned Clojure to me in 2009. It sounded really cool, so I included it in a class on functional programming for concurrency and was learning it partly in the summer before the course, and partly as the class was progressing.

Nola: What other languages are good for beginners or do you think clojure is the best?

Elena: To alleviate possible confusion: I don't actually teach Clojure in a beginner-level class because there are currently no tools that would make this experience smooth for new students. I've taught Clojure as a part of a couple of upper-level courses where syntax isn't that much of an issue and students are experienced enough to deal with debugging in Clojure.

Beginner CS students need to focus on concepts, develop problem solving techniques, and learn to think in an abstract, modular, data-driven way. A solution needs to be developed as a series of short, clearly defined functions). A language that supports this process without getting students distracted by unnecessary details or unpredictable behavior would be a reasonable choice. Lisp languages, including Clojure, fit into this category. We currently use Racket ( a language in the Lisp family). Python is another appropriate first language. Statically typed languages, especially object-oriented ones (Java, C++), are too complex for beginners. Languages with complex interactions with memory or their environment (C, Javascript) are not a good choice either.

Since I haven't yet tried teaching a CS1 class with Clojure, I cannot say whether Clojure is "the best" (or even a reasonable) choice for beginners, but it certainly looks promising, assuming that it is made more beginner-friendly in terms of error messages and IDEs.

Nola: What types of applications do you like to use to teach your students? (i.e., a web app, console app, todo list, recipe list etc)

Elena: So far I mostly taught Clojure at upper level and we were mostly looking into concurrency. A beginner level class is focusing on concepts, but it has to have material that students are interested in as a small project part of the course. Possibilities include data processing and interactions with graphical libraries (animation, data visualization, etc.).

Nola: What clojure libraries do you like to use when teaching clojure?

Elena: We've been looking into incorporating Quil, especially the functional mode. I've also been looking into reducers for upper level courses. Expectations is a nice testing library, definitely worth including in any level course that uses Clojure.

Nola: Why would a Mars Rover would be better programmed in clojure be better than language _ ?

Elena: Immutable data -> less possibility for error. Also, easy (i.e. less error-prone) approaches to concurrency would make large data processing fast and reliable.

Nola: Thanks for the interview. It was very informative.


This post is one of a series called Pre-West Prep.

For more inspiration, history, interviews, and trends of interest to Clojure programmers, get the free Clojure Gazette.

Learn More

Clojure pulls in ideas from many different languages and paradigms, and also from the broader world, including music and philosophy. The Clojure Gazette shares that vision and weaves a rich tapestry of ideas from the daily flow of library releases to the deep historical roots of computer science.

Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.

You might also like

Pre-West Interview: Luke VanderHart

April 15, 2015

This interview was graciously conducted by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!

Introduction

Luke VanderHart is the next interview participant. He is giving a talk at Clojure/West about the ReactJS Landscape. The background to his talk is available, if you like.

Interview with Luke VanderHart

Nola: How long have you been doing Clojure and how did you get into it?

Luke: I started using Clojure in 2008, shortly after its release. I had become interested in learning a Lisp, and since I was a Java programmer up to that point I was looking for one hosted on the JVM. Fortuitously, Clojure had just been released and so I found it and started playing with it.

Nola: What suggestions do you have for someone getting started with Clojure?

Luke: Find the simplest editor that works for you, don't try to learn a new editor at the same time you're learning a new language. Don't worry about the more complex language features or libraries - just geting a good grasp of the basics (namespaces, data structures, functions, let-blocks, higher-order-functions) will give you 95% of the power of Clojure. The rest will come easily.

Nola: Your talk is about the different incarnations of reactjs in clojure, what attracted you to it? Were you big into javascript before?

Luke: I am a long-time UI programmer and have worked with all kinds of user interfaces, from 3D games to Swing to HTML to various JS libraries. It's always been a frustrating experience. I am excited about React and its associated libraries because it's the first approach to UI development that strikes me as elegant and usable.

Nola: What is the average airspeed velocity of an unladen Clojure REPL?

Luke: About 11000 miles per second. Based on my latency to the REPL I'm running in a remote data center right now :)

Nola: Thanks for the interview. It was very informative.


This post is one of a series called Pre-West Prep.

For more inspiration, history, interviews, and trends of interest to Clojure programmers, get the free Clojure Gazette.

Learn More

Clojure pulls in ideas from many different languages and paradigms, and also from the broader world, including music and philosophy. The Clojure Gazette shares that vision and weaves a rich tapestry of ideas from the daily flow of library releases to the deep historical roots of computer science.

Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.

You might also like

Pre-West Interview: Ryan Neufeld

April 14, 2015

This interview was graciously conducted by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!

Introduction

Ryan Neufeld is the next interview participant. He is giving a talk at Clojure/West about Simulation Testing. The background to his talk is available, if you like.

Interview with Ryan Neufeld

Nola: How long have you been doing clojure and how did you get into it?

Ryan: By my reckoning, I've been using Clojure professionally for about 2.5 years now.

How I got started is actually pretty interesting; I was hired by Cognitect (née Relevance) in early 2012 as a Ruby on Rails developer. Once the business shifted hard towards Clojure, I jumped at the first opportunity to get on with a Clojure client. My first Clojure project was with the most excellent Paul deGrandis, so it was a just a matter of letting osmosis take it's course. I haven't looked back since.

Nola: What suggestions do you have for someone getting started with clojure?

Ryan: Experiment liberally, and don't be afraid to make mistakes or "do it wrong." A breadth of experience with the language and its libraries is crucial for knowing what tool to reach for when it is finally time to get down to business.

For those seeking to make the jump to full-time Clojure, a word of career advice: Never pass over a job opportunity because you lack on-paper experience. Every company wants to hire a Rich Hickey to work with them, but in most cases, they'd be more than happy with a bright, passionate developer such as yourself. Just give it a shot–at worst, you'll get a no, at best, you could change your life!

Nola: Your talk is about Simulation Testing, is there anything like this in other languages? If yes, what advantage does the implementation in clojure have over other languages?

Ryan: Indeed there is. While Simulation Testing is novel to the Clojure community, it's been around for a number of years under various names; it's sometimes called model or agent-based testing, or just plain "simulation." I heard from a little bird that organizations like DARPA use the technique on nearly all of their projects.

There are a couple of big benefits to doing Simulation Testing in Clojure, however. First and foremost is Simulant. In addition to being a useful framework for running Simulation Tests, the way it segregates tests into phases makes tests both reproducible and amenable to new validations that you can bring to bare against old sim runs.

The second superpower Clojure brings to the table is Datomic. Given Datomic is a time-based fact-store, it is a nearly perfect fit for long-term, continuous-integration style simulation testing. With Datomic, very few of the validations I write involve procedural code; generally a simple Datomic query will suffice to detect abnormalities. Even better, it is trivial to query how test results have change over time.

Nola: What is the average airspeed velocity of an unladen Clojure REPL?

Ryan: Well, the bird is a little slow to get off the ground (Clojure start times, and all), but once she's airborne you're looking at about 2-4 Rubies (that's 10 Javas, in the imperial system).

Nola: Thanks for the interview. It was very informative.


This post is one of a series called Pre-West Prep.

For more inspiration, history, interviews, and trends of interest to Clojure programmers, get the free Clojure Gazette.

Learn More

Clojure pulls in ideas from many different languages and paradigms, and also from the broader world, including music and philosophy. The Clojure Gazette shares that vision and weaves a rich tapestry of ideas from the daily flow of library releases to the deep historical roots of computer science.

Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.

You might also like

Pre-West Interview: John Hume

April 14, 2015

This interview was graciously conducted by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!

Introduction

John Hume is the next interview participant. He is giving a talk at Clojure/West about Clojure internals. The background to his talk is available, if you like.

Interview with John Hume

Nola: How long have you been doing Clojure and how did you get into it?

John: I started playing with Clojure in late 2008—the fairly early days. It was interesting to me because I'd always heard that Lisp was amazing, but I'd never spent any time with one. Since Clojure runs on the JVM and has simple Java interop, it was far more accessible to me than any other Lisp. Since it was a new language and community, there seemed to be a lot of other people going through the same learning process I was, so the mailing list was very helpful. And back then it was low-traffic enough that I could actually keep up, which hasn't been the case for a long time.

Nola: What languages did you do before Clojure?

John: I'd been doing Ruby full-time for a few years before getting interested in Clojure—and continued to spend most of my time working in Ruby until 2012. Previous to that I'd done Java for about 5 years. Ruby really opened my eyes to how much power and expressiveness Java had been keeping from me. But after an exciting learning period with Ruby, I'd gotten a bit bored. Clojure came into my life at just the right time!

Nola: Any suggestions for someone wanting to dive into Clojure?

John: That's a tough one. A background in Java and Ruby made it easy for me to deal with some of what can make Clojure difficult for newcomers: Java helped with the JVM, the API, and the ecosystem, while Ruby had already made me comfortable with strong but dynamic typing and some functional concepts. For someone with a similar background, I'd definitely recommend giving Clojure a try.

My advice:

Nola: Thanks for the interview. It was very informative.


This post is one of a series called Pre-West Prep.

For more inspiration, history, interviews, and trends of interest to Clojure programmers, get the free Clojure Gazette.

Learn More

Clojure pulls in ideas from many different languages and paradigms, and also from the broader world, including music and philosophy. The Clojure Gazette shares that vision and weaves a rich tapestry of ideas from the daily flow of library releases to the deep historical roots of computer science.

Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.

You might also like

Pre-West Interview: Yoko Harada

April 10, 2015

This interview was graciously conducted by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!

Introduction

Yoko Harada is the next interview participant. She is giving a talk at Clojure/West about developing the ClojureBridge curriculum. The background to her talk is available, if you like.

Interview with Yoko Harada

Nola: How long have you been doing Clojure and how did you get into it?

Yoko: My experience is quite sparse, but I've been using Clojure for about 4 years. Since I'm a JVM language lover, I had a great interest in Clojure, which was very different from other JVM languages. I started ClojureScript integrating Ruby gem at first.

Nola: What languages did you do before Clojure?

Yoko: Mostly, Java and Ruby.

Nola: What are your thoughts on Clojure being a first language or do you think its more suited to someone who has some experience in programming?

Yoko: It depends. Thinking of the time I was a student, for some folks, lisp was the first language and did well using Lisp. For many people, Clojure coding is not similar to how they think. For example, in OOP, "I have a cup of soup. let's add some spice", in Lisp, "Let's add something and other stuff, what about soup and spice." Sometime, the latter is productive in coding while sometime, the former is. I admit OOP is natural for vast majority. But, at the same time, I don't think programming experience will help to think like Lisp.

Nola: What kinds of help do you need for ClojureBridge?

Yoko:

  1. spread the word
  2. plan to organize ClojureBridge
  3. have experiences of organizing, TAing, and others of ClojureBridge
  4. involve yourself in ClojureBridge curriculum improvements based on the experience
  5. become a ClojureBridge board member
  6. become a ClojureBridge mentor and help people who firstly organize ClojureBridge
  7. donate and support ClojureBridge financially. The workshop needs venue, some food and. sometime, coaches/TAs' travel expense

Nola: What is your favorite clojure library?

Yoko: Hoplon

Nola: Thanks for the interview. It was very informative.


This post is one of a series called Pre-West Prep.

For more inspiration, history, interviews, and trends of interest to Clojure programmers, get the free Clojure Gazette.

Learn More

Clojure pulls in ideas from many different languages and paradigms, and also from the broader world, including music and philosophy. The Clojure Gazette shares that vision and weaves a rich tapestry of ideas from the daily flow of library releases to the deep historical roots of computer science.

Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.

You might also like

Pre-West Interview: Anthony Marcar

April 10, 2015

Introduction

Anthony Marcar generously agreed to do an interview about his talk at Clojure/West. The background to the talk is available, if you like.

Interview

LispCast: How did you get into Clojure?

Anthony Marcar: About 4 years ago, I decided that java wasn’t cutting it for me. I needed a new language, but I wanted to be on the JVM. So Scala and Clojure were the obvious contenders. I decided to spend 3 months building an online card game in both languages to see which I liked more. Scala at first was easier to get into, whereas Clojure was thoroughly alien. But over time, In Scala, I found I was spending more time building abstract Type graphs and waiting for compiles to finish, whereas in Clojure I was having a lot of fun and moving faster. I also loved the emphasis on immutability in Clojure. After that I was hooked.

LC: Clojure is relatively new, so you don't really get many experience reports of large production systems. When you hear someone talking about Clojure who has used it maybe only hobby projects or small projects, what are the common things that strike you as untrue?

AM: I don’t know if "untrue" is the right way to put it, but things people generally haven’t thought about before embarking on larger Clojure projects are things like how do you deploy your application, how do you go about logging and monitoring? How do you protect your application from going down if downstream dependencies start timing out? And how do you grow a code base across multiple projects? There still aren’t many resources in the Clojure space to answer these kinds of questions.

LC: Have you had experience bringing programmers who don't know Clojure onto your team? What were the challenges? What surprised you?

AM: Yes I have had rubyists, node.js and python people join the team. Not surprisingly the JVM was a big challenge. Things like the local maven repository, logging, and common java libraries can be hard to grasp. I was however surprised how easily everyone picked up on Clojure’s fundamentals such as immutability. I guess it’s because that’s what attracted them to the language in the first place.

LC: Do you think Clojure is a good fit for large companies with lots of software?

AM: Clojure is great for large companies. I think it’s greatest asset is its focus on data structures. In big companies, this is a big deal as there are layers and layers of legacy systems, each with their own outdated data formats and protocols. Clojure's focus on data transformations and concurrency makes it perfect for working with many different services to produce the right business outcome. That, combined with the the fact that it runs on the JVM makes it perfect for large companies.

LC: Do you have any advice for the folks out there working for big companies who want to introduce Clojure to their work?

AM: If you want to introduce Clojure at a large company, get ready for a very tough road ahead. Work from both the bottom and top of the organization. Try and find the engineers who are always looking at new technologies. The kind who get home and build side projects. Then infect them. At the same time, scour the organization for VPs, or SVPs who "get" technologists. Buy them a beer. Ask them to be a champion for you, to protect you every time a more "traditional" team tries to block your progress. You’ll need all the help you can get and will have to work well past your normal hours, but it’s worth it.

If you want to take a shortcut, build a company that does Clojure, and then get acquired by said big company ;)

LC: Is there anything else you'd like to add?

AM: All I would add is that working in Clojure is extremely fun. If you’re not already working in it full time, go and apply for a job somewhere where you can!

LC: If Clojure were a food, what food would it be?

AM: An ice cream sandwich. Because it’s awesome. That is all.


This post is one of a series called Pre-West Prep.

For more inspiration, history, interviews, and trends of interest to Clojure programmers, get the free Clojure Gazette.

Learn More

Clojure pulls in ideas from many different languages and paradigms, and also from the broader world, including music and philosophy. The Clojure Gazette shares that vision and weaves a rich tapestry of ideas from the daily flow of library releases to the deep historical roots of computer science.

Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.

You might also like

Pre-West Prep: Luke Vanderhart

April 09, 2015

This summary was graciously written by Nola Stowe. She's a programmer, the co-founder of DevChix, and a prolific teacher. She recently ran ClojureBridge Austin. Please shout out to her and say thanks!

Talk: The ReactJS Landscape

Luke Vanderhart's talk at Clojure/West is about the ReactJS Landscape.

Background

ReactJS appeared from Facebook last year in silence and without fanfare (from my view anyways!) but recent months has had an explosion on the web frameworks space, in particular in Clojure because of the common thread of immutablility running through the core concepts.

Since Facebook announced it in June, we have seen several incarnations of React in Clojure: Om, Quiescent, and Reagent.

Why it matters

ReactJS is the View in MVC apps and is a declarative library for describing a user interface, it can figure out what parts of the application to redraw on an update. With the popularity of single page applciations this is key to making a fast and responsive user interface.

About Luke Vanderhart

Github - Twitter

Luke is the co-author of two books: Clojure Cookbook and ClojureScript Up And Running.

You might also like

Pre-West Interview: Brandon Bloom

April 09, 2015

Introduction

Brandon Bloom generously agreed to do an interview about his talk at Clojure/West. The background to the talk is available, if you like.

Interview

LispCast: How did you get into Clojure?

Brandon Bloom: From 2009 to 2011, I encountered a couple of Rich's talks and writings. Each time I would look at Clojure briefly, but it never really clicked. When ClojureScript was released, my startup was heavily using CoffeeScript, so I decided to take a more serious peek at this new alternative. I immediately fell in love with Clojure and started contributing to ClojureScript. My startup never did get a chance to use ClojureScript, but Clojure on the JVM quickly became one of my favorite tools for prototypes and experiments, and I've lately, I've used it for serious business with some frequency.

LC: You will be talking about the CircleCI frontend, written in ClojureScript and Om. Om is less than 18 months old, and yet it is used in production systems and I assume replaced their previous frontend system. Can you speak to this decision? How was it evaluated?

BB: I honestly can't speak to the decision to use Om. That was made before I got involved. What I can say is that CircleCI was already a big Clojure user and their front end used to be CoffeeScript based. Daniel Woelfel deserves all the credit for choosing Om and delivering a production system with it. I got involved much later.

LC: What were some of the challenges that you faced when developing with such a new library as Om?

BB: Om is/was still evolving. It's got bugs, misfeatures, and other problems. Luckily, I've had the luxury of regular face time with David Nolen, Om's author, out at the Kitchen Table Coders studio in Brooklyn. I think that it's important for new library producers/consumers to interact regularly. Beyond that, the design patterns aren't established yet. It's difficult to simultaneously think deep thoughts about a challenging design space such as UI code, while also building a useful UI for your product. Sometimes, you just need to hack it and you can't be afraid to dig in to the library code while you're hacking it. After that, you need to reflect on whether your solution actually makes sense: Often it doesn't!

LC: What are some improvements to Om you would like to see?

BB: That's a tough question to answer constructively, since David has already picked all of the low hanging fruit that I've pointed out to him. Overall, Om is an absolute delight. That said, it's clearly a first real attempt at the React style of UI development in Clojure. Some parts of Om, like cursors, just never made much sense. Other parts feel like missed opportunities to truly capitalize on ClojureScript's strengths. At this point, my feedback could be rolled in to notes for a second attempt at this style of UI framework in Clojure.

David has made the very pragmatic decision to assume React.js as a long term dependency. However, once you really get in to the weeds hacking on a UI, it becomes clear, at least it did to me, that less layers is always a good thing. Overall, a virtual DOM implementation is pretty easy, although getting it to perform well is tricky. I'd really like to see a ClojureScript library that drops the React.js dependency in favor of a more direct mapping to Clojure idioms.

The dichotomy between primitive elements and Om components (created via om/build) has got to go. It hurts modularity and refactorability. But I also don't particularly like some users' insistence on hiccup forms for a variety of reasons.

The "no local state" descriptors thing should definitely be the only way Om operate.

The "world in an atom" model isn't quite structured enough. We need something more database-like to manage client/server synchronization. Facebook's Relay is impressive and, if you squint right, their GraphQL looks a lot like Datomic's Pull API. I know that Sean Grove has been experimenting with a DataScript-backed UI. I think that somebody needs to ship a prescriptive framework here that integrates a client-side database with the view layer.

I've also got extensive notes for an alternative events system.

Beyond that, toolability is critical. The framework needs a way to design and test an individual component in the browser. You should have to go out of your way to break that, not go out of your way to enable it.

LC: Where can people follow you online?

BB:

LC: If Clojure were a food, what food would it be?

BB: Certainly not a burrito.


This post is one of a series called Pre-West Prep.

For more inspiration, history, interviews, and trends of interest to Clojure programmers, get the free Clojure Gazette.

Learn More

Clojure pulls in ideas from many different languages and paradigms, and also from the broader world, including music and philosophy. The Clojure Gazette shares that vision and weaves a rich tapestry of ideas from the daily flow of library releases to the deep historical roots of computer science.

Clojure/West is a conference organized and hosted by Cognitect. This information is in no way official. It is not sponsored by nor affiliated with Clojure/West or Cognitect. It is simply me (and helpers) curating and organizing public information about the conference.

You might also like