In the usual end-of-year tradition I want to share the top posts of 2018 - including both the posts that were written in 2018 as well as the posts that may have been written in prior years but viewed in 2018. Given the fact that I’ve been extremely behind in writing this year and am only catching up now it’s clear that 2018 was a weaker year than previous ones. Sorting all pages viewed in 2018 by descending pageviews the first post written in 2018 is in the 57th spot - every other post was written in prior years. That bodes well to the concept of evergreen content but it’s still disappointing that I didn’t have any noteworthy posts in 2018. The lesson for 2019 is to actually write on time and spend the time going into depth versus the more superficial and shorter posts I wrote in 2018. On a positive note it’s good to see that my blog does get a healthy flow of organic traffic despite the weak 2018 showing.

Page Pageviews Unique Pageviews Avg. Time on Page Entrances Bounce Rate % Exit
/2018/02/20/analyzing-aws-elb-logs/ 71 62 114.38 56 94.64% 81.69%
/2018/08/15/google-calendar-constantly-shipping/ 67 66 81.25 58 98.28% 88.06%
/2018/03/03/hunting-for-my-old-geocities-site/ 63 56 181.67 51 88.24% 80.95%
/2018/04/28/rise-of-microbrands/ 47 45 105.10 35 91.43% 78.72%
/2018/07/21/class-action-settlement-emails/ 42 42 27.67 39 100.00% 92.86%
/2018/11/24/code-without-online-help/ 41 41 141.00 39 97.44% 95.12%
/2018/11/25/aggressive-code-deprecation/ 39 39 432.25 38 92.11% 89.74%
/2018/11/19/computer-history-books/ 37 37 0.00 36 100.00% 100.00%
/2018/08/21/incognito-mode-chrome-vs-safari/ 36 34 25.10 23 86.96% 72.22%
/2018/01/16/phonetic-distance/ 34 28 319.22 24 79.17% 73.53%
/2018/06/05/alb-and-elb-access-log-schemas-for-redshift/ 29 26 14.44 19 89.47% 68.97%
/2018/07/22/bulk-discounts-hurt-competition/ 29 29 36.83 23 91.30% 79.31%
/2018/07/07/mysql-foreign-keys/ 25 10 21.10 2 100.00% 16.00%
/2018/02/03/my-follower-factory/ 18 16 81.67 3 66.67% 16.67%
/2018/05/12/curse-of-the-early-adopter/ 16 16 56.00 10 100.00% 87.50%
/2018/01/03/learning-docker/ 15 15 55.29 5 100.00% 53.33%
/2018/04/25/connect-four-bot-competition/ 15 13 13.50 9 100.00% 73.33%
/2018/01/28/moviepass-a-fascinating-business-model/ 14 13 93.14 6 100.00% 50.00%
/2018/05/14/memory-as-a-stack/ 14 14 18.50 1 100.00% 28.57%
/2018/03/11/crowdsourced-data/ 13 13 118.00 9 100.00% 92.31%
/2018/02/09/making-the-most-of-the-subway-commute/ 12 12 29.50 4 100.00% 66.67%
/2018/06/01/type-1-and-type-2-tech-specs/ 12 11 89.50 5 80.00% 50.00%
/2018/06/28/using-personal-aws-credentials-in-production/ 11 11 41.50 2 100.00% 45.45%
/2018/03/18/facebooks-breach/ 10 10 33.25 4 100.00% 60.00%
/2018/05/26/power-of-shell-commands/ 10 10 60.00 3 100.00% 40.00%
/2018/07/29/privacy-vs-user-experience/ 10 8 42.00 1 100.00% 40.00%
/2018/08/18/yahoo-fantasy-football-stats-2018-2019-edition/ 10 9 199.20 3 66.67% 50.00%
/2018/07/10/in-a-software-world-humanity-comes-first/ 9 9 20.00 4 100.00% 66.67%
/2018/11/21/superhuman-review/ 9 8 38.50 6 100.00% 77.78%
/2018/04/12/load-testing/ 8 8 53.75 2 100.00% 50.00%
/2018/04/17/secure-at-the-network-level/ 8 8 28.60 3 100.00% 37.50%
/2018/10/13/equity-in-the-gig-economy/ 8 7 45.60 3 100.00% 37.50%
/2018/10/29/gmails-autocomplete/ 8 7 25.00 3 100.00% 62.50%
/2018/01/13/calendar-query-language/ 7 7 16.33 4 100.00% 57.14%
/2018/03/25/protecting-data-ouside-of-a-terms-of-service/ 7 7 28.00 6 100.00% 85.71%
/2018/04/03/open-sourcing-self-driving-car-data/ 7 7 19.25 2 100.00% 42.86%
/2018/01/23/design-anti-pattern-tab-switching-autosave/ 6 6 2.00 3 100.00% 83.33%
/2018/02/25/retrieving-kindle-highlights/ 6 4 93.50 2 100.00% 33.33%
/2018/11/23/electronic-goods-are-cheaper-than-ever/ 6 6 0.00 5 100.00% 100.00%
/2018/11/26/an-ad-on-the-google-search-homepage/ 6 3 19.33 1 100.00% 50.00%
/2018/11/20/my-dataengconf-2018-talk/ 5 5 12.00 1 100.00% 80.00%
/2018/02/10/optimize-for-keyboard-shortcuts/ 4 4 5.00 0 0.00% 50.00%
/2018/10/25/just-ship-it/ 4 4 24.00 0 0.00% 25.00%
/2018/11/16/python-3-and-aiohttp/ 4 3 3.00 1 100.00% 75.00%
/2018/12/11/the-price-of-aws-vs-github/ 4 4 21.00 2 100.00% 50.00%
/2018/11/12/social-security-administration-spoofing-scam/ 3 3 0.00 2 100.00% 100.00%
/2018/11/13/a-ux-gem-in-google-slides/ 3 3 7.00 2 100.00% 66.67%
/2018/11/22/historys-largest-empires/ 3 3 50.00 1 100.00% 66.67%
/2018/11/25/exploring-my-backlinks/ 3 3 0.00 3 100.00% 100.00%
/2018/11/30/tragedy-of-the-commons-apartment-edition/ 3 3 50.00 2 100.00% 66.67%
/2018/12/03/overcoming-writing-rustiness/ 3 2 36.50 0 0.00% 33.33%
/2018/12/10/emr-vs-databricks-costs/ 3 3 36.00 2 100.00% 66.67%
/2018/12/13/counting-the-number-of-lines-of-code-in-a-github-account/ 3 2 37.00 1 100.00% 66.67%
/2018/11/14/what-messaging-war/ 2 2 2.00 0 0.00% 50.00%
/2018/11/18/falling-behind-my-2018-blogging-goal/ 2 2 48.00 2 50.00% 50.00%
/2018/11/24/adding-optionality-to-products/ 2 2 0.00 2 100.00% 100.00%
/2018/11/28/shell-history-2018-edition/ 2 2 0.00 1 100.00% 100.00%
/2018/12/01/fat-specs-light-stories/ 2 2 12.00 1 100.00% 50.00%
/2018/12/06/conference-call-echoes/ 2 2 21.00 0 0.00% 0.00%
/2018/12/07/speech-recognition-and-a-bunch-of-apis/ 2 2 0.00 2 100.00% 100.00%
/2018/12/14/state-of-tech-in-2018/ 2 2 0.00 0 0.00% 100.00%
/2018/12/23/quoras-revenue-model/ 2 2 0.00 2 100.00% 100.00%
/2018/11/15/limiting-tracking-in-email/ 1 1 17.00 0 0.00% 0.00%
/2018/11/17/random-quotes/ 1 1 0.00 1 100.00% 100.00%
/2018/11/27/privacy-in-a-face-detection-world/ 1 1 0.00 1 100.00% 100.00%
/2018/12/04/how-many-wifi-devices-do-we-have/ 1 1 37.00 0 0.00% 0.00%
/2018/12/05/the-golden-age-of-browsers/ 1 1 0.00 0 0.00% 100.00%
/2018/12/08/automatic-login/ 1 1 6.00 0 0.00% 0.00%
/2018/12/09/avoiding-content-overload/ 1 1 0.00 1 100.00% 100.00%
/2018/12/09/the-modern-economy-relies-on-information/ 1 1 23.00 0 0.00% 0.00%
/2018/12/12/scenepeek/ 1 1 7.00 0 0.00% 0.00%
/2018/12/15/new-code-is-not-a-linear-increase-in-complexity/ 1 1 7.00 0 0.00% 0.00%
/2018/12/16/stuck-on-a-problem-take-a-break/ 1 1 0.00 1 100.00% 100.00%
/2018/12/17/the-new-company-town/ 1 1 0.00 1 100.00% 100.00%
/2018/12/18/i-finally-tried-an-electric-scooter/ 1 1 0.00 1 100.00% 100.00%
/2018/12/19/facebooks-latest-hit/ 1 1 0.00 1 100.00% 100.00%
/2018/12/19/new-iteration-of-devops/ 1 1 57.00 0 0.00% 0.00%
/2018/12/21/global-roaming/ 1 1 0.00 0 0.00% 100.00%
/2018/12/22/hackerrank/ 1 1 0.00 1 100.00% 100.00%
/2018/12/24/open-public-electronic-and-necessary-government-data-act/ 1 1 0.00 1 100.00% 100.00%
Page Pageviews Unique Pageviews Avg. Time on Page Entrances Bounce Rate % Exit
/2013/08/26/extract-info-from-a-web-page-using-javascript/ 7492 7104 424.76 7095 94.56% 93.95%
/2013/06/21/where-are-you-on-the-sales-matrix/ 3005 2727 279.80 2727 91.24% 90.68%
/2015/05/26/dealing-with-a-stripped-screw/ 1465 1413 341.42 1412 96.67% 96.38%
/2015/09/24/mapping-the-jersey-city-parking-zones-ii/ 1325 1036 93.95 1032 75.48% 77.74%
/2017/04/02/slacks-channel-exit-anti-pattern/ 972 948 229.50 948 97.36% 97.12%
/2015/04/23/adding-columns-in-postgresql-and-redshift/ 924 886 288.61 886 95.37% 95.24%
/2014/02/10/using-virtualenv-in-production/ 816 789 324.12 786 96.18% 95.96%
/2016/01/10/cleanest-way-to-read-a-csv-file-with-python/ 778 732 484.69 731 94.39% 93.70%
/2017/08/08/google-docs-vs-confluence/ 584 572 346.06 571 97.20% 96.92%
/2016/01/03/paris-versus-new-york-city/ 511 494 297.60 494 96.36% 96.09%
/2014/02/05/visualizing-gps-data-in-r/ 428 379 166.70 375 88.00% 87.38%
/2014/10/01/normalizing-a-csv-file-using-mysql/ 381 358 291.88 356 94.10% 93.18%
/2016/08/24/writing-scrapers-as-apis/ 323 259 62.96 256 52.73% 56.04%
/2016/08/21/downloading-your-turo-ride-history/ 318 278 181.63 179 88.83% 77.99%
/2017/11/07/spark-s-read-jdbc/ 276 261 320.75 257 93.00% 91.30%
/2013/01/09/web-scraping-like-a-pro/ 271 260 242.14 257 95.72% 94.83%
/2017/05/04/security-across-multiple-aws-regions/ 271 266 137.60 266 98.12% 98.15%
/2017/10/09/downloading-your-aim-buddy-list/ 221 213 420.22 213 96.24% 95.93%
/2016/02/15/design-your-database-for-flexibility/ 219 214 382.22 212 96.23% 95.89%
/2014/09/20/dealing-with-an-rds-replication-issue/ 212 202 180.27 202 95.05% 94.81%
/2016/03/10/the-mysql-enum-type/ 195 191 256.71 188 97.87% 96.41%
/2013/06/07/fun-with-prolog-priceonomics-puzzle/ 163 150 403.20 150 91.33% 90.80%
/2014/05/03/gap-fills-and-cross-joins-in-excel/ 161 155 468.57 155 96.13% 95.65%
/2016/10/10/setting-up-secor-for-kafka-010/ 153 147 231.56 146 93.84% 94.12%
/2016/05/11/identifying-unused-database-tables/ 150 143 305.25 142 95.07% 94.67%
/2016/07/17/coding-puzzle-word-transformation-through-valid-words/ 146 134 195.92 134 91.04% 91.10%
/2013/08/24/splitting-an-aws-account/ 143 140 201.80 135 98.52% 96.50%
/2013/05/17/adding-attachments-to-django-postman/ 140 128 299.38 126 92.86% 90.71%
/2017/06/30/send-private-messages-to-all-members-of-a-slack-channel/ 134 111 186.34 109 78.90% 78.36%
/2013/07/17/scraping-yahoo-fantasy-football-stats-with-scrapy/ 133 131 132.00 130 96.92% 96.24%
/2017/04/16/amp-and-subscription-paywalls/ 127 120 146.60 117 94.02% 92.13%
/2011/01/08/fun-developer-interview-question/ 124 114 412.42 114 89.47% 90.32%
/2016/12/31/amazons-peer-to-peer-marketplace/ 117 111 157.67 110 93.64% 92.31%
/2017/07/08/yahoo-fantasy-football-stats-2017-2018-edition/ 114 101 161.13 100 89.00% 86.84%
/2013/04/12/why-dont-cellphones-have-a-dialtone/ 113 108 343.20 108 95.37% 95.58%
/2017/06/20/getting-amp-into-rss/ 110 102 227.43 101 92.08% 87.27%
/2017/12/01/measuring-sprint-efficiency/ 110 108 301.83 106 96.23% 94.55%
/2014/07/15/set-up-https-on-ec2-running-nginx-without-elb/ 107 104 87.33 104 97.12% 97.20%
/2014/01/04/visualizing-runkeeper-data-in-r/ 104 90 357.76 89 84.27% 83.65%
/2016/09/13/supporting-disqus-in-amp/ 103 75 77.10 73 72.60% 70.87%
/2013/12/23/getting-a-sim-card-in-india/ 98 96 253.50 95 96.84% 95.92%
/2015/04/26/aws-service-limits/ 92 87 79.22 83 96.39% 90.22%
/2014/12/31/redirect-recursion/ 91 90 143.00 89 98.88% 98.90%
/2016/12/24/comparing-public-transit-systems-new-york-vs-london/ 91 88 506.33 88 97.73% 96.70%
/2014/05/02/migrating-from-linode-to-digital-ocean/ 85 80 294.17 80 92.50% 92.94%
/2017/02/21/advice-for-coding-bootcamp-graduates/ 84 83 808.50 82 97.56% 97.62%
/2016/08/29/food-identification-with-googles-cloud-vision/ 83 74 109.70 74 89.19% 87.95%
/2016/11/13/recursive-redirects-with-aws-lambda/ 82 75 237.00 74 93.24% 89.02%
/2016/12/10/word-clouds-and-text-similarity/ 78 73 422.33 73 91.78% 92.31%
/2015/11/22/why-are-netflix-and-spotify-so-different/ 76 74 516.00 74 97.30% 97.37%
/2017/04/23/the-golden-age-of-big-data-tools/ 74 66 251.56 66 89.39% 87.84%
/2018/02/20/analyzing-aws-elb-logs/ 71 62 114.38 56 94.64% 81.69%
/2014/09/16/top-down-vs-bottom-up-coding/ 68 67 29.50 67 97.01% 97.06%
/2016/04/03/ben-thompsons-laddering-up-and-building-bigger-moats/ 68 60 72.20 59 86.44% 85.29%
/2018/08/15/google-calendar-constantly-shipping/ 67 66 81.25 58 98.28% 88.06%
/2013/08/28/simplicity-vs-power-in-product-design/ 66 64 53.89 12 83.33% 46.97%
/2016/05/21/analyzing-imdb-data-step-1-cleaning-and-qa/ 65 64 76.54 54 90.74% 80.00%
/2017/01/26/shame-on-united-and-bank-of-america/ 64 63 37.00 63 98.41% 98.44%
/2018/03/03/hunting-for-my-old-geocities-site/ 63 56 181.67 51 88.24% 80.95%
/2015/02/01/mysql-vs-postgresql-sort-order/ 61 56 394.60 55 92.73% 91.80%
/2014/05/16/examining-ssh-login-requests/ 59 54 657.20 54 90.74% 91.53%
/2016/05/22/analyzing-imdb-data-actors-vs-actresses/ 58 51 46.63 49 67.35% 67.24%
/2016/11/27/visualizing-your-aws-costs/ 58 53 58.50 52 92.31% 89.66%
/2017/03/19/refactor-driven-development/ 56 50 104.33 50 90.00% 89.29%
/2017/04/11/sql-is-the-perfect-interface/ 50 45 30.00 41 82.93% 78.00%
/2016/09/05/visualizing-fantasy-football-stats/ 49 46 126.33 44 93.18% 93.88%
/2015/06/09/a-mysql-group-by-nuance/ 48 47 17.00 44 95.45% 95.83%
/2016/06/22/messaging-app-fragmentation/ 48 40 81.33 40 87.50% 81.25%
/2017/05/10/using-options-to-play-snapchats-quarterly-results/ 47 46 146.00 45 97.78% 97.87%
/2018/04/28/rise-of-microbrands/ 47 45 105.10 35 91.43% 78.72%
/2014/03/18/goodbye-gmail/ 46 44 647.20 44 88.64% 89.13%
/2016/12/13/automatically-taking-screenshots-of-html-elements/ 46 45 157.67 45 93.33% 93.48%
/2017/11/23/improving-jekyll-generation-speed-for-amp-pages/ 46 42 118.57 42 83.33% 84.78%
/2016/03/05/aws-ec2-instance-arbitrage/ 44 41 137.00 41 92.68% 90.91%
/2016/06/18/aws-stripe-and-wework/ 44 43 56.00 42 97.62% 95.45%
/2017/04/08/quality-over-quantity-nextdoor-vs-craigslist/ 44 41 99.00 40 92.50% 88.64%
/2013/11/15/rds-and-r/ 42 40 901.50 40 95.00% 95.24%
/2014/04/04/postgresql-fibonacci/ 42 39 607.00 39 92.31% 92.86%
/2018/07/21/class-action-settlement-emails/ 42 42 27.67 39 100.00% 92.86%
/2018/11/24/code-without-online-help/ 41 41 141.00 39 97.44% 95.12%
/2015/04/06/redshift-meets-excel/ 40 40 7.00 39 100.00% 97.50%
/2015/04/19/dont-scrape-into-a-dropbox-folder/ 40 39 196.00 39 97.44% 97.50%
/2016/06/11/following-up-on-a-website-optimization-offer/ 40 32 174.22 32 78.13% 77.50%
/2018/11/25/aggressive-code-deprecation/ 39 39 432.25 38 92.11% 89.74%
/2013/08/02/a-brief-history-of-manufacturing/ 38 38 186.00 37 97.30% 97.37%
/2015/05/26/dealing-with-a-stripped-screw/?usqp=mq331AQECAEYAQ== 38 38 0.00 38 100.00% 100.00%
/2018/11/19/computer-history-books/ 37 37 0.00 36 100.00% 100.00%
/2013/06/21/where-are-you-on-the-sales-matrix/?usqp=mq331AQECAEYAQ== 36 31 364.80 31 83.87% 86.11%
/2018/08/21/incognito-mode-chrome-vs-safari/ 36 34 25.10 23 86.96% 72.22%
/2017/02/09/traffic-efficiency/ 35 34 56.50 34 94.12% 94.29%
/2017/10/20/schedule-automation-using-google-spreadsheets-and-slack/ 35 29 34.55 28 75.00% 68.57%
/2018/01/16/phonetic-distance/ 34 28 319.22 24 79.17% 73.53%
/2015/05/30/date-range-generation/ 31 28 35.40 26 92.31% 83.87%
/2016/04/05/the-best-code-is-no-code/ 30 29 715.00 29 96.55% 96.67%
/2014/08/30/managing-settings-files-in-django-projects/ 29 29 713.00 29 96.55% 96.55%
/2016/06/06/word-clouds-in-r/ 29 28 90.00 26 96.15% 89.66%
/2018/06/05/alb-and-elb-access-log-schemas-for-redshift/ 29 26 14.44 19 89.47% 68.97%
/2018/07/22/bulk-discounts-hurt-competition/ 29 29 36.83 23 91.30% 79.31%
/2013/11/23/im-joining-triplelift/ 28 26 16.50 25 68.00% 64.29%
/2017/09/09/apartment-rental-arbitrage/ 28 26 92.50 26 92.31% 92.86%

Read more!