Episode 12: Chas Emerick with Ben Orenstein on the Thoughtbot Podcast
Posted: April 30, 2014 Filed under: Conversation, Episode Leave a commentEarlier this month, I had the good fortune to sit down with Ben Orenstein (), who is the host of Thoughtbot’s Giant Robots Smashing into other Giant Robots Podcast. (He has quite the slick recording arrangement there, with pop filters, “real” microphones, and even a producer that knows what he’s doing…hi !)
Anyway, we had a good chat in which Ben interviewed me on topics various and sundry, both related to Clojure and not, including my talking publicly for the first time about the Quilt Project. Ben graciously agreed to my syndicating the results of our conversation here for the Mostly Lazy audience; I’m thankful to both him and Thom for the opportunity to appear on their podcast.
(Recorded on April 14, 2014, and previously released on April 21, 2014 as episode #95 of Thoughtbot’s Giant Robots Smashing into other Giant Robots Podcast.)
Listen:
Or, download the mp3 directly.
Discrete Topics
(Remember to follow so you know who’s going to be on next, and can send us topics and questions!)
-
100% Time
- Also previously discussed with Craig Andera on episode #31 of the Cognicast née Relevance Podcast
- the Quilt Project
- a précis of Distributed Systems and the End of the API, a talk given at PhillyETE 2014 (keep an eye out for a dedicated written distillation
- “THE PDF THING”
- “snowtide.com for all of your PDF extraction needs”
- The sad tale of Snowtide’s first iteration
- $140K in debt; payoff; resurrection, and the origins of the PDFTextStream product
- Firewire drives, 15 years ago
- Noam Wasserman’s Rich vs. King concept
- Wherein Chas deconstructs and discredits the entire premise of his livelihood: “The only reason why PDFTextStream exists is because of the waste and incidental complexity that derives from the impedence mismatch between you communicating with me communicating with N other people over this pool of messily-defined, poorly-represented data (i.e. PDFs).”
- A brief summary of how PDFs work
-
Clojure Programming from O’Reilly
- The one with the painted snipe
- ClojureScript open source activities:
- lein-cljsbuild
- clojurescript.test (port of clojure.test to ClojureScript)
- double-check (fork of Reid Draper’s test.check that can be used from both Clojure and ClojureScript)
- Watch out, Ben Orenstein tries to get people to cry on his podcast! – Ed. 😉
- Workaholism, the experience and dangers of
- weight gain (gained ~70 lbs., gone again now though)
- negative impact on family, friends, and loved ones
- sanity
-
Concatenative programming languages
- Factor, Forth, etc
-
Von Neumann architecture(For some reason, I kept saying “Von Neumann” instead of Turing Machine! :-/) - evil-mode for emacs
- multithreaded fork of vim (HN discussion, if you dare)
- “Heaven forfend”
Episode 11 with Jim Crossley and Toby Crawley: the Immutant two-step
Posted: January 13, 2014 Filed under: Clojure Conj, Conversation, Episode Leave a commentToby Crawley () and Jim Crossley () (shown to the left, respectively), among other things, are the primary instigators behind Immutant, the Clojure application platform built on top of the JBoss Application Server. The tl;dr on Immutant is that it provides many of the same infrastructure services that many “platforms” provide (e.g. clustered queuing, caching, distributed transactions, etc), but with a single set of well-integrated Clojure APIs that you can (relatively) easily deploy and manage on your own infrastructure.
Further, regardless of the project, Toby and Jim are always good company; it was a hoot to hang out with them for a spell! We had a great time, I hope you enjoy listening in…
(Recorded on November 16th, 2013; my apologies to Jim and Toby for the particularly bad latency on the release of the recording.)
Listen:
Or, download the mp3 directly.
Discrete Topics
(Remember to follow so you know who’s going to be on next, and can send us topics and questions!)
- All about Immutant…
- (…which Chas happens to use as a foundation for Docuharvest, yet another of his side projects)
- “Platform as a service” services, e.g. Heroku &
- Grizzly, a Java-based HTTP server designed to be embeddable (much like Jetty), which happens to be used as the basis for Glassfish’s web stack
- Using nREPL and all the middleware available for it (like Piggieback via Austin for ClojureScript REPL-ing) in conjunction with Immutant
- clojurescript.test, a maximal port of clojure.test to ClojureScript
- double-check, a fork of Reid Draper’s simple-check property/specification testing library that can be used portably in both Clojure and ClojureScript
- Plans for Immutant 2.0, a.k.a. “The Deuce”
- The Immutant mascot (inspired by the ), probably the best thing to ever come out of a JIRA ticket:
- TorqueBox, the Ruby application platform built on top of JBoss, analogous to Immutant
- Chas’ various Immutant hacks around programmatic queue and logging configuration (the former of which is apparently slated for addition to the official API in some form)
- Infinispan (JBoss’ distributed in-memory key-value store) & Hotrod (its wire protocol for un-clustered client communication)
- Shout-out to , founder of the ProjectOdd group at Red Hat (which houses Immutant, Torquebox, and others)
- Caribou, a “dynamic web application generator with antlers”, one of the latest entries in the Clojure web framework explosion
- Clojure Conj 2013 “recap”
- vert.x, an “asynchronous polyglot application platform for the JVM”, and the Clojure vert.x support, which Toby wrote/maintains and talked about in
- Recent fixes to Clojure (which landed in 1.6.0 alphas) to prevent memory leaks in dynamically-deployed applications
- /ht Andy Fingerhut and Alex Miller for their recent contributions to the Clojure development process, etc.
- ClojureScript releases are versioned in an “interesting” way, e.g. 0.0-XXXX instead of X.Y.Z. Toby asks, “Why, why, why‽”.
- The mentioned mailing list post where this versioning scheme originally arose is , and the ongoing documentation of it looks to be here.
- Results from the 2013 State of Clojure and ClojureScript
- Michael Fogus’ post and talk about the ClojureScript compiler pipeline
- cljx, an implementation of “feature expressions”, enabling one to target both Clojure and ClojureScript from a single codebase
- Not much of a news flash, but Mac OS X is no longer a reasonable option for (some, many?) software developers. What follows is some navel-gazing on our collective migration to Linux.
- Powercenter 120, the first computer that Chas bought new
- Russ Olsen’s
P.S.
Just prior to finishing these show notes, I asked Jim and Toby what pictures of themselves they wanted to go along with the episode. Their (mostly) prosaic, perfectly-fine twitter avatar headshots came first, but then Jim was kind enough to direct my attention to this gem:
Yes, that’s ensemble. Don’t mind the haters, Toby, this is why we love you.
…
Episode 10 with Craig Andera: Training, remote work, Clojure for newcomers, and tooling
Posted: May 30, 2013 Filed under: Conversation, Episode Leave a commentCraig Andera () has been using and speaking about Clojure for years, especially notably of late as the tireless host of the long-running Relevance podcast, where he has interviewed a wide array of personalities (both inside and outside of Relevance, where he is a full-time Clojure developer) that impact and influence Clojure and the space around it.
This episode of Mostly Lazy is quite different from prior episodes in that it is effectively Part II of a longer conversation that started in Episode #31 of the Relevance podcast, where Craig interviewed Chas about Clojure Programming, the state of Clojure broadly writ, 100% time, and other things. If you haven’t listened to that yet, you should go do so now, before listening to this!
Enjoy!
(Recorded on April 19th, 2013.)
Listen:
Or, download the mp3 directly.
Discrete Topics
Many questions and topics came from tweets to (watch for scheduled show announcements and send us topics and questions!)
- Craig interviewing Chas on the Relevance Podcast #31
- Fogus should “guest” host on Mostly Lazy!
- DevelopMentor
- The grind of technical training
- Craig’s history consulting for Microsoft on MSDN (among other things)
- Contrasting the Microsoft and open source mindsets/populations…
- “Everyone likes to build products for people like themselves…”
- Using Cygwin and Virtualbox to form a workable development environment on Windows
- VimScript (of all things)
- “The Rich Hickey Dream”: Clojure + ClojureScript + Datomic
- Pedestal, Relevance‘s “open source tool set for building web applications in Clojure”
- Product businesses vs. consulting
- Ben Vandgrift’s appearance on the Relevance podcast
- “The Clojure community is not welcoming to newcomers.” (paraphrasing)
- “Why Clojure sucks, and why you’ll love it anyway” (Chas’ talk ClojureWest 2012)
- ANN: Mostly Lazy to be renamed to Mostly Navel Gazing
- Craig’s remote working setup & the experience of pairing
- The value/process of user interface / user experience design, storyboarding, etc
- Vim vs. Emacs (yes, seriously :-P)
- “Alternative” Clojure tools:
- The role and state of podcasting as a medium
Episode 9 with Kevin Lynagh and Paul deGrandis: web dev ennui, CRDTs, and core.logic
Posted: January 4, 2013 Filed under: Conversation, Episode Leave a commentPaul deGrandis () and Kevin Lynagh () are two anchors of the Clojure community, perhaps especially of the ClojureScript wing. Both Portlanders, they’ve been elbow-deep in core.logic and a ton of ClojureScript tools and libraries like shoreleave, cljx, c2, and more. They’ve stormed the Clojure world in the past year or two, going from zero to taking up residence in #clojure to speaking about Clojure and ClojureScript everywhere.
Kevin is the founder of Keming Labs, which specializes in “building data-driven UIs”; Paul has worked at all sorts of places like Etsy, Comcast, and TutorSpree.
Enjoy!
(Recorded on December 14th, 2012. Apologies for the clipping on Paul’s audio. Donations welcome to help get him get an internet connection that doesn’t use carrier pigeons. 😉
Listen:
Or, download the mp3 directly.
Discrete Topics
Many questions and topics came from tweets to (watch for scheduled show announcements and send us topics and questions!)
- Abusing
pmap
- java.util.concurrent (learn it, use it!)
- “JavaScript |ˈʤɑːvəˌskrɪpt| (n.): Super janky shit.”
- The rise of the “JavaScript Craftsman”
- “What was the first piece of software you sold?”
- Running ClojureScript on top of node.js
- Conrad Barski‘s WebFui (presented at Clojure Conj 2012)
- Separating code and content or not
-
Functional Reactive Programming & co.
- flapjax
-
Reactive Demand Programming
- A reasonable lightweight summary of RDP
- …compared to FRP
- An (the only?) implementation: Sirea
- Behavioural Programming
- “Local state is poison”
- “FRP is like MVC”
- TodoFRP (post your implementations now!!!11!)
- reflex: “Automatic state propagation in ClojureScript”
- “Web application development ennui”
- “The web was built by amateurs” (alan kay)
- John McCarthy on the W3C: “When w3c decided to not use [s-expressions], but instead imitate SGML [for HTML], that showed a certain capacity to make mistakes — which, probably, they haven’t lost.”
- Commutative Replicated Data Types (CRDTs)
- Mark Shapiro et al., “A comprehensive study of Convergent and Commutative Replicated Data Types” (pdf)
- A presentation by Marc Shapiro Microsoft Research surveying the content of this paper
- Eventual consistency vs. strong consistency vs. strong eventual consistency
- Implementations
- Related: operational transforms
- Mark Shapiro et al., “A comprehensive study of Convergent and Commutative Replicated Data Types” (pdf)
- Coin-change kata
- test.generative
- core.logic (provides an awesome unifier)
- Websockets
- ClojureScript miscellanea
Episode 8: Phil Hagelberg; empowering userspace in Heroku, Leiningen, and Emacs
Posted: September 21, 2012 Filed under: Conversation, Episode 1 CommentPhil Hagelberg (a.k.a. technomancy just about everywhere) has been a constant presence in the Clojure world for years. Best known for starting the Leiningen project — which he continues to maintain as part of his duties at Heroku — Phil has had his fingers in all sorts of open source pots, including Clojure itself, a big pile of Clojure libraries, and the packaging and distribution infrastructure around Emacs (thus foreshadowing Leiningen to a certain degree?).
We talked about many of these topics (recorded on 8/31/2012, BTW), but one theme that kept coming up throughout our conversation was the notion of empowering userspace; that is, ensuring that users of a system have nearly (or exactly?) as much power available to them as the system’s original creators. This is something that Phil has written about recently, where he dubbed a particular approach to empowering userspace as the “Emacs Way”…a strategy that has yielded great dividends in Leiningen and Clojure both.
Enjoy!
Listen:
Or, download the mp3 directly.
Discrete Topics
- Many questions and topics came from tweets to (watch for scheduled show announcements and send us topics and questions!)
- Heroku stuffs, including:
- Mark McGranahan gave a talk at the Clojure Conj last year on “Logs as Data” (inspired by Pulse, a Clojure system for consuming log streams at Heroku)
- Buildpacks, the way projects and apps deployed to Heroku are built
- Sonian
- The Leiningen survey, which aimed to get a snapshot of how people use the tool
- Scripting Gnome 3 with ClojureScript
- “The Great Samsung Laptop Fiasco of 2012”
- “Ending is better than mending” (or not?)
- Common tools for code pairing / swarming: screen & tmux
- “Emacs is a great operating system; if only it had a decent text editor…”
- nREPL, and the Emacs support for it, nrepl.el
- Gobby, a free collaborative editor
- A Leiningen and Clojars status update
- The potential vulnerability of builds that rely upon remote / third-party artifact repositories
- Maximizing community participation in open source projects
- “Pull requests aren’t a joking matter, people!” 😉
- Empowering userspace, i.e. extending systems in the same way and language used to build the system itself viz. “the Emacs way”
- Phil’s current reading list:
- (“a pop-sci take on how statistics has influenced science”)
- (“sci-fi precursor to cyberpunk”)
- The extensibility and flexibility of the Heroku / buildpack model
- OCaml, Factor, Haskell, elisp, and even buildpacks for NES roms
- “Making sure we can s” of maximizing the leverage available to users within the system.
Episode 7: Anthony Grimes; tools and projects; minimum viable snippets
Posted: August 30, 2012 Filed under: Conversation, Episode Leave a commentI had a lot of fun catching up with Anthony Grimes ( on Twitter and Raynes in #clojure irc). One of the most prolific Clojure programmers I know (in terms of project count anyway!), Anthony has been a fixture in the community for years, and was the “sponsoree” of the 2010 Clojure Conj scholarship. He works at Geni, helping to make their social ancestry site more awesome every day, but we talked about all sorts of stuffs.
Enjoy!
Listen:
Or, download the mp3 directly.
Discrete Topics
- Some questions and topics came from via (watch for scheduled show announcements and send us topics and questions!)
- Jiraph, a Clojure graph database implemented at Geni
- flatland, Geni’s open source organization (including Anthony, Alan Malloy, Justin Balthrop, and Lance Bradley)
- lein-newnew, Leiningen‘s extensible scaffolding plugin
- Try Clojure, a browser-based Clojure REPL
- RefHeap, a pastebin written in Clojure
- Using your cell phone for your primary internet connection
- Millenicom, dedicated 3G/4G internet access
- Whether a programming language should present a “minimum viable snippet”or not
- The J programming language, an APL-style language that happens to not have an easy-to-find minimum viable snippet (here’s some)
- The impact of superficialities, e.g. rejecting Common Lisp in part due to its UPPER-CASE-SYMBOLS
- Cake (another Clojure project management tool whose contributors )
- Impact of the 2010 Clojure Conj Scholarship
- Ambrose Bonnaire-Sergeant and his Google Summer of Code project, Typed Clojure
- Elixir, a Ruby-esque language implemented on top of Erlang with various Clojure influences
- Lisp-flavoured Erlang
- Erlang’s (lack of) support for Unicode strings
- Anthony’s post on using Emacs, Sublime Text, and vim when programming in Clojure
- evil-mode, vim emulation in Emacs
- “Vim’s cliff-like learning curve”
- Eclim, a way to embed a vim editor within Eclipse
-
Light Table
- Uses CodeMirror as the basis of its editor
- Cloud9 IDE, which uses Ace as its foundational editor component
- Browser-based code editors as a likely instance of an initially low-end technology moving upmarket to disrupt established players (viz. Christensen’s )
- Cats. (Sorry, inside baseball there.)
Episode 6: Chris Houser; Clojure surveys; getting the “little things” right in languages; Yegge-rama; ClojureScript REPLs
Posted: August 14, 2012 Filed under: Conversation, Episode 6 CommentsI was stoked to reboot by talking yesterday with Chris Houser (a.k.a. Chouser), this time via Skype. It’s good to be back!
Enjoy!
Listen:
Or, download the mp3 directly.
Discrete Topics
- The 2012 State of Clojure survey results came in recently
- Discussion on the effect of duplicate values in set literals (and duplicate keys in map literals) in Clojure (from ; here’s a link to that I described on twitter as a bit of “software archeology”)
- Clojure’s “pace of development” / cadence and the failure modes of language development
- Potentially customizing the characteristics of thread pools (and more?) used by agents and futures (from )
- Rough corners around agents, multimethods, namespaces, etc., and the potential for alternative implementations of the same
- The podcast has now been anthropomorphized into a Twitter account — tweet your questions, topics, etc. there, and
- Chouser’s precis re: Lonocloud now that he’s been working there for some months
- The sad statuses of Raposo and Longbottom, related to Chas and Chris’ respective talks at Clojure Conjand Clojure/West (link to Chris’ talk pending the release of its video)
- Check out clj-stacktrace, the nexus for all improvements to Clojure stack traces
- Get your in; CFP closes August 24th
- What sucks about Clojure…and why you’ll love it anyway, from Clojure/West
- Engineering(,) A Path to Science: “I don’t want to die in a language I can’t understand”, Richard Gabriel’s talk at Clojure/West (video link not yet available)
- In the aftermath of Steve Yegge’s :
- Recognition of Yegge’s prior good works, e.g. Execution in the Kingdom of the Nouns
- What “Worse is Better vs The Right Thing” is really about, talking about how economic choices influence technology choices
- Using ClojureScript to write CouchDB views, and writing PostgreSQL stored procedures via
- Piggieback, which enables any nREPL-based Clojure tools (e.g. Leiningen, , nrepl.el, REPL-y, etc.) to start up and use a ClojureScript REPL as easily as one can from a Clojure REPL on a command-line terminal.
- nrepl.el is looking like a decent, well-supported alternative to SLIME for Emacs users wanting to use nREPL
- “I’ve been using Linux for a long time, I have low standards!”
Finally, a non sequitur: Chris kindly responded to with this fine example of an indecently-shaven specimen: