Functional Geekery Episode 12 – Adi Bolboaca

In this episode I talk with Adi Bolboaca. I we talk about his experience of facilitating Coderetreats and some of the different things he has noticed in relation to functional languages being used during the sessions.

Our Guest, Adi Bolboaca

http://blog.adrianbolboaca.ro/
@adibolb on Twitter

Topics

What is Coderetreat
How have functional languages shown up in Coderetreats
Conway’s Game of Life in APL
Conway’s Game of Life in Clojure from Clojure Programming
The types of solutions seen from functional languages
The tendency to not have good variable and functions names in functional languages
The lack of stressing the importance of clean code in functional languages
Single Responsibility Principle in functional languages
The exchange of ideas between people with different language paradigms experience
Challenges used to push people to a more functional style in object-oriented languages
The one guy doing Haskell during a Coderetreat
Interesting solutions seen from people using Erlang
Unexpected languages seen in Coderetreats
Pharo Smalltalk
The uniqueness of Perl programmers’ solutions
The regional distribution of functional languages showing up in Coderetreats
Lack of resources for clean code in functional programming and design
Importance of design and architecture in software
CodeRetreat.org
Global Day of Coderetreat

A giant Thank You to David Belcher for the logo design.

Functional Geekery Episode 11 – Simon Peyton Jones

In this episode I talk with Simon Peyton Jones. I ask him about his background in Functional Programming, the growing popularity of Haskell, things he would like to bring into Haskell further, and his work with Computing At School.

Our Guest, Simon Peyton Jones

Simon Peyton Jones

Topics

Haskell
Computer Science at School
How Simon Peyton Jones got into Functional Programming
SK Combinators
Implementation of Functional Programming Languages (Amazon, online)
Creation of Haskell
Haskell as a Laboratory for Innovation
Interview on Software Engineering Radio
Core of Haskell as Lambda Calculus
System F
Growing Popularity of Haskell
Hackage and Cabal
Concurrency in Haskell
Haskell as a part of an Ideas Pipeline and Exemplar
“When the limestone of imperative programming is worn away the granite of functional programming will be revealed underneath”
Static Typing in Haskell vs Weaker Type Systems
Type Inference
Incomplete programs

  • Example 1: f x = sort _ ++ x
  • Example 2: f x = funny_lib_fn _ _ _

Things thinking about for future of Haskell
Refinement Types and Liquid Haskell
Larger Scale Modularity in Haskell and Software Components
Cloud Haskell
Refinements Examples

  • Example 1: f :: Int -> Int
  • Example 2: f :: (x:Int) -> {y:Int | y > x }
  • Example 3: g :: (x:Int -> {y:int | y>x}) -> …

Combination of Modularity at Package Level with Refinement Types as part of Component Contract
Bringing Computer Science as Subject Discipline to England National School Curriculum
What the curriculum looks like
Number of Programming Environments aimed at Children in School
Logo
Scratch
Alice
Kodu
Greenfoot
Blockly
touchdevelop
Programming is Only Part of Computer Science
Computer Science Unplugged
How to Participate at the Local Level Even
Join Computing At School

A giant Thank You to David Belcher for the logo design.

Ten Episodes of Functional Geekery Live

This is a cross post from my blog: http://www.proctor-it.com/ten-episodes-of-functional-geekery-live/, but I wanted to make sure it was announced here for those who may not visit my personal blog.


I just released the tenth episode of my podcast Functional Geekery.

I had been thinking about doing a podcast for a while, in return of all the information I get out of listening to other podcasts as part of my “Automobile University”, but could never come up with the niche. It occurred to me about 3am in the morning when I was taking a shift to get our little one, Ada (yes, after that Ada) who was about 5 months old at the time, back to sleep; the best ideas to come when you are least prepared to think about them.

I told my wife about my “crazy idea”, and explained to her what my goal was, and got her support for this experiment I was wanting to do, and told her I could do this in a very lean manner. I had a headset with microphone already, and told her it would just be a domain, hosting, and recording setup. My goal was to see if I couldn’t start a podcast for only about $100 investment with all things totaled. I would shoot to see if I could get at least 10 episodes done, to amortize the cost to be about $10 an episode.

I figured if nobody listened, but I could have 10 interesting conversations, the learning and exposure to ideas from those conversations would easily outweigh that initial investment, and the podcast would give me a good way to reach out to people I would love to talk to but probably wouldn’t have had the opportunity to talk to anytime soon.

I want to give a sincere heartfelt Thank You to all my guests so far, and everybody else I have reached out to so far to get initial conversations going about being a guest. Everyone has been much more receptive and open than I could have ever imagined. Everybody has been kind, and the worst I have gotten was some deferrals due to busy schedules, which I can appreciate. This is been even more honoring, as most of the people I have reached out to had likely never heard of me when I sent my emails to them asking if they would do me the honor of being a guest on the podcast I was starting. Thank you all for your support, and kindness, and if you ever have more things you would like to talk about, all of you always have an open invitation back.

I also want to thank everybody who has listened, and shared the podcast with others. I have gotten much better reception and response that I realistically imagined. Thank you for your shares, (re)tweets, comments, and suggestions. If you have anything else you want to share I would love to hear from you. If you need to find the best way to contact me, just head over to Functional Geekery’s About page.

Don’t worry, I am not planning on going anywhere at this point. I have another recording “in the can”, and am working to line up some more great guests. I also have a large list of people I would love to talk to at some point, and would hate to end before I got to use the podcast as a reason to be able to have a interesting conversation with them as well. ;)

As always, a giant Thank You goes out to David Belcher for the logo, who took my rough idea of a logo, and transformed it into something brilliant.

And an even bigger THANK YOU goes out to my wife, who has let me pursue this “crazy idea”.

Your host,
Proctor

Functional Geekery Episode 10 – Paul Holser

In this episode I talk with Paul Holser. We start out by talking about his junit-quickcheck project, being a life long learner and exploring ideas about computation from other languages, and what Java 8 is looking like in with the support of closures and lambdas.

Our Guest, Paul Holser

http://github.com/pholser
@pholser on Twitter

Topics

The Container Store
junit-quickcheck
JUnit
JUnit Theories
Real World Haskell
Haskell QuickCheck
Prime Factors Kata
Interest in trying to tackle shrinking for junit-quickcheck
Bringing functional ideas back into Java
Try to push the envelope of what you can do in a language
Groovy
Scala
Clojure
Being a life long student
MOOCs (Massive Open Online Course)
Coursera
edX
Why work in Java
Being willing to suck at something to afford learning opportunities
Ways to bring ideas from functional languages back to co-workers
Guava
Be gentle and persistent
mockito
How well Java 8 brings functional ideas back to Java
Work to use lambdas as matchers in JUnit
Hamcrest
Single Abstract Method Types
lambspec
Steve Yegge’s Execution in the Kingdom of Nouns
Support of closures and lambdas in Java 8
New Optional Type in Java 8
Dallas Area Java MUG at Improving Enterprises
Coursera Courses and other MOOCs
Functional Programming Principles in Scala on Coursera
Principles of Reactive Programming on Coursera

A giant Thank You to David Belcher for the logo design.

Functional Geekery Episode 9 – William E. Byrd

In this episode I talk with William Byrd. We talk about miniKanren and the differences between functional, logic and relational programming. We also cover the idea of thinking at higher levels of abstractions, and comparisons of relational programming to topics such as SQL, property testing, and code contracts.

Our Guest, William Byrd

http://webyrd.net/
http://github.com/webyrd
@webyrd on Twitter and webyrd@gmail.com

Topics

U Combinator Lab
miniKanren
Will’s overview of how he got into LISP and Relational Programming
Daniel Friedman and Indiana University
Logic Programming
Zebra Puzzle – Who owns the Zebra?
Oleg Kiselyov
The Reasoned Schemer
Purely Relational Arithmetic System
The Ability to Reorder Statements and Keep the Same Semantics
Functional vs Logic vs Relational
core.logic
Interview of Will on InfoQ
How Far Can We Get Being Purely Declarative
Constraint Logic Programming
Bob Harpers’ Post on Static vs Dynamic Typing
Analogies Between Typing and Logic Programming
Dependent Type Systems, e.g. Agda and Idris
The Discovery of Functional Programming and Signs of Logic Programming
Functional JavaScript by Fogus – (Note: There was Episode with Fogus on Functional JavaScript)
Trying to Understand the Implementation of miniKanren to Understand Thinking Operationally
The ability to be able to let go of implementation details and think at a more abstract level
Pointers on Where to Dig Into Relational Programming
miniKanren.org – For all things miniKanren
Will’s Dissertation
Scheme Workshop Paper
Will is Working on a Book as Starting Place for Relational Programming
The Art of Prolog
Prolog Programming for Artificial Intelligence by Ivan Bratko
Thanks to Everyone Who Has Worked on miniKanren
Clojure/Conj and Strangeloop talks on miniKanren

A giant Thank You to David Belcher for the logo design.

Functional Geekery Episode 08 – Jessica Kerr

In this episode I talk with Jessica Kerr. In this episode we talk bringing functional programming concepts to object oriented languages; her experience in Scala, using the actor model, and property testing; and much more!

Our Guest, Jessica Kerr

jessitron.com
@jessitron on Twitter and jessitron@gmail.com

Topics

Jessica’s ØreDev Talk
Jessica’s Ruby Midwest Talk
Bring Just Enough of the Ideas from Functional Programming Back to Java and C#
Use Static/Class Level Methods to Make Needed Data Explicit
Designate Methods That Modify State When Working in Object Oriented Languages
Isolation as the Dual/Reverse to Encapsulation
Guava library for Working in Java
Readable Code vs Familiar Code
Use Code Reviews to Spread Practices
Scala as a Hybrid Language and the Blessings and Curses Therein
Reasons One Might Choose Scala
Akka
Akka Concurrency by Derek Wyatt
The Actor Model
Testing with Scala
Introducing a Functional Language by Writing Tests in that Language
ScalaTest
ScalaCheck
Property Based Testing
ScalaCheck: The Definitive Guide
Commonalities Between Git and Functional Concepts
Directed Acyclic Graphs
Importance of Immutable Data in Functional Programming
LambdaLounge
F#
Using a Functional Language to do Spikes to Solidify Ideas
Kansas City Developer Conference
Jessica’s Upcoming Appearances
GOTO Chicago
QCon New York 2014
scalaz-stream
GOTO Amsterdam 2014
ScalaDays 2014
Scala Puzzlers
Ribbon Farm

A giant Thank You to David Belcher for the logo design.

Update: May 6th 2014
Added link to Scala Puzzlers.
Also, Jessica has informed me that she had to cancel her appearance at ScalaDays.

Episode 7 – Angela Harms and Jason Felice on avi

In this episode I talk with Angela Harms and Jason Felice about avi. We talk about the motivation of a vi implementation written in Clojure, the road map of where avi might used, and expressivity of code.

Our Guests, Angela Harms and Jason Felice

maitria
Angela Harms: @angelaharms on Twitter and angela.harms@gmail.com
Jason Felice: @eraserhd on Twitter and jason.m.felice@gmail.com
avi on Github

Topics

Angela’s guest appearance on RubyRogues podcast
Vim
How Jason and Angela got into Clojure
http://maitria.com/
avi
Podcast with creator of VsVim
Why pick Clojure to write avi in
Greenspun’s Tenth rule but for vi plugins
Midje
Where the vision of avi is going
Do not defeat a Vimmer’s muscle memory
How Immutable state is helping
cocos2d
What might make a MVP for avi
Midje and testing framework style
Expressivity of the avi’s tests
The example tests on github
Angela and Jason’s obsessiveness on expressivity and Clojure’s impact on it
4clojure.com
Issues and discussion about avi on github are much appreciated

A giant Thank You to David Belcher for the logo design.

Episode 6 – Reid Draper

In this episode I talk with Reid Draper. We cover Reid’s intro to functional programming through Haskell, working in Erlang, distributed systems, and property testing; including his property testing tool simple-check, which has since made it into a Clojure contrib project as test.check.

Our Guest, Reid Draper

reiddraper.com
@reiddraper on Twitter
reiddraper on Github

Topics

Basho
Riak and Riak CS
Reid’s appearance on The Cognicast
The Echo Nest
Two camps of approaching learning a language, project based and learning the language for the language sake
Learn You a Haskell for Great Good
Papers on Haskell and ML to help learn functional programming
Paxos and Raft papers
Consensus
Lamport papers
Amazon Dynamo paper
What about Erlang helps with building Distributed systems
Messaging between nodes in Erlang
The ability to debug live systems with Erlang
Dealing with distributed systems that are not replicated
The Eight Fallacies of Distributed Computing and Fallacies of Distributed Computing Explained
“A static website with only one browser connected is a distributed system”
Immutability and Eventual Consistency
Importance of Idempotent commands in Distributed Systems
Property Based Testing
Quick Check
Erlang Quick Check and Proper
simple-check [It has since been moved to be Clojure contrib project as test.check]
Thinking in Properties about functions
Static vs Dynamic typing and Gradual typing
core.typed by Ambrose Bonnaire-Sergeant
Dialyzer from Kostis Sagonis
Agda
Idris
“Learn one dynamically typed and one statically typed with a good type system”
Typer for Erlang
Webmachine
Riak and RiakCS as example of large scale distribute/Erlang systems
Haskell, Coq, Agda, Idris
Implementation of Functional Programming Languages by Simon Peyton Jones

A giant Thank You to David Belcher for the logo design.

Episode 5 – Colin Jones

In this episode I talk with Colin Jones, software craftsman at 8th Light. We cover Colin’s work on the Clojure Koans, making the transition from Ruby to Clojure, how functional programming affects the way he does object oriented design now, and his venture into learning Haskell.

Our Guest, Colin Jones

Colin on 8th Light
Colin’s blog posts at 8th Light
@trptcolin on Twitter
trptcolin on github.com

Topics

8th Light
Colin’s background on getting into programming
Clojure Koans
Learning Clojure by writing the Clojure Koans
Teaching as a way to learn
Colin’s blog post Clojure Libs and Namespaces
Colin’s blog post Quoting Without Confusion
Clojure Doc site
REPLy
nREPL
Leiningen
Possible use of nREPL to connect to a live running system
8th Light’s experience with Clojure
Pedestal
Webmachine
Liberator
Using Object-Oriented constructs in Functional languages, and vice-versa
Colin’s SOLID Clojure presentation
Speclj
clojure.test
Midje
Speclj works on ClojureScript as well
ClojureScript
Haskell
exercism.io
Learn You a Haskell for Great Good
The other book that was recommended to Colin: Haskell: The Craft of Functional Programming
Deliberate Practice with feedback
Colin is writing a book on macros in Clojure from Pragmatic Press
On Lisp by Paul Graham
Let Over Lambda by Doug Hoyte
David Nolen (@swannodette on Twitter)
Concepts, Techniques, and Models of Computer Programming
Michael Bernstein (@mrb_bk on Twitter)
Michael Fogus (@fogus on Twitter)
Out of the Tar Pit on CiteSeer
Apprenticeship at 8th Light
8th Light University on Friday afternoons

A giant Thank You to David Belcher for the logo design.

Episode 4 – Zach Kessin

In this episode I talk with fellow podcaster Zach Kessin. We cover his background in software development and podcasting, the background of Erlang, process recovery, testing tools, as well as profiling live running systems in Erlang.

Our Guest, Zach Kessin

@zkessin on twitter
zkessin on github.com
Mostly Erlang
@mostlyerlang on twitter

Topics

Structure and Interpretation of Computer Programs
Programming HTML5 Applications
Building Web Applications with Erlang
Listing to podcasts as part of a commute
365 Days of Astronomy
Mostly Erlang
Ohio State University astronomy professor Richard Pogue and his lectures
Zach’s episode of JavaScript Jabber
Zotonic
Background of Erlang
Actor Model
Erlang Links/Monitors
Behaviors in Erlang
Process Recovery in Erlang
Riak
Robert Virding
Dialyzer
Kostis Sagonis
PropEr and Property Based Testing
Episode 16 & Episode 27 of Mostly Erlang
Concuerror
Testing Erlang
Moore’s Law is over and mega-cores are the future
Immutability in Erlang
Joe Armstrong
Simon Peyton Jones
Profiling Covering in Running Code
webmachine
webmachine diagram
Mostly Erlang – 029 Teaching Kids to Code
Ruby Rogues – 141 RR Teaching Kids with Ron Evans
Introducing Erlang by Simon St. Laurent
Learn You Some Erlang for Great Good
Erlang Factory
Chicago Boss

A giant Thank You to David Belcher for the logo design.