Splitting APIs, Servers, and Implementations in Elixir
tldr; I think the conventional way of structuring Elixir code could be improved by paying more attention to decoupling.
Put This in Your Pipe(line)
We know that Elixir programming is about transforming state, and |> operator plays the starring role in making that happen. But sometimes you can’t just chain two named functions together—the output of one doesn’t match the first parameter of the next. Until I discovered this trick, I had to break the pipeline and assert the interim result to a local variable, or write a private function that massaged the value into the right format.
An Elixir Project Generator
For the last year, I’ve had a ritual when creating new Elixir projects.
Testing Private Functions
A couple of days ago, I published a trivial little Elixir library that temporarily overrides the private status of functions while running tests.
Emacs Term Buffers—A Fix for the Modified Bit
I do 90% of my coding in Emacs. In the old days, I used to run iTerm on a separate desktop and Alt-Tab between them. But the lack of integration bugged me, so I kept trying Emacs term-mode. It took a while, but I finally got a really nice setup, with mouseless-navigation, fish shell integration, and so on.
We Perform State
I saw this sign over the weekend.
Pragdave 2.0
For the past 33 years, I have looked in the mirror every morning and asked myself: “If today were the last day of my life, would I want to do what I am about to do today?” And whenever the answer has been 'No' for too many days in a row, I know I need to change something. — Steve Jobs
(Over)using with in Elixir 1.2
Elixir 1.2 introduced a new expression type, with. It’s so new that the syntax highlighter I use in this blog doesn’t know about it.
Immutability, State, and Functions
Let’s start with the obligatory call to authority:
Personal Area Stereo
I like listening to music while working. But I don’t like wearing headphones—after a while they start feeling claustrophobic.
How Do You Use a Catalog?
Proud to be an American
Peroxide us an opportunity
A Simple Elixir Macro
Thinking in Transforms—Handling Options
Elixir: state machines, metaprogramming, and generating tests
Tony Benn's Five Questions for the Powerful
Agile is Dead (Long Live Agility)
Parameterizing types using pattern matching
Pattern Matching and Parsing
Telling, Asking, and the Power of Jargon
I've finally rationalized my blogs
Class factories in Coffeescript
Room for one more
Moon over Midway
Just used a cool regexp trick in Ruby
I'm sick of site spam
Reactive systems have no top
Water tower
Elixir Wordl from Ganesan Janarthanam
Oft repeated, rarely heeded…
Deploying Elixir
Pragmatic Royalties—2013 Edition
Smart Constants
Followup to my EMail experiment
So I'm trying an email experiment
Pragmatic Bookshelf Royalty Rates
Final Piece of Music
Some music: Seventy Eight
The Passionate Programmer
Twitter Should Move Away from Ruby
Some music: Fives and Sixes
Epic Cover
Ruby 1.9 can check your indentation
Forking Ruby—my RubyConf Keynote is now up
See Rails request paths in 'top'
Fun with Ruby 1.9 Regular Expressions
Fun with Procs in Ruby 1.9
Clearing the logjam
Silly Ruby 1.9 trivia
Screencasting Ruby Metaprogramming
My first music composition
New lambda syntax in Ruby 1.9
Two new books
Code in Presentations, Part II
Zachary's a Black Belt
Our take on presenting code
Shoulda used this earlier
Fun with Ruby 1.9 File Encodings
I'd like to apologize
Source Code for that Testing Library
Playing with a Testing Library
The 'Language' in Domain-Specific Language Doesn't Mean English (or French, or Japanese, or ...)
Pragmatic Dave on Passion, Skill and 'Having A Blast'
A loud "Huzzah!" was heard throughout the land
Pipelines Using Fibers in Ruby 1.9—Part II
Pipelines Using Fibers in Ruby 1.9
Third Edition of the Pickaxe
Michael Swaine on Computer Book Publishing
Art in Programming
Superators: neat Ruby hack
Possibly my favorite Rake target
DHH—Rock Star!
Have Fun. Do Good.
Paying Back
Rails is Love
Test-First Word Wrap in Erlang
Adding Concurrency to Our Erlang Program
A First Erlang Program
The RADAR Architecture: RESTful Application, Dumb-Ass Recipient
Grapher: The Coolest App You Never Knew You Had
SYWTWAB 7: Reviewers, And How Not to Kill Them
Agile Mastery
SYWTWAB 6: Wrandom Writing Wrules
SYWTWAB 5: Finding Your Voice
SYWTWAB 4: Readers on Your Shoulders
SYWTWAB 3: The Hero's Journey: Are You Experienced?
Quick Ruby Quiz
SYWTWAB 2: The Hero's Journey
SYWTWAB 1: So You Want to Write a Book?
Bob Payne's Interview with me
Some Agile History
Agile Retail
Cheese on Toast
Two Hands Bad: The Frustrations of Dreyfus Level One
The Canary Benefit
Rails and the Legacy World
Migrations Outside Rails
Rails Guidebook
Glue That Doesn't Set
Rails Deployment
Direct Shipping Record
Agile Toolkit Podcast : RailsEdge 2007 - Dave Thomas - Monoculture, Music and Erlang…
Rails is More...
E Pluribus Anum
R-Rails Gets R-Recognized
Annotate Models Plugin
Rails Guidebook is Full
RailsConf and the Rails Guidebook
Our latest conference
Sharing External ActiveRecord Connections
The Water Fountain Methodology
Chad Fowlers Speaks!
Great advice from Chris Pine…
Magical Thinking
Weighty Matters
The First Rails Studio
One-Two on Amazon
Is Ruby Better Than…?
Is Rails Ready for Prime Time?
Mining Build Statistics
Spam Volume
ongoing by Tim Bray · Shiny Red Rock
We Reached the Station
Knee Testing
Shared Find Clipboard on OSX
Putting Code in Python Documentation
Putting Code in Books
The Pragmatic Studio
The Wiki Way of Writing
Failure and Surgeons
Thanks to all my Fans
Weeding out Bugs
Fueling Development
The New LaTeX Companion
Why I Like Scripting Languages, Reason #259
Reasons to Like Scripting Languages, #134
We're in Borders!
A Milestone Reached
Test Driven or Test First?
Outsourcing article
End of the Knowledge Worker?
Broken Raspberries
We Got a Jolt Award!
Tim Bray on Dynamic Languages
Nice Interface in a Storm
Our Third Title!
Mechanism and Policy
My Kind of Warranty
Tangled Up In Packing Tape
Want to Work for Amazon?
Prowling the ruins of ancient software
Truths from the Declaration of Independence
Debating with Knives
Construction Methods
Change Control is Location Independence
Dynamically Scoped Variables
The Joy of Lego
Vicarious Seat Backs
First Kill the Architects
Tom Lehrer's "The Elements". A Flash animation by Mike Stanfill, Private Hand
On Getting Involved
Topless Systems, Naked Objects
Bill Venners' Interview
Io, Io, it's Off to Play I Go
The Absence of Grace
Every day in every way…
Passing Information to Our Children's Children's ... Children
Learning from Mistakes