Pre-West Prep: Nathan Sorenson

April 15, 2015

Talk: Domain Specific Type Systems

Nathan Sorenson's talk at Clojure/West is about type systems for DSLs.

Background

Clojure is a dynamically typed language. The types are encoded in the classes of objects. However, when we develop a DSL, we are designing a new language and are free to build in a static type system for that DSL. Nathan Sorenson's talk addresses some of the hardest but most important work in developing a type system: the error messages and interoperability. And it seems practical: he'll be developing a query DSL for Datomic.

If you're new to macros, you may want to read the macro chapter from Clojure for the Brave and True. If you're really interested in Type Theory, you're in for a treat with this recording of Robert Harper.

About Nathan Sorenson

GitHub - Twitter


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

You may like the Clojure Gazette

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: James MacAulay

April 15, 2015

Talk: Composing interactive applications with Zelkova

James MacAulay's talk at Clojure/West is about Zelkova, his Functional Reactive Programming library.

Background

Zelkova is a Functional Reactive Programming (FRP) library inspired by the Elm FRP model. FRP is a model for building composable "signals" that maintain the state of the system over time. The talk promises to show us how to use it with Om to create interactive applications.

There are many resources out there, but I recommend this talk about Functional Reactive Programming in Elm by Elm's creator Evan Czaplicki. It shows the possibilities of FRP. His thesis, which describes the basic constructs of Elm, is surprisingly approachable. I recommend that highly. Also, James MacAulay himself did a Papers We Love presentation about it, which is worth watching.

About James MacAulay

GitHub - Twitter


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

You may like the Clojure Gazette

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: Zach Tellman

April 15, 2015

Talk: Everything Will Flow

Zach Tellman's talk at Clojure/West is about applying Queueing Theory to Clojure code.

Background

Zach Tellman is known for his philosophical talks. They connect a broad range of ideas. This talk is about Queueing Theory, which has its roots in telephone network analysis. Since core.async channels are essentially queues, knowledge of how queues behave is fundamental to using the library well.

The Wikipedia page on Queueing Theory is informative. There is kind of a longer lecture if you're interested in going for an hour on the topic. Finally, I recommend this talk from the React conference, which touches on queueing theory in computer systems.

About Zach Tellman

Homepage - GitHub - Twitter


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

You may like the Clojure Gazette

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: 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.

You may like the Clojure Gazette

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.

You may like the Clojure Gazette

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.

You may like the Clojure Gazette

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.

You may like the Clojure Gazette

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.

You may like the Clojure Gazette

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.

You may like the Clojure Gazette

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.

You may like the Clojure Gazette

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