diff --git a/circle.yml b/circle.yml
index c8de646c7bb5e9c085ffb5b447741f4eb3636d8b..c37428a7394c00ec18845d0dfd14567d3b612ea3 100644
--- a/circle.yml
+++ b/circle.yml
@@ -42,6 +42,7 @@ test:
     # to understand how multiple containers can be used to
     # run subsets of tests in parallel.
     - ./scripts/all-tests.sh:
+        timeout: 900  # if a command runs this many seconds without output, kill it
         parallel: true
 
   post:
diff --git a/scripts/circle-ci-tests.sh b/scripts/circle-ci-tests.sh
index db992912e6b35eaecdcab19b944052dfa55d8e4d..ad99eb827ce6b5ca30cdb044eb4f5fb250aa3fbb 100755
--- a/scripts/circle-ci-tests.sh
+++ b/scripts/circle-ci-tests.sh
@@ -55,9 +55,7 @@ else
             paver run_pep8 > pep8.log || { cat pep8.log; EXIT=1; }
 
             echo "Finding pylint violations and storing in report..."
-            # HACK: we need to print something to the console, otherwise circleci
-            # fails and aborts the job because nothing is displayed for > 10 minutes.
-            paver run_pylint -l $PYLINT_THRESHOLD | tee pylint.log || EXIT=1
+            paver run_pylint -l $PYLINT_THRESHOLD > pylint.log || { cat pylint.log; EXIT=1; }
 
             mkdir -p reports
             echo "Finding jshint violations and storing report..."