2019
December
- December 11, 2019 » Strive for linear complexity
- December 11, 2019 » Search within Google search
- December 10, 2019 » Solve categories, not individual problems
November
- November 29, 2019 » My TI-89
- November 28, 2019 » Thanksgiving
- November 24, 2019 » Improving product reviews
- November 23, 2019 » Optimizing long running SQL queries
- November 19, 2019 » SMS based password manager
- November 17, 2019 » Rebirth of digital piracy?
- November 8, 2019 » DYI password manager
- November 6, 2019 » Importing resources into terraform
- November 4, 2019 » Upgrade your libraries
- November 2, 2019 » QR codes in China
October
- October 29, 2019 » Computer history memos
- October 28, 2019 » Deplying Docker using systemd
- October 26, 2019 » GitHub's security automation
- October 20, 2019 » File size histogram via the command line
- October 13, 2019 » Bypassing the incognito browser check on nytimes.com
- October 12, 2019 » Online food delivery markups: Seamless vs UberEats vs DoorDash
- October 11, 2019 » Combining Excel and the command line
- October 7, 2019 » Visualizing my Twitter archive - 2019 edition
- October 6, 2019 » Make sure you're understood
- October 3, 2019 » Upgrading pip packages within a Dockerfile
- October 1, 2019 » Visualizing Kafka partition changes
September
- September 28, 2019 » SSO and SAAS pricing
- September 23, 2019 » Free speech and the First Amendment
- September 16, 2019 » Goldilocks and the three implementations
- September 15, 2019 » Google Sheets explore functionality
- September 14, 2019 » Solving Num: A combinatoric math game
- September 13, 2019 » In praise of tcpdump
- September 12, 2019 » Where's the new iPhone SE?
August
- August 27, 2019 » Getting public keys from GitHub
- August 25, 2019 » Explain the why in code reviews
- August 24, 2019 » Disney+
- August 22, 2019 » What do airlines and LinkedIn have in common?
- August 5, 2019 » Yahoo fantasy football stats: 2019-2020 edition
- August 4, 2019 » Diablo on the web
July
- July 29, 2019 » Sports biographies as management books
- July 28, 2019 » Open sourcing configurations
- July 27, 2019 » GitHub blocks access from Iran
- July 26, 2019 » PagerDuty's incident response guide
- July 21, 2019 » A more efficient Google Calendar
- July 19, 2019 » Why is your Confluence in Polish?
- July 17, 2019 » Substack vs Medium
- July 16, 2019 » Cloudflare outage postmortem
- July 15, 2019 » Environmental sustainability
- July 14, 2019 » Toward a global government
- July 14, 2019 » My Ubuntu experinece
- July 14, 2019 » DNS resolution gotchas
- July 13, 2019 » Keeping Ubuntu computers in sync
- July 10, 2019 » Personal dashboards
- July 9, 2019 » Ideal tech intern projects
- July 8, 2019 » Power of habit
- July 7, 2019 » Video of my Data Council NYC talk
- July 6, 2019 » Credit card merchant fees
- July 5, 2019 » Future of cloud is hybrid
- July 4, 2019 » Increasing the bar for reelection
- July 3, 2019 » Revamping my online security
- July 2, 2019 » Combine registration and sign in
- July 1, 2019 » Sign In with Apple
June
- June 15, 2019 » Tightly coupled data loss
May
- May 31, 2019 » Video games of my youth
- May 4, 2019 » Patents and Patent Law
April
- April 30, 2019 » Polaroid and Dr. Edwin Land
- April 27, 2019 » Gerrymandering
- April 23, 2019 » Free as in puppy
March
- March 22, 2019 » YouTube's popularity
- March 17, 2019 » Airbnb and HotelTonight
- March 10, 2019 » LinkedIn's terrible messaging experience
February
- February 28, 2019 » Dropbox should drop the freemium model
- February 10, 2019 » Netflix recommendation system failure
- February 9, 2019 » A personal DSP
- February 2, 2019 » Finally, some price increases
January
- January 27, 2019 » Modernizing Makers Alley and Better404
- January 12, 2019 » Buying Kindle books on iOS
- January 8, 2019 » GitHub's new plan
- January 6, 2019 » Java's SimpleDateFormat: YYYY vs yyyy
2018
December
- December 31, 2018 » Farewell 2018, Hello 2019!
- December 31, 2018 » Dorm rooms for adults
- December 31, 2018 » 2019 Predictions
- December 30, 2018 » Twenty seconds makes all the difference
- December 30, 2018 » Mexico city thoughts
- December 30, 2018 » Amazon vs Walmart
- December 29, 2018 » Wired headphones
- December 29, 2018 » The Teotihuacan pyramids
- December 29, 2018 » Moving from OS X to Ubuntu
- December 28, 2018 » Calendly
- December 27, 2018 » Eerie blue NYC sky
- December 27, 2018 » Amazon's "Add to list" design
- December 26, 2018 » Secret management across computers
- December 26, 2018 » Visualizing my blog: 2018 edition
- December 25, 2018 » Top posts of 2018
- December 25, 2018 » Happy holidays from Visual Studio Code
- December 24, 2018 » Solve all web app performance problems with SQL
- December 24, 2018 » Open, Public, Electronic, and Necessary Government Data Act
- December 24, 2018 » Calendars as streaming events
- December 23, 2018 » Quora's revenue model
- December 22, 2018 » HackerRank
- December 22, 2018 » Edge moving to Chromium
- December 21, 2018 » Global roaming
- December 21, 2018 » FIxing spotty AirBnB wifi
- December 20, 2018 » Tech startups are not the only ones taking risks
- December 19, 2018 » New iteration of DevOps
- December 19, 2018 » Facebook's latest hit
- December 18, 2018 » I finally tried an electric scooter
- December 17, 2018 » The new company town
- December 16, 2018 » Stuck on a problem? Take a break
- December 15, 2018 » Overanalyzing Medium's tag suggestions
- December 15, 2018 » New code is not a linear increase in complexity
- December 14, 2018 » State of tech in 2018
- December 13, 2018 » Counting the number of lines of code in a GitHub account
- December 12, 2018 » Scenepeek
- December 11, 2018 » The price of AWS vs GitHub
- December 10, 2018 » EMR vs Databricks costs
- December 9, 2018 » The modern economy relies on information
- December 9, 2018 » Avoiding content overload
- December 8, 2018 » Automatic login
- December 7, 2018 » Speech recognition and a bunch of APIs
- December 6, 2018 » Conference call echoes
- December 5, 2018 » The golden age of browsers
- December 4, 2018 » How many wifi devices do we have?
- December 3, 2018 » Overcoming writing rustiness
- December 2, 2018 » Mobile payments and messaging apps
- December 1, 2018 » Fat specs, light stories
November
- November 30, 2018 » Tragedy of the commons: Apartment edition
- November 29, 2018 » A delivery aggregation service
- November 28, 2018 » Shell history: 2018 edition
- November 27, 2018 » Privacy in a face detection world
- November 26, 2018 » An ad on the Google search homepage
- November 25, 2018 » Exploring my backlinks
- November 25, 2018 » Aggressive code deprecation
- November 24, 2018 » Code without online help
- November 24, 2018 » Adding optionality to products
- November 23, 2018 » Electronic goods are cheaper than ever
- November 22, 2018 » History's largest empires
- November 21, 2018 » Superhuman review
- November 20, 2018 » My DataEngConf 2018 talk
- November 19, 2018 » Computer history books
- November 18, 2018 » Falling behind my 2018 blogging goal
- November 17, 2018 » Random quotes
- November 16, 2018 » Python 3 and aiohttp
- November 15, 2018 » Limiting tracking in email
- November 14, 2018 » What messaging war?
- November 13, 2018 » A UX gem in Google Slides
- November 12, 2018 » Social Security Administration spoofing scam
October
- October 29, 2018 » Gmail's autocomplete
- October 25, 2018 » Just ship it
- October 13, 2018 » Equity in the gig economy
August
- August 21, 2018 » Incognito mode: Chrome vs Safari
- August 18, 2018 » Yahoo fantasy football stats: 2018-2019 edition
- August 15, 2018 » Google Calendar: Constantly shipping
July
- July 29, 2018 » Privacy vs user experience
- July 22, 2018 » Bulk discounts hurt competition
- July 21, 2018 » Class action settlement emails
- July 10, 2018 » In a software world, humanity comes first
- July 7, 2018 » MySQL foreign keys
June
- June 28, 2018 » Using personal AWS credentials in production
- June 5, 2018 » ALB and ELB access log schemas for Redshift
- June 1, 2018 » Type 1 and Type 2 tech specs
May
- May 26, 2018 » Power of shell commands
- May 14, 2018 » Memory as a stack
- May 12, 2018 » Curse of the early adopter
April
- April 28, 2018 » Rise of microbrands
- April 25, 2018 » Connect Four bot competition
- April 17, 2018 » Secure at the network level
- April 12, 2018 » Load testing
- April 3, 2018 » Open sourcing self driving car data
March
- March 25, 2018 » Protecting data ouside of a Terms of Service
- March 18, 2018 » Facebook's "breach"
- March 11, 2018 » Crowdsourced data
- March 3, 2018 » Hunting for my old GeoCities site
February
- February 25, 2018 » Retrieving Kindle highlights
- February 20, 2018 » Analyzing AWS ELB logs
- February 10, 2018 » Optimize for keyboard shortcuts
- February 9, 2018 » Making the most of the subway commute
- February 3, 2018 » My follower factory
January
- January 28, 2018 » MoviePass: A fascinating business model
- January 23, 2018 » Design anti pattern: Tab switching autosave
- January 16, 2018 » Phonetic distance
- January 13, 2018 » Calendar query language
- January 3, 2018 » Learning Docker
2017
December
- December 31, 2017 » Favorite books of 2017
- December 28, 2017 » AR Adblocking
- December 27, 2017 » Visualizing my 2017 stats
- December 26, 2017 » People do what you inspect, not what you expect
- December 25, 2017 » Send a shirt, get a shirt
- December 24, 2017 » Top posts of 2017
- December 22, 2017 » My Medium experiment
- December 21, 2017 » Analyzing my blog: 2017 edition
- December 14, 2017 » More intelligent credit card merchant rates
- December 10, 2017 » Google's news problem
- December 7, 2017 » Jira analysis script
- December 1, 2017 » Measuring sprint efficiency
November
- November 30, 2017 » Google Voice transcription fails
- November 25, 2017 » Make all laws temporary
- November 23, 2017 » Improving Jekyll generation speed for AMP pages
- November 20, 2017 » Ride sharing ride bailing
- November 18, 2017 » Archiving large MySQL tables
- November 15, 2017 » DevOps and Core Engineering application gap
- November 11, 2017 » Modern world of massive competiting corporations
- November 7, 2017 » Spark's read.jdbc
October
- October 30, 2017 » Slides from my talk at DataEngConf
- October 29, 2017 » Philosophy of code
- October 27, 2017 » The code review pyramid
- October 21, 2017 » GPS: The foundation of them all
- October 20, 2017 » Schedule automation using Google spreadsheets and Slack
- October 15, 2017 » Carrier specific iPhone ads
- October 14, 2017 » Scale challenges with AWS Athena
- October 9, 2017 » Downloading your AIM buddy list
- October 7, 2017 » Farewell, AIM
- October 5, 2017 » Generating a series of commands covering a date range
- October 2, 2017 » Writer's block and code
- October 1, 2017 » Lessons from a Yes concert
September
- September 22, 2017 » Open sourcing government
- September 21, 2017 » Examining my shell command history
- September 9, 2017 » Apartment rental arbitrage
- September 6, 2017 » Scaling meal kit distribution
- September 4, 2017 » Cross app AI
August
- August 31, 2017 » Amazon's real leverage
- August 28, 2017 » Focus on the story
- August 27, 2017 » Why live sports?
- August 25, 2017 » A unified Lambda architecture
- August 22, 2017 » Death of retail
- August 20, 2017 » JSON to CSV
- August 12, 2017 » A Snapcode in the mail
- August 10, 2017 » Start with pen and paper
- August 8, 2017 » Google Docs vs Confluence
- August 7, 2017 » Ephemeral data
July
- July 28, 2017 » Visualizing my meetings over time
- July 24, 2017 » A Google Docs efficiency win
- July 23, 2017 » The wild world of online trackers
- July 13, 2017 » Cities and outsourced infrastructure
- July 9, 2017 » Increasing software engineer specialization
- July 8, 2017 » Yahoo fantasy football stats: 2017-2018 edition
- July 4, 2017 » Thoughtful code
June
- June 30, 2017 » Send private messages to all members of a Slack channel
- June 26, 2017 » RSS finally fixed
- June 24, 2017 » Unsubscribe and wait 10 days
- June 22, 2017 » Apple's ARKit
- June 20, 2017 » Getting AMP into RSS
- June 17, 2017 » Investigating application issues
- June 16, 2017 » The Amazon juggernaut
- June 4, 2017 » Mary Meeker's Internet Trends 2017
May
- May 30, 2017 » Learn from failure, not success
- May 27, 2017 » Engineering, product, and design
- May 25, 2017 » IVR to SMS
- May 23, 2017 » Type dependent databases
- May 20, 2017 » Copying production SQL data to other environments
- May 17, 2017 » The different flavors of engineering interviews
- May 13, 2017 » In praise of the polymath
- May 10, 2017 » Using options to play Snapchat's quarterly results
- May 7, 2017 » Tools over languages
- May 4, 2017 » Security across multiple AWS regions
April
- April 30, 2017 » Having some fun with the RGB color model
- April 23, 2017 » The golden age of big data tools
- April 21, 2017 » Subscription all the things
- April 16, 2017 » AMP and subscription paywalls
- April 11, 2017 » SQL is the perfect interface
- April 9, 2017 » Optical illusions and self driving cars
- April 8, 2017 » Quality over quantity: NextDoor vs Craigslist
- April 4, 2017 » Changing good code is easy
- April 2, 2017 » Slack's channel exit anti pattern
March
- March 26, 2017 » Fulfillment by Amazon counterfeiting
- March 25, 2017 » The effects of marketing on price
- March 22, 2017 » Embrace experimentation
- March 19, 2017 » Refactor driven development
- March 12, 2017 » In praise of long running code
- March 9, 2017 » Stop procrastinating
- March 4, 2017 » Automating admin work: Spreadsheets to Slack
February
- February 28, 2017 » Lessons learned from today's S3 failure
- February 26, 2017 » My Snapchat investment strategy
- February 21, 2017 » Advice for coding bootcamp graduates
- February 19, 2017 » Math is incredible
- February 16, 2017 » Read books, not blog posts
- February 13, 2017 » Mancur Olson and the changing economy
- February 9, 2017 » Traffic efficiency
- February 6, 2017 » New law? Let the opposition name it
- February 4, 2017 » Identifying product weaknesses using Google autocomplete
- February 1, 2017 » Learning modern frontend development
January
- January 28, 2017 » The freedom to move
- January 26, 2017 » Shame on United and Bank of America
- January 16, 2017 » Powering our devices using the human body
- January 14, 2017 » Find the arbitrage opportunities in hiring
- January 11, 2017 » Information bandwidth of audio and display ads
- January 4, 2017 » Top posts of 2016
- January 2, 2017 » Year in review: 2016
2016
December
- December 31, 2016 » Favorite books of 2016
- December 31, 2016 » Amazon's peer to peer marketplace
- December 30, 2016 » Human-AI cooperation
- December 29, 2016 » Traveling? Buy a local book
- December 24, 2016 » Comparing public transit systems: New York vs London
- December 17, 2016 » Programming languages and developer tools
- December 13, 2016 » Automatically taking screenshots of HTML elements
- December 10, 2016 » Word clouds and text similarity
- December 9, 2016 » It's donation season
- December 6, 2016 » Efficiency vs expressiveness
- December 3, 2016 » Read the release notes
November
- November 30, 2016 » Becoming a better developer
- November 27, 2016 » Visualizing your AWS costs
- November 19, 2016 » Joy of old code
- November 18, 2016 » Comparing the web requests made by the top sites: 2014 vs 2016
- November 13, 2016 » Recursive redirects with AWS Lambda
- November 12, 2016 » A poor man's data pipeline
- November 6, 2016 » Restricted highlighting on the Amazon Kindle
October
- October 30, 2016 » The NFL abroad
- October 26, 2016 » Simple data visualizations from the command line
- October 23, 2016 » Preventing future DDOS attacks
- October 19, 2016 » Revisiting my Twitter activity
- October 13, 2016 » My new blogging setup
- October 10, 2016 » Setting up secor for Kafka 0.10
- October 9, 2016 » Friction and mass surveillance
- October 2, 2016 » iOS wifi security recommendation
- October 1, 2016 » Shaming meeting room hogs
September
- September 25, 2016 » NFL Thursdays on Twitter
- September 23, 2016 » A smarter Touch ID
- September 18, 2016 » Automating management
- September 13, 2016 » Supporting Disqus in AMP
- September 10, 2016 » Comparing my top sites: 2012 vs now
- September 8, 2016 » AMP migration scripts
- September 5, 2016 » Visualizing fantasy football stats
- September 5, 2016 » AMPifying my blog
- September 1, 2016 » Violating the norms of a social network
August
- August 29, 2016 » Food identification with Google's Cloud Vision
- August 28, 2016 » Giving wallabag a shot
- August 24, 2016 » Writing scrapers as APIs
- August 21, 2016 » Downloading your Turo ride history
- August 14, 2016 » Integrating poorly documented Open Source libraries
- August 13, 2016 » Fantasy football stats: 2016-2017 edition
- August 8, 2016 » Consumer tech leads to cyborgs
- August 7, 2016 » Engineering management: Measuring the unmeasurable
- August 6, 2016 » One of my favorite programs
July
- July 26, 2016 » Smarter geographic ad targeting
- July 22, 2016 » Double down on your brand and IP
- July 17, 2016 » Coding puzzle: Word transformation through valid words
- July 16, 2016 » Whatever happened to automatic login?
- July 10, 2016 » A Twitter Moments fail
- July 9, 2016 » Consumer protection for UX
- July 4, 2016 » Maximize the potential energy of your code
- July 3, 2016 » Snapchat's massive potential
June
- June 26, 2016 » Low cost at small scale
- June 23, 2016 » The Brave browser
- June 22, 2016 » Messaging app fragmentation
- June 19, 2016 » Blogging from my phone
- June 18, 2016 » AWS, Stripe, and WeWork
- June 12, 2016 » Analyzing my blog
- June 11, 2016 » Following up on a website optimization offer
- June 6, 2016 » Word clouds in R
- June 5, 2016 » Blogging: The small wins
May
- May 28, 2016 » Uber and self driving cars
- May 22, 2016 » Analyzing IMDB data: Actors vs actresses
- May 21, 2016 » Analyzing IMDB data: Step 1 - Cleaning and QA
- May 15, 2016 » Experimenting with Medium
- May 14, 2016 » Expiration date selection design anti pattern
- May 11, 2016 » Identifying unused database tables
- May 8, 2016 » Google's photo search is eerily incredible
April
- April 30, 2016 » Text is king
- April 27, 2016 » Avoid full body code transplants
- April 23, 2016 » A Telegram blog bot
- April 18, 2016 » Irrationality of the markets: Amazon up, Netflix down
- April 13, 2016 » The corporate email signup design pattern
- April 10, 2016 » Unintended consequences
- April 7, 2016 » Generalize at n=3
- April 5, 2016 » The best code is no code
- April 3, 2016 » Ben Thompson's “laddering up” and building bigger moats
March
- March 27, 2016 » Unbundling politics
- March 26, 2016 » Political parties are product bundles
- March 21, 2016 » Data analysis needs to be fun
- March 20, 2016 » Passing the torch: IBM to Google
- March 13, 2016 » Approach work like the gym
- March 10, 2016 » The MySQL enum type
- March 6, 2016 » Airbnb, Uber, and local laws
- March 5, 2016 » AWS EC2 instance arbitrage
February
- February 28, 2016 » Tool specialization and growing companies
- February 27, 2016 » Aural information density
- February 22, 2016 » Platform partnerships
- February 21, 2016 » Amazon Echo
- February 20, 2016 » Let's Encrypt
- February 17, 2016 » The impact of self driving cars
- February 15, 2016 » Design your database for flexibility
- February 13, 2016 » Longer terms in government?
- February 10, 2016 » Retargeting gone wrong
- February 7, 2016 » Don't build a Homer
January
- January 31, 2016 » Describe what your code won't do
- January 29, 2016 » Unification in tech and a new Gilded Age
- January 24, 2016 » The famed 10x developer
- January 23, 2016 » The ownership hierarchy
- January 17, 2016 » Poor, neglected Google Voice
- January 12, 2016 » 2015 Stats: Part 1
- January 10, 2016 » Cleanest way to read a CSV file with Python
- January 9, 2016 » Have consistent development environments
- January 3, 2016 » Paris versus New York City
- January 1, 2016 » Lessons from 2015
2015
December
- December 28, 2015 » Smartphone usage by generation
- December 25, 2015 » The true cost of low quality
- December 20, 2015 » Have a work “workout” plan
- December 19, 2015 » Automatically generating APIs
- December 15, 2015 » Know what's mission critical
- December 12, 2015 » Jersey City garbage truck routes
- December 7, 2015 » Optional museum fees and corporate sponsorships
- December 6, 2015 » Setting up a new computer - then and now
- December 2, 2015 » Think interfaces, not implementation
November
- November 26, 2015 » Analyzing large networks
- November 22, 2015 » Why are Netflix and Spotify so different?
- November 21, 2015 » More MySQL fun
- November 19, 2015 » Adhoc task management
- November 12, 2015 » My old projects
- November 9, 2015 » Apps on LTE, mobile web on wifi
- November 8, 2015 » A company marches on its data
- November 5, 2015 » Zoning Airbnb
- November 1, 2015 » Good code is easy to build and deploy
October
- October 29, 2015 » Some nostalgia
- October 25, 2015 » Production makes fools of us all
- October 21, 2015 » Jsonify.me 2.0
- October 19, 2015 » Dates in the shell
- October 18, 2015 » Writing code? Think about the deployment
- October 15, 2015 » Adblock, publishers, and content quality
- October 11, 2015 » Have a 'go to' project when learning a new programming language
- October 10, 2015 » Not every big company is evil
- October 4, 2015 » Is media consumption zero sum?
September
- September 26, 2015 » The iPad Pro and Apple's walled garden
- September 24, 2015 » Mapping the Jersey City parking zones II
- September 20, 2015 » Keep on learning
- September 15, 2015 » Internalizing externalities
- September 13, 2015 » Workaround driven product development
- September 12, 2015 » Mapping the Jersey City parking zones
- September 5, 2015 » Smart OSes
- September 3, 2015 » Come on Twitter
August
- August 31, 2015 » Two factor authentication hell
- August 29, 2015 » Game theory dining
- August 23, 2015 » Learn the application architecture through AWS
- August 20, 2015 » Development cycles across programming languages
- August 16, 2015 » A phoneless day
- August 15, 2015 » Generating vs filtering
- August 12, 2015 » Reprioritizing a non priority RabbitMQ queue
- August 9, 2015 » Static site search
- August 3, 2015 » Debate what's necessary and no more
- August 1, 2015 » It's not done until it's deployed
July
- July 29, 2015 » The Go interface
- July 25, 2015 » Use the database Luke
- July 20, 2015 » Tunnel vision
- July 19, 2015 » Excel wins
- July 16, 2015 » A Bloom filter in my head
- July 12, 2015 » Comparing SQL schemas
- July 8, 2015 » Apple and Intel
- July 6, 2015 » Zsh and Oh My Zsh
June
- June 27, 2015 » Ambiguous SQL queries
- June 23, 2015 » Domain specific API definitions
- June 20, 2015 » Properly handling text based two factor authentication
- June 19, 2015 » The Edmunds API
- June 13, 2015 » Smartphone productivity
- June 9, 2015 » A MySQL “GROUP BY” nuance
- June 7, 2015 » Finding the optimal car to list on RelayRides
May
- May 30, 2015 » Date range generation
- May 26, 2015 » Dealing with a stripped screw
- May 25, 2015 » Google Chrome knows what's best for me
- May 22, 2015 » The decline of niche tools
- May 18, 2015 » Experts, time, and quality
- May 17, 2015 » Taking spontaneous notes
- May 12, 2015 » Mosh trumps shoddy internet
- May 9, 2015 » Driving before GPS
- May 6, 2015 » Computer show fliers from the mid 1990s
- May 2, 2015 » A unique solution to every problem
April
- April 28, 2015 » A few days with Google Contributor
- April 26, 2015 » AWS service limits
- April 23, 2015 » Adding columns in PostgreSQL and Redshift
- April 19, 2015 » Don't scrape into a Dropbox folder
- April 12, 2015 » The uncanny valley of advertising
- April 12, 2015 » Dealing with an unresponsive Google CDN
- April 6, 2015 » Redshift meets Excel
- April 3, 2015 » My tool setup
March
- March 29, 2015 » iOS first and username claiming
- March 24, 2015 » Why login after resetting your password?
- March 21, 2015 » The sharing economy and human behavior
- March 18, 2015 » Power of engineering standards
- March 15, 2015 » Learning to spell again
- March 14, 2015 » An ode to Pi
- March 10, 2015 » Strongly typed, static language tools
- March 8, 2015 » Computer literacy for protection and productivity
February
- February 28, 2015 » Getting the most out of log4j
- February 26, 2015 » Lists and localStorage
- February 23, 2015 » In praise of the full stack developer
- February 22, 2015 » Lessons from Node
- February 16, 2015 » Smarterphones
- February 13, 2015 » Learning Scala
- February 7, 2015 » URL redirection app
- February 1, 2015 » MySQL vs PostgreSQL sort order
January
- January 29, 2015 » Migrating a simple HTTP application on AWS
- January 26, 2015 » IBM's rumored layoff
- January 25, 2015 » The changing fidelity of the past
- January 24, 2015 » Don't trust client side data
- January 18, 2015 » Fun with GitHub's map tools
- January 17, 2015 » Take the first step
- January 11, 2015 » 2014 stats
- January 9, 2015 » Limited language codebases
- January 6, 2015 » Some quick Twitter analytics analysis
- January 4, 2015 » Introducing jsonify.me
2014
December
- December 31, 2014 » Redirect recursion
- December 29, 2014 » A new Turing test
- December 26, 2014 » DevOps for the rest of us
- December 20, 2014 » Passive technology and the decline of privacy
- December 18, 2014 » Amazon's Fire TV Stick
- December 16, 2014 » Why log me out?
- December 14, 2014 » Waiting for the aha moment
- December 13, 2014 » Travel to appreciate technological growth
- December 9, 2014 » Piketty and the power of data
- December 7, 2014 » Internetless coding
- December 1, 2014 » Symptom based monitoring
November
- November 24, 2014 » AWS: Always shipping
- November 22, 2014 » Fab's fall from grace and the difficulty of startups
- November 20, 2014 » Paying publishers without ads
- November 18, 2014 » Backendless applications
- November 13, 2014 » Productivity optimization
- November 9, 2014 » Some simple AWS tools
- November 5, 2014 » Luxury for cheap
- November 1, 2014 » Tools as tools, not products
October
- October 28, 2014 » Libraries
- October 27, 2014 » Lessons learned teaching a MySQL class
- October 26, 2014 » Spam blog comments
- October 19, 2014 » My first open source contribution
- October 18, 2014 » Link bait titles are a race to zero
- October 12, 2014 » AWS Glacier
- October 8, 2014 » Clearing my head
- October 4, 2014 » XKCD movie quotes by Android
- October 1, 2014 » Normalizing a CSV file using MySQL
September
- September 27, 2014 » Mobile web browsing and Javelin
- September 25, 2014 » Dev tools matter
- September 21, 2014 » Software is good enough, why improve the hardware?
- September 20, 2014 » Dealing with an RDS replication issue
- September 17, 2014 » Web development bootcamps
- September 16, 2014 » Top down vs bottom up coding
- September 8, 2014 » Curated Twitter timelines and the tech stack
- September 7, 2014 » Importance of various tech services
- September 1, 2014 » API first startups
August
- August 30, 2014 » Managing settings files in Django projects
- August 26, 2014 » Yahoo fantasy football stats - 2014 edition
- August 22, 2014 » Cofounders and their situations
- August 18, 2014 » Trick your users into staying
- August 17, 2014 » A MySQL class proposal
- August 11, 2014 » Books are insanely cheap
- August 9, 2014 » Evolution of code deployment
- August 3, 2014 » Getting the most out of Lyft's 50 free rides
July
- July 31, 2014 » Hiring people on Odesk
- July 29, 2014 » Low quality? Start bundling!
- July 27, 2014 » Ephemeral security questions
- July 23, 2014 » When one door closes, another door opens
- July 16, 2014 » A simple way to automate AWS deployments
- July 15, 2014 » Set up HTTPS on EC2 running Nginx without ELB
- July 14, 2014 » Getting low level with HTTP
- July 13, 2014 » Good artists use fewer tools
- July 10, 2014 » Amazon courting app developers for the Fire phone
- July 9, 2014 » On Google Now
- July 7, 2014 » Retrieving a Twitter user's followers and followees
- July 5, 2014 » The future of databases
June
- June 15, 2014 » On having my Pinterest account hacked
- June 12, 2014 » An eBay design rant: timezone support
- June 8, 2014 » Replacing Evernote
- June 7, 2014 » Debugging a reverting database update
- June 2, 2014 » Approachable data science
May
- May 29, 2014 » Generate fake SQL data using JavaScript
- May 24, 2014 » On Fab's latest move
- May 20, 2014 » Logging in through your inbox
- May 16, 2014 » Examining ssh login requests
- May 15, 2014 » Coding in a VR future
- May 12, 2014 » Most commonly used shell commands
- May 10, 2014 » Site down? Fall back to S3
- May 3, 2014 » Gap fills and cross joins in Excel
- May 2, 2014 » Migrating from Linode to Digital Ocean
April
- April 28, 2014 » System knowledge and human creativity
- April 25, 2014 » Craigslist: the web's fertilizer
- April 21, 2014 » Bulk geocoding tool
- April 16, 2014 » Vertical integration and web development
- April 13, 2014 » Some computer memories
- April 12, 2014 » My computer experience
- April 7, 2014 » Self hosted services
- April 4, 2014 » PostgreSQL Fibonacci
March
- March 30, 2014 » AWS is about infrastructure optionality
- March 28, 2014 » Hacker lore
- March 25, 2014 » Visualizing my browsing history
- March 18, 2014 » Goodbye Gmail
- March 16, 2014 » Fun with the Oyster books API
- March 11, 2014 » Website load times: NYC vs Beijing
- March 9, 2014 » Examining the requests made by the top 100 sites
- March 6, 2014 » Follow the WhatsApp money
- March 2, 2014 » Trained for discounts
February
- February 26, 2014 » Blog posts are now tagged
- February 21, 2014 » More Sierpinski fun
- February 19, 2014 » Sierpinski triangle in D3
- February 15, 2014 » Heuristic vs algorithmic approaches
- February 13, 2014 » Foursquare as a contact book
- February 10, 2014 » Using virtualenv in production
- February 9, 2014 » Travel more
- February 5, 2014 » Visualizing GPS data in R
- February 2, 2014 » Why I manage my own blog
January
- January 25, 2014 » Solving coding tests in PostgreSQL
- January 23, 2014 » Developing on a remote instance
- January 19, 2014 » Emotional products
- January 15, 2014 » Ebook readers
- January 9, 2014 » Taxi prices around the world
- January 5, 2014 » Surge pricing ideas
- January 4, 2014 » Visualizing RunKeeper data in R
2013
December
- December 30, 2013 » 2013 blog stats
- December 29, 2013 » Taxi pricing in NYC vs Mumbai
- December 26, 2013 » Smartphones and literacy
- December 25, 2013 » Global products
- December 23, 2013 » Getting a SIM card in India
- December 21, 2013 » CSV powered products
- December 20, 2013 » Why Bank of America, why?
- December 15, 2013 » Using the information_schema.columns table
- December 9, 2013 » Why are there so many cleaning startups?
- December 1, 2013 » Drowning in JavaScript
November
- November 30, 2013 » Genetic programming Connect 4
- November 26, 2013 » Blog analytics (blogolytics?)
- November 23, 2013 » I'm joining TripleLift
- November 16, 2013 » A Twitter flashback
- November 15, 2013 » RDS and R
- November 9, 2013 » Is Excel on a Mac intentionally hobbled?
- November 7, 2013 » Security in the wake of MongoHQ
- November 3, 2013 » Why I run
October
- October 30, 2013 » What the SEO? Followup
- October 27, 2013 » Lessons from consulting
- October 23, 2013 » Some more design ranting
- October 20, 2013 » What the SEO?
- October 14, 2013 » But I don't have time
- October 13, 2013 » My running progress
- October 12, 2013 » Decline of cynicism
- October 5, 2013 » Some JavaScript Tools
- October 1, 2013 » Why's the iPhone 5C so expensive?
September
- September 30, 2013 » Going rate for an email address
- September 28, 2013 » Pricing small consulting projects
- September 20, 2013 » In defense of Excel
- September 17, 2013 » Programming and math
- September 16, 2013 » Offering suggestions
- September 11, 2013 » MoMath visit
- September 6, 2013 » Want more sales? Start teaching
- September 3, 2013 » Design anti pattern: footer under infinite scroll
- September 2, 2013 » Startups aren't black and white
August
- August 28, 2013 » Simplicity vs power in product design
- August 26, 2013 » Extract info from a web page using JavaScript
- August 24, 2013 » Splitting an AWS account
- August 18, 2013 » On Teaching AP Computer Science
- August 14, 2013 » Netflix profiles, why now?
- August 11, 2013 » Rise of flat design
- August 7, 2013 » Introducing Better 404
- August 2, 2013 » A brief history of manufacturing
July
- July 30, 2013 » Run Django under Nginx, Virtualenv and Supervisor
- July 27, 2013 » The power inbox
- July 22, 2013 » Security through monopoly
- July 21, 2013 » Beware the data monopoly
- July 17, 2013 » Scraping Yahoo fantasy football stats with Scrapy
- July 13, 2013 » Marketplaces are hard
- July 9, 2013 » D3 and Vega
- July 7, 2013 » Meetings: to take or not to take?
- July 3, 2013 » A design that's too good?
- July 1, 2013 » Externalizing externalities in brick and mortar
June
- June 25, 2013 » Business frameworks are actually useful
- June 21, 2013 » Where are you on the sales matrix?
- June 20, 2013 » Pushing moral boundaries
- June 16, 2013 » Regulation and the share economy
- June 12, 2013 » Constantly entertained
- June 7, 2013 » Fun with Prolog: Priceonomics Puzzle
- June 4, 2013 » Citibike Directions: Second Attempt
- June 1, 2013 » Citibike Station to Station Directions
May
- May 29, 2013 » On SEO: Authority vs Originality
- May 24, 2013 » Investing in tech stocks
- May 22, 2013 » Save my reading spot, damn it
- May 17, 2013 » Adding attachments to django-postman
- May 15, 2013 » Google's “free” Adwords credits
- May 10, 2013 » Eighteen Months of Django: Part 2
- May 7, 2013 » Eighteen months of Django
- May 5, 2013 » Netflix, bundling, and the future of video
- May 2, 2013 » Follow through on that personal welcome email
April
- April 29, 2013 » Some gaming nostalgia
- April 24, 2013 » Smart software; dumb hardware
- April 19, 2013 » What does getting on the HN front page get you?
- April 15, 2013 » Automatically add a “Follow on HN” link
- April 12, 2013 » Why don't cell phones have a dialtone?
- April 10, 2013 » Raspbmc
- April 5, 2013 » Coke, Pepsi and Passover
- April 2, 2013 » The new Gmail compose
March
- March 29, 2013 » Mailbox: Is the server required?
- March 26, 2013 » Welcoming the long, single webpage
- March 24, 2013 » Email addresses are private?
- March 20, 2013 » One art, please
- March 16, 2013 » Makers Alley v2
- March 12, 2013 » Mmmm... pseudo static sites
- March 9, 2013 » Just do the work
- March 5, 2013 » Discriminatory Pricing in the Post Office
- March 1, 2013 » App Store, what took so long?
February
- February 26, 2013 » Book Review: Liars and Outliers
- February 25, 2013 » Account management madness
- February 22, 2013 » Vacationing with Foursquare
- February 21, 2013 » Tesla and privacy
- February 12, 2013 » An analysis of Lincoln's words
- February 8, 2013 » More thoughts on online education
- February 5, 2013 » Identifying duplicate bills across states
- February 1, 2013 » Improving online programming classes
January
- January 29, 2013 » The Patent troll troll
- January 24, 2013 » Blog updates since November
- January 23, 2013 » Why aren't there more engineers in politics?
- January 19, 2013 » Making sense of my Twitter archive
- January 15, 2013 » What do Fab and Groupon have in common?
- January 11, 2013 » Is the pen mightier than the sword in a social world?
- January 9, 2013 » Web scraping like a pro
- January 2, 2013 » 2013 Goals
- January 1, 2013 » Year in Review 2012
2012
December
- December 19, 2012 » Self hosted Instagram export
- December 16, 2012 » The joy of upgrading an HD in a Macbook
November
- November 29, 2012 » Entrepreneurship is not a job
- November 14, 2012 » Github Migration Notes
- November 13, 2012 » Hello, Github!
August
- August 12, 2012 » Eating Yourself - Innovation & Cannibalization
- August 5, 2012 » In Defense of Yahoo
July
- July 28, 2012 » The Startup Advantage - Details, Details, Details
- July 10, 2012 » Race to 0 - RIM vs IE
- July 9, 2012 » Photo taken near Times Square
June
- June 7, 2012 » Achieving browser autocomplete
May
- May 23, 2012 » Trend of actor vs actress age differences
- May 22, 2012 » Selling to the enterprise? Target the consumer
- May 16, 2012 » Peter Thiel's CS183
April
- April 25, 2012 » Growth of Consumer Comfort with Technology
- April 12, 2012 » Draw Something Zyngafied
- April 10, 2012 » Future of Startups - Small Teams, Big Profit
- April 4, 2012 » On Writing
March
- March 30, 2012 » Where are the event recommendation startups?
- March 24, 2012 » Overcoming the Build Bias
- March 21, 2012 » When is it time to leave the full time job?
- March 5, 2012 » On business models - To collect or to fine?
January
- January 29, 2012 » Shakespeare and Startups
- January 12, 2012 » Improving the Subway User Experience
2011
December
- December 30, 2011 » Screwed if you do, screwed if you don't
- December 8, 2011 » GroupOn Scheduler
January
- January 8, 2011 » Tech Interview Question
2010
August
- August 25, 2010 » Google Giving Employees Free Adwords?
March
- March 10, 2010 » More posts coming soon
2009
September
- September 28, 2009 » Improving your luck
March
- March 8, 2009 » Power of Twitter
January
- January 23, 2009 » Enabling modules in Apache2 under Ubuntu
- January 21, 2009 » What's the easiest way to be elected president?
- January 20, 2009 » More posts coming up
2008
October
- October 24, 2008 » On weekend voting
- October 1, 2008 » Some thoughts on innovation
September
- September 15, 2008 » Should we apply the EU model to the US
- September 12, 2008 » Voting system proposal
- September 3, 2008 » On TV commercials
June
- June 19, 2008 » Advice on internet passwords
- June 12, 2008 » Privacy in the digital age
May
- May 30, 2008 » Interesting Perl behavior
- May 28, 2008 » Don't judge words by their author
- May 24, 2008 » Martha's Vineyard Lighthouse
- May 21, 2008 » Welcome
- May 14, 2008 » Brainteasers and interviews
- May 13, 2008 » Why we may never colonize space
- May 13, 2008 » Printers no longer come with cables?
- May 8, 2008 » Pronunciation
- May 4, 2008 » The homeless in the US
- May 4, 2008 » On Microsoft walking away from Yahoo
April
- April 29, 2008 » Why does EA want Take Two?
- April 29, 2008 » Video games as art
- April 25, 2008 » On Apple buying PA Semiconductor