Reactive Conference is bringing you an interview with one of our speakers James Long.

What’s your personal elevator pitch?

I’m going to assume I’m talking to someone who wants to become a

better programmer. I think one of the most important things you can do is play with libraries, frameworks, and even languages that are unfamiliar to you. You don’t have to spend months on it, but if you’ve been wondering why ClojureScript keeps popping up on Hacker News, take a few days and try it out. Put aside any biases and immediate reactions. Be rigorous about really understanding the fundamental idea it’s trying to express. Some of the most transformative things I’ve learned have come from

things completely outside my usual environment. It’s surprising how

much these things can improve your day-to-day work, if you just take

time every now and then to step outside your comfort zone and listen

to other people.

How did you end up being a web developer?

I was really into low-level C++ graphics programming with OpenGL for

years, up until 2006 when I graduated college. I wasn’t attracted to

that industry at all though, and I knew a few people who owned a local

web development shop when I needed a job. I didn’t really care what I

worked on, I just needed a job and enjoyed that group of people. I got

lucky because the programmers there were really smart, and for about 4

years learned not only about web development but all kinds of things

like the Scheme programming language (we never used it in production,

but played with it).

What is the most important project you’re currently working on?

That’s easy: improving Firefox’s JavaScript debugger! The frontend

code has gotten pretty bad, so it’s hard to implement new features.

I’m spending all my effort right now to clean up the front-end and

possibly use React. We’re also working on some changes to the UI to

improve overall experience, and I’m excited to see where we take it.

Is there any issue in web development world that should be fixed asap?

I have a few issues with how the web works, for example the fact that

the UI thread and the main thread are the same makes it incredibly

hard to do smooth complex applications. It’s really hard to maintain

60 FPS when *any* operation will block everything. Workers help a

little bit, but you don’t have access to many APIs. It would be nice

to run the UI thread completely separately and allow the main thread

to access any API except the DOM (the DOM is also basically a big

piece of shared mutable state, which is bad). If I could only say one thing though, it would be that we need to

prioritize the web as a low-level platform. I’m worried that too many

people want to bake in high-level abstractions, arguing that it’s

easier than deciding which library to use and apps don’t have to

distribute large libraries. With something as general as the web

though, I think it’s a pipe dream that standard APIs will be good

enough to build apps directly on (just look at the trouble Web

Components has had). I don’t want “good enough” anyway, I want a

delightful development experience. The result is a bloated web that

still doesn’t even work for many people. There are a lot of good things coming out of the Web Extensibility

effort though, particularly opening up low-level layout and CSS

features.

What will you speak about at Reactive 2015?

Many ideas are currently bubbling up in the UI community like purely

functional UIs, single atom app states, and immutability. I will take

these and apply them to a real-world, complex app, the Firefox

debugger, using the Redux library. It will be a case study of what

these ideas look like in a large app, and how to slowly migrate from

code that heavily depends on mutation and an imperative style to a

purely functional style.

What do you expect from the conference?