I am a tech talk and blog post addict! In the evenings I frequently run on my treadmill and watch at least one tech talk. At our last offsite in San Francisco a few of my co-workers encouraged me to write a post of my favorite tech talks and articles from 2015. Well here they are, in no particular order:
Tech Talks
Nothing is Something by Sandi Metz
Esteemed author of the Ruby Object-Oriented Design bible Practical Object-Oriented Design in Ruby, Sandi Metz explains everything she’s learned in the last 18 months of teaching Ruby design principles in 30 minutes.
animals = animal_ids
.map { |id| GuaranteedAnimal.find(id) }
.each { |animal| puts animal.name }
# => 'pig'
# 'no animal'
# 'sheep'
Live React: Hot Reloading with Time Travel by Dan Abramov
Dan Abramov, creator of Redux, accidentally created Redux, now the most popular Flux implementation, while preparing this talk about hot reloading in React. Highly recommended presentation.
export default function todos(state = [], action) {
switch (action.type) {
case ActionTypes.TODO_CREATE:
let text = action.text.trim();
return [...state, text];
default:
return state;
}
}
(Note: If you’re curious about React, this interactive blog post Removing User Interface Complexity by James Long from last year is a fun place to start.)
Towards a Higher Level Language by Erik Michaels-Ober
Erik Michaels-Ober, creator of RailsAdmin, presents an intriguing timeline of programming languages as an evolution toward higher levels of abstractions and offers humble suggestions for a higher-level Ruby. (Sidenote: I disagree with killing Ruby symbol!)
# pattern matching (ala Elixir)
class Triangle
def area(side1, side2, degrees of Integer)
(side1 * side2 * Math.sin(degrees))
end
def area(side1, side2, radians of Decimal)
degrees = (180 / Math::PI) * radians
area(side1, side2, degrees)
end
end
# unified function syntax: def, proc, Proc.new, lambda, ->, oh my!
greeter = def(name)
puts "Hello #{name}!"
end
greeter(name)
Blending Functional and OO Programming in Ruby by Piotr Solnica
Is it possible to combine functional and object oriented programming? The author of Ruby Object Mapper thinks so. In this presentation he discusses how to reduce accidental complexity in Ruby applications by applying functional concepts from languages like Clojure, Haskell and Elixir.
author = (filter_author >> validate_author >> build_author).call(
first_name: 'Claudia',
last_name: 'Rankine',
birth_year: '1963',
genres: ['Poetry’, Playwright']
)
Immutable Data and React by Lee Bryon
Even if you’re not interested in React, that’s OK. Watch this excellent talk by Facebook engineer Lee Bryon for an engaging dive into persistent, immutable data structures. (Note: This briefly discusses the ES7 proposed Object.observe
which, fortunately IMO, was withdrawn.)
Persistent, immutable data structures are pretty damn interesting. And they’re efficient because of structural sharing. No more mutable state stockholm syndrome! We can solve problems by removing complexity.
Turning the database inside-out by Martin Kleppmann
Have you ever considered that your database is a kind of gigantic, global, shared, mutable state?
Allow Martin Kleppmann, senior LinkedIn engineer on sabbatical writing Designing Data-Intensive Applications, to challenge your conception of database architecture.
What do we have to gain from turning the database inside out? Simpler code, better scalability, better robustness, lower latency, and more flexibility for doing interesting things with data. After this talk, you’ll see the architecture of your own applications in a new light.
(Note: There is also an excellent blog post for this talk.)
Phoenix - a framework for the modern web by Chris McCord
As a budding fan of Elixir, for me this is probably one of the most exciting talks of 2015. Chris McCord is the creator of Phoenix, a modern web framework in Elixir. In this presentation Chris gives a compelling overview of what makes Phoenix different and why you should check it out.
We don’t have to make the upfront decision of, say, should we do a monolith or should we do a microservice? We have microservices. [In Phoenix] they’re called applications. But we don’t think if it that way. It’s just baked into the patterns that we’re already using.
Climate Data, Scientific Data Visualization and Clojure by George Kierstein
George Kierstein holds a masters degree in Computational Neuroscience and is a software engineer working with the National Centers for Environmental Information in Asheville, North Carolina. In this talk she cleverly weaves neuroscience, human psychology, data visualization and functional programming into an absorbing presentation.
Climate data is unique in many ways:
- The longest continuous data sets humanity have ever collected
- Provenance has an importance that is scrupulously monitored
- Truly a global, cooperative effort
- Generational-scale impacts hit cognitive blind spots
How to Crash an Airplane by Nickolas Means
Question: What does a plane crash in 1989 have to do with working on a software team? Listen to this absolutely captivating story by Nickolas Means to find out.
The ony question I had was how long it was going to take Iowa to hit me.
(Thanks to my co-worker Emma Colner for bringing this great talk to my attention!)
Meritocracy by Jessica Kerr
Invest four minutes to watch acclaimed software developer, programming language enthusiast, blogger and Twitter personality, Jessica Kerr expose cognitive biases that can hide within the seemingly well-intentioned narratives of “meritocracy”.
The thing about meritocracy: That word was coined in 1958 by Michael Young in a book about a **dys_topian** society. Meritocracy is a problem, _if you think you’re in one.
From Computation to Consciousness by Joscha Bach
Here is a thoroughly brilliant presentation by Joscha Bach, renowned MIT articial intelligence researcher and software engineer. (Note: I was torn deciding between this and his latest, equally fascinating talk: Computational Meta-Psychology.)
How is it possible that we can be conscious without a self? I think that it’s because our self is not identical to our mind. Our self is also not an agent. Our self is a representation. It’s a story that the mind tells itself about what happens with it in the world.
Articles
What Is Functional Programming? by Kris Jenkins
One of the clearest, most succinct explanations of functional programming I’ve read. Eeking in just under the 2015 wire, published on December 29th.
I put it to you that every function you write has two sets of inputs and two sets of outputs.
Two? Only one, surely?
No, two. Definitely two. Let’s take a look …
Tasks, microtasks, queues and schedules by Jake Archibald
Question: In what order should the following logs appear?
console.log('script start');
setTimeout(function() {
console.log('setTimeout');
}, 0);
Promise.resolve().then(function() {
console.log('promise1');
}).then(function() {
console.log('promise2');
});
console.log('script end');
If you’re not 100% sure, refresh your coffee and read this detailed post by Jake Archibald, developer advocate at Google.
Anatomy of a Rails Service Object by Dave Copeland
Co-worker and Director of Engineering here at StitchFix, as well as author of several excellent books, Dave Copeland has written a fantastic crash course on Rails “service objects”. It features our own lovely ImmutableStruct gem.
Result = ImmutableStruct.new(:return_processed?, :error_messages)
This was the first post that I read on the Stitch Fix blog before I began the interview process. Being a fan of both service objects and immutability, reading this post definitely got me excited to join the team!
My Weird Ruby by Thomas Reynolds
The author of Middleman briefly highlights how (wonderfully) weird his Ruby code has become since playing with Clojure. (Also, see the Hacker News Discussion.)
watchers
.lazy
.select { |d| d.type == type }
.map { |d| d.find(path, glob) }
.reject(&:nil?)
.first
What Doesn’t Seem Like Work by Paul Graham
What seems like work to other people that doesn’t seem like work to you?
A short, sweet gem from Paul Graham, gifted essayist and co-founder of the inimitable Y Combinator.
Happy New Year!
I hope you enjoy these as much as I have.