Articles
-
Frameworks and Why (Clojure) Programmers Need Them 13 August 2019It seems like there's a strong aversion to using frameworks in the Clojure community. Other languages might need frameworks, but not ours! Libraries all the way, baby!
-
Buddy Systems at Work: a Framework for Rewarding Relationships on Remote Teams 04 June 2019While at Reify, I drafted an outline of a program called The Buddy System. The idea was to provide a framework for devs to support each other. I'm sharing it here in case others find it useful.
-
Techniques for Efficiently Learning Programming Languages 16 April 2017What follows are the best techniques for learning programming languages that I've picked up over years of teaching programming.
-
Zen and the Art of Blowing Things Up 19 March 2017The Dark Knight came out at the same time that I was becoming intensely interested in Buddhism, and the movie struck me as a kind of extended Buddhist parable, with Bruce Wayne as an icon of the suffering that results from clinging and the Joker as a very fucked up enlightened being
-
My Writing Process 22 August 2016Some notes on how I write that I hope will be useful to aspiring authors
-
Understanding Recursion 08 August 2016Struggle with recursion? This blahg post might help.
-
Timeless Programming Tools 23 March 2016I've been programming professionally for a dozen years. Some of what I've learned is best forgotten, but there have been many tools and techniques that continue to be useful every day.
-
Brave Clojure: Become a Better Programmer 22 March 2016Next week I'm re-launching www.braveclojure.com as Brave Clojure: Become a Better Programmer.
-
A Directory of Open Source Clojure Projects 20 March 2016Open Source Clojure Projects is a directory of active projects welcoming new contributors. Its purpose is to make it easier for both new and experienced Clojurists to find ways to contribute.
-
Not a Superpredator 02 March 2016My thoughts on Ashley Williams's protest action in South Carolina.
-
Announcing Job Search Sanity 09 December 2015Today I'm releasing a free web application, Job Search Sanity. It lets you take a methodical approach to looking for a job search, helping you make progress and feel in control.
-
Why Clojure's a Great Next Language for Rubyists 11 November 2015Rubyists enjoy Ruby because it's simple, powerful, and a joy to use. Clojure has all of those qualities, plus it employs a completely different paradigm that's crazy fun to learn. If you're looking to learn a new language, Clojure's a great choice.
-
Looking for Beta Testers 06 November 2015I've been working on a site to help people who are looking for a job, and I'd love some beta testers to work out the kinks and test the idea. Please sign up if you're interested!
-
Why I wrote Clojure for the Brave and True 22 October 2015Some reflections on why I wrote the recently-released Clojure for the Brave and True
-
Brave and New 21 October 2015The Clojure for the Brave and True web site has been updated to match the printed book. The book got a massive overhaul, and it's even better!
-
Review of Clojure Applied 18 October 2015Clojure Applied is a good choice for those looking to become intermediate Clojurists. It really shines in its coverage of testing and of decomposing your system into components. Besides that, it's filled with little gems from Java and the Clojure standard library.
-
Clojure for the Brave and True Is Off to the Printers! 18 August 2015Today, my fantastic production editor at No Starch reached out and pressed the basketball-sized "RELEASE IT!" button at No Starch headquarters, encasing Clojure for the Brave and True cucumber-infused amber and sending it on its way to the bookeries of Melrose Park, Illinois.
-
Brave and True Early Access 24 March 2015Guess what! You can now start reading the fully-revised Clojure for the Brave aand True through No Starch Press's early access program!
-
Boot, the Fancy New Clojure Build Framework 15 February 2015Build tools are known to inspire the entire gamut of emotions from bored impatience to Homeric rage (I'm looking at you, Grunt). Personally, I've never given them much thought; they've always seemed like tedious overhead, an unfortunate necessity for getting real work done. Boot is different.
-
The core.async Chapter is Up 13 January 2015You can now read 'Mastering Concurrent Processes with core.async' at Clojure for the Brave and True
-
Vern, a Library For Database Fixtures 04 December 2014I've started writing a little library for writing and loading database fixtures and I'd love any feedback :)
-
Clojure Conj 2014 - Thank Yous, Noir Recommendations, Personal Highlights 23 November 2014This year's Clojure Conj was a complete blast! I got to meet and reconnect with great, friendly, brilliant people, and had enormous fun the whole time.
-
tmux in 5 Minutes 07 November 2014If you work on projects that require you to open multiple terminal tabs, then tmux will help you be more productive! This brief guide will show you an easy way to get started.
-
Clojurers to Follow 27 October 2014Here's a list of Clojurers you should follow on Twitter
-
New Clojure for the Brave and True Chapter: Interacting with Java 10 October 2014There's a new chapter up on interacting with Java!
-
New Clojure for the Brave and True Chapter: Concurrency, Parallelism, and State. And Zombies. 24 March 2014There's a new chapter up on concurrency, parallelism, and state. And zombies.
-
Clojure for the Brave and True to be Published, Remains Free Online 02 November 2013Clojure for the Brave and True is going to be published! It will remain free online.
-
Stepping Off the Happiness Treadmill 11 September 2013I did not expect to have a life-altering insight while tidying my kitchen some night during the winter of 2011. Yet there I was, sponge in hand and mind on idle, when out of nowhere
-
Building a Forum with Clojure, Datomic, Angular, and Ansible 27 July 2013After many long months I've finished re-writing Grateful Place. The site now uses Clojure as an API server, with Datomic for the database, Angular for the front end, and Vagrant and Ansible for provisioning and deployment. We'll dive into the code base, covering the most important parts of each component and how everything works together.
-
A Taste of the λ Calculus 20 July 2013I've been having a brain-bending good time reading An Introduction to Functional Programming Through Lambda Calculus. Using examples from that book, this article will walk you through the basics of λ calculus. We'll then look at the surprising, counterintuitive way that the λ calculus lets us represent conditional expressions and boolean operations — all with functions as the only values. It was a very different way of thinking for me, and exciting to learn. I hope it's exciting for you, too!
-
How Clojure Babies are Made: What Leiningen Is 07 April 2013It's time to take a step back and get a high-level understanding of what Leiningen is. It's time to stare deeply into Leiningen's eyes and say "I see you," like Jake Sully in that Avatar documentary.
-
How Clojure Babies are Made: Leiningen's Trampoline 23 March 2013An explanation of what lein trampoline does and how it does it.
-
How Clojure Babies Are Made: Understanding lein run 18 March 2013Leiningen reminds me a lot of Major Alex Louis Armstrong from Fullmetal Alchemist:
- They are both manly
- They are both artistic
- Sometimes you don't know what the f* they're saying (but it's amazing anyway)
- Mustaches
- Sparkles
-
How Clojure Babies Are Made: Compiling and Running a Java Program 12 March 2013If you're at all like me, the moment you got your first Clojure program running you belted out, "SOOO MUUUUUUUCH POOOOOOOWEEEEEEEER!" and thrust one or both fists into the air. Then, fifteen minutes later, you found yourself muttering things like "What's a maven?" and "Classpath what now?" and "What is Leiningen actually doing, anyway? Sure, those are the most handsome mustaches I ever laid eyes on, but can I really trust them?"
-
Notes From Tapestry 2013 28 February 2013Notes and links from Tapestry 2013
-
Datomic for Five Year Olds 23 February 2013Datomic is a unique new database. This article explains it by relating it to existing kinds of databases.
-
The Unofficial Guide to Rich Hickey's Brain 06 December 2012Part of the excitement of working with Clojure is being exposed to Rich Hickey's thoughts on programming. Rich Hickey has a clear, consistent way of viewing fundamental programming concepts that I think any programmer would benefit from. Here is the beginning of my attempt to catalog Mr. Hickey's unique viewpoint.
-
My Failed(?) Social Web Experiment Still Haunts Me 01 December 2012What will people post if they can't include links and can't use a nickname?
-
A Detailed Look at a Small DCI Refactoring in Ruby 30 November 2012In this post I go over a small refactoring to clean up some code in Whoops by implementing the DCI pattern. I'll cover the actual code changes and include my usual hand-wringing about what could be done better.
-
Look, Ma! No batteries! A Clojure Web App Without Noir 10 November 2012Having put together a website using Noir, I wanted to to try and get closer to the metal. Here are some of my findings, including: templating heaven with Enlive and Middleman; using macros to enforce full stack consistency; roll-your-own-validations; more!
-
Loving Without Fear 07 November 2012Reflections on how embracing love has changed my life.
-
Daily Gratitude 16 October 2012I've been doing a daily gratitude practice for half a year now and have found it very useful. Here are some suggestions for your own practice.
-
Love is Power 21 September 2012Aikido is love. You make this great great love of the universe your heart and then you must make your own mission the protection and love of all things. -- O'Sensei
-
Releasing Foreman 09 September 2012My first ever Mac app is out. Get it while it's hot!
-
On Learning Skills (A Response to Move Your Feet) 27 August 2012Matt Swanson has shared the secret to improving your running: move your feet! I elaborate on that advice and give a more complete way of figuring out your learning roadblocks and removing them.
-
Three Dev Tools You Probably Already Know 26 August 2012You probably already know about the following tools, but I found it useful to be reminded of them.
-
Dissecting The Dumbest Clojure/Noir App In Existence 25 August 2012Recently, I released OMG! SMACKDOWN!!!, which is the dumbest Clojure/Noir app created to date. This post dissects it in excruciating detail.
-
Thoughts on Racism 01 August 2012Rambling thoughts on racism from a mixed-race guy who grew up in the South.
-
Lessons Learned From My First Tech Lead Assignment 18 July 2012What I've learned so far working with a distributed team in an enterprise environment.
-
Refactoring to Datamappers Clojure 06 July 2012In this post I give a detailed description of a recent refactoring for my site OMG! SMACKDOWN!!! . I make no attempt to enliven the article with "cats" or "memes" or "humor" - it's straight up code and commentary.
-
Deeper Into the Land of Lisp: First Contact with Noir 25 June 2012Clojure and noir are great fun. This post describes some of the code I wrote and gives some tips and tricks. There's other stuff too but I'm not going to try and summarize it here.
-
Global Noir Routes 25 June 2012Noir has a helper function, url-for, which you can use to generate URL's when given a named route. The problem arises when you have two different views which need to have links to each other.
-
Design: The Art of Reducing Frustration 31 May 2012What causes frustration? How can we eliminate those causes?
-
Encouraging Programmers to Learn Visual Design 23 May 2012A talk I gave: Why you might want to learn more about visual design and how it's pretty similar to what you already know as programmers.
-
Open Source, Open Heart 23 March 2012I'm open sourcing Open Hercules an application I've put a lot of time into. This article explains my motivations, both practical and personal.
-
Chunky Bacon in the Land of Lisp: a Rubyist Becomes Intimately Acquainted with Parentheses 03 March 2012Almost seven years since my first exposure to Ruby, I've found another language to be excited about.
-
Abstract Mathematics and Programming 23 February 2012Learning about abstract math is rewarding in itself, but it could also be helpful to beginning programmers.
-
Machine-Aided Introspection 22 February 2012In the year 2000, you will know all there is to know about yourself thanks to technology.
-
An Exhaustive Explanation of Minimax, a Staple AI Algorithm 10 January 2012The minimax algorithm is used to determine which moves a computer player makes in games like tic-tac-toe, checkers, othello, and chess. You can think of the algorithm as similar to the human thought process of saying, "OK, if I make this move, then my opponent can only make two moves, and each of those would let me win. So this is the right move to make."
-
A Philosophy of Programming, Rough Sketch 05 January 2012An attempt to describe an approach to programming within an integrated framework.
-
Why I Don't Want to Start a Startup 03 August 2011I don't want to start a startup because of the experiences I've had with working for them. Also, the idea of financial freedom is not as appealing to me as it once was. Finally, there are already big challenges in my life.
-
Thank You 02 May 2011Thank you, everyone who has viewed Clean Up Your Mess. Thanks as well to everyone who has passed it on.
-
Higml: Hierarchical, Cascading, Dynamic Configuration 21 January 2011If your configuration is convoluted as all hell, Higml might be for you. Also, this is my first attempt at writing first-class documentation.
-
Writing Better Documentation 19 January 2011The learning curve for code libraries is often unnecessarily steep. I frequently feel that if the author had written better documentation, I'd be able to use his work much more quickly, or at least figure out that it's wrong for me and move on. I'm trying to write better documentation myself.
-
Blog Reboot 14 January 2011It's been nearly a year since I've added anything to this site. There are a few reasons for that, though for now I'll only mention that I didn't like that the site existed in part to sell an iphone app and possibly future apps. Well, it turns out that I don't really care about overtly selling stuff. What I really want is a place to write about the pursuits I care about most.
-
Models for Dealing with Fear 15 February 2010The world abounds with wacky models that help actual people actually overcome actual fear. Some people believe their obstacles are put there by God as tests for them to pass. Others believe that mortal life is a game played by immortal energy beings, just for the fun of it. And some folks believe that there is nothing more to life than what we see; when we die, that's the end, so we better make the most of it. Wacky!
-
Look Into My Eyes 10 January 2010My first attempt to give myself super powers merely gave me sore palms. Riding in the back of my mother's beater as a five-year-old, I focused sunlight on the center of each hand using a magnifying glass likely found in a cereal box. After I was "charged up" I would point at trees, cars, fire hydrants, and other hapless objects and think to myself, "In five years, that thing's going to burst into flames."
-
I'm Going to Take All the Help I Can Get 06 January 2010A few months ago, I was really psyched about some project (don't recall which), and said to myself, "I'm going to finish this thing, and nothing's going to get in my way." Immediately it occurred to me that a better attitude would be, "I'm going to finish this thing -- and I'll take all the help I can get."
-
Control Time Submitted to App Store 01 January 2010Today I finally wrapped up Control Time and submitted it to the app store :-). Hopefully they'll publish it soon.
-
How to Get and Stay Motivated 12 December 2009A lot of people view their motivation as something out of their control. It comes and goes, catlike in its fickleness. By breaking down motivation to its components, however, you'll be able to troubleshoot your lack of motivation and figure out ways to increase it.
-
The Why of this Site 01 December 2009I'm a young software developer and caregiver. This web site is about my experimentations in creating and following a system for constant personal growth. This article gives some background on the circumstances that motivated me to start those experimentations and this site.
-
Follow Your Followers Using Ruby 20 May 2009A quick way to automatically follow people who follow you on twitter.
-
Aikidoka Prevents Namespace Collisions 10 May 2009A way to avoid namespace collisions.
-
Usability Embodied 24 August 2008A few years ago I ordered DSL service. The DSL modem came with an ethernet cable, and one end was labeled "this end goes in your computer", and the other was labeled "this end goes in the modem." Obviously, it doesn't matter which end goes where, but the labels undoubtedly eliminated any possible confusion.
-
Robots! 14 July 2008I've been learning more about electronics, in part to get a ground-up understanding of computers. In the process I've become interested in learning to build robots.
-
RubyProfHelper: Reducing ruby-prof Boilerplate 02 June 2008This is meant to save me from having to write the same boilerplate profiling code over and over.
-
Chunky Iterator: So You Don't have to Load All your AR Objects at Once 12 May 2008The following code lets you iterate over large collections of Active Record objects without having to load them all at once, thus reducing memory usage. It's allowed me to run cron jobs which iterate over thousands of records without getting the cron'd process killed for using too much of a system's resources.
-
Rails Prototypal Attributes 05 April 2008Give your models javascript-esque prototypal methods. When accessing an attribute on the prototypal object, the attribute's value is returned if not nil. Otherwise, the "linked" object's attribute value is returned.
Projects
-
Clojure for the Brave and True A goofy book for learning Clojure. No functional programming or Java experience required!
-
Grateful Place When we appreciate the good in our lives, the good grows and we have more of it.
-
Clean Up Your Mess: a Guide to Visual Design for Everyone This popular guide will help you communicate with conscious skill. It will show you how to create designs that are easy to understand and attractive.