Blog Archive 2024 Scheduling cron tasks in mixed time zones Jun 16 2024 Reading in 2023 Feb 18 2024 2023 Reading in 2022 Jan 14 2023 2022 Bookmarklets on mobile are useful Nov 13 2022 Reading in 2021 Jan 02 2022 2021 Tests are living documentation Sep 11 2021 Improve your tests by picking better constants Aug 07 2021 Reading in 2020 Jan 24 2021 2020 Speeding up Magit with the native-comp branch of Emacs Dec 30 2020 Speeding up magit Nov 14 2020 Creating a custom Kindle dictionary Nov 11 2020 Go create silly, small programs Oct 03 2020 Utilities I like: selecta Aug 31 2020 Introducing Photo Fit Jul 03 2020 Using Bazel to help fix flaky tests Jun 28 2020 How to be automatically notified when long running processes finish May 04 2020 How to hang a hangboard using a doorway pull-up bar Apr 26 2020 Using Bash-Preexec for monitoring the runtime of your last command Apr 21 2020 A retrospective format for remote or co-located teams Mar 16 2020 More working from home tips Mar 10 2020 Auto-syncing a git repository Feb 25 2020 Reading in 2019 Jan 11 2020 2019 Building an Atreus keyboard Oct 12 2019 Building a Onewheel stand Aug 23 2019 Switching my Ergodox to QMK firmware Aug 15 2019 How I use social media Apr 30 2019 Breaking change and more in lein-test-refresh 0.24.1 Mar 20 2019 Testing asynchronous JavaScript with Jasmine Feb 13 2019 How to use Leiningen test selectors to filter by test name Jan 28 2019 How to display a message to all tmux clients Jan 27 2019 Reading in 2018 Jan 21 2019 Notifications with tmux and lein-test-refresh Jan 06 2019 2018 A more helpful makefile Dec 27 2018 Built-in test narrowing with lein-test-refresh Jul 16 2018 Tracking changes to a Reagent atom Jun 15 2018 Preventing duplicate long-running invocations in Clojure Jun 14 2018 Reading in 2017 Mar 03 2018 Creating serverless applications with ClojureScript and Firebase Feb 20 2018 Using Clojure macros for nicer error handling Feb 18 2018 2017 Parsing multiple date formats with clj-time Nov 26 2017 A guide to distributed work Oct 31 2017 Measuring aggregate performance in Clojure Sep 29 2017 My current Leiningen profiles.clj Aug 27 2017 Using my phone's voice control for a month Jul 28 2017 Speeding up this site by optionally loading Disqus comments Jun 30 2017 Adding a JSON Feed to an Octopress/Jekyll generated site May 30 2017 Using comm to verify file content matches May 29 2017 Send a push notification when your external IP address changes May 15 2017 What are the most used Clojure libraries? Apr 17 2017 Which Clojure testing library is most used? Mar 31 2017 Using lein-test-refresh with expectations Feb 27 2017 Reading in 2016 Jan 04 2017 2016 Making code fast: Measure what you intend to measure Dec 31 2016 Unify your project interfaces Nov 30 2016 HTML markup for better sharing on social media Oct 28 2016 Better command history in your shell Sep 28 2016 Better code reloading in a Clojure web server Aug 28 2016 AWS Elastic Beanstalk: Send a SQS message to a specific route in your worker environment Jul 31 2016 7 tips for a successful remote meeting Jun 28 2016 My recommended Clojure testing setup Jun 20 2016 Tips for working from home Jun 14 2016 Use Google to get a site's favicon May 14 2016 Speeding up my blog Apr 30 2016 The usefulness of Clojure's cond-> Apr 10 2016 Book review: Serverless Single Page Apps Apr 08 2016 Reading in 2015 Mar 13 2016 2015 ClojureScript: Treat warnings as errors Dec 19 2015 Even quicker feedback from your Clojure tests Dec 18 2015 SQL: Aggregate a set of values together Nov 15 2015 GitHub Code Reviews Jul 03 2015 My favorite clj-refactor features Jun 30 2015 Emacs: automatically require common namespaces Jun 18 2015 Use git pre-commit hooks to stop unwanted commits May 31 2015 Put the last command's run time in your Bash prompt May 03 2015 Quieter clojure.test output Apr 25 2015 Making tmate and tmux play nice with OS X terminal-notifier Apr 12 2015 My home work space Mar 31 2015 Advanced Leiningen checkouts: configuring what ends up on your classpath Mar 24 2015 Remote Pairing Jan 24 2015 Overview of my Leiningen profiles.clj Jan 11 2015 Reading in 2014 Jan 08 2015 2014 Restricting access to certain routes Dec 21 2014 An Effective Code Review Process Dec 09 2014 ErgoDox: Turn on an LED When Not on the Main Layer Sep 07 2014 Book Review: Haskell Data Analysis Cookbook Sep 01 2014 Building the ErgoDox Keyboard Jul 27 2014 Using Emacs to Explore an HTTP API Jul 04 2014 Comparing Clojure Testing Libraries: Output Jun 22 2014 Quicker Feedback From Failing Tests May 31 2014 Book Review: Clojure for Machine Learning May 24 2014 Emacs: Generating project shortcuts Apr 27 2014 Managing windows in OS X using Phoenix Mar 30 2014 Flexible notification of Clojure tests failing Feb 02 2014 Releasing lein-test-refresh 0.3.0 Jan 12 2014 Using Incanter to review my 2013 reading Jan 01 2014 2013 Book Review: Clojure High Performance Programming Dec 14 2013 Running clojure.test tests on file changes Nov 11 2013 Emacs: Capture shell command output in temporary buffer Aug 10 2013 Releasing lein-autoexpect 1.0 Aug 05 2013 Releasing the Functional JavaScript Companion Jul 09 2013 Book Review: Clojure Data Analysis Cookbook May 06 2013 Manage your workspace with grids under Linux, OS X, and Windows Apr 15 2013 Change volume from the command line Mar 31 2013 Maintaining Directory Layout When Selectively Copying Files Feb 03 2013 2012 Working on multiple Clojure projects at once Mar 28 2012 2011 Reflections on Stanford's online class experiment Dec 29 2011 Continuous testing with Clojure and expectations Dec 16 2011 Utilities I like: autojump Jul 25 2011 A simple way of testing disconnect logic Jun 28 2011 Command line arguments in Clojure Apr 12 2011 Creating a SQL table with a composite primary key in Clojure Jan 19 2011 Generating test cases in Clojure Jan 18 2011 2010 Quickly starting a powerful Clojure REPL Dec 07 2010 Trampolining through mutual recursion with Clojure Dec 06 2010 Inserting values into a nested map in Clojure Jun 06 2010 Plotting time series data with Incanter Feb 21 2010