Adam HooperDate APIs and their impossible promisesWhen we brainstorm Workbench features, I have a mantra: don’t promise the impossible.Jun 4, 2021Jun 4, 2021
Adam HooperMy philosophy of exceptions: they’re always ambiguousPython, C++, Ruby and Java all use exceptions. To them, “exception” means, “nifty piece of syntax kinda like goto.” Language…Mar 23, 20211Mar 23, 20211
Adam HooperDesign by errorErrors are the universal language of programming. Make them count.Mar 1, 2021Mar 1, 2021
Adam HooperSandboxing data crunches, chapter 3: containerizeThis is the third and final post in a series. In Chapter 1, we sandboxed using subprocesses. In Chapter 2, we leveraged Linux’s clone()…Dec 7, 2019Dec 7, 2019
Adam HooperSandboxing data crunches, Chapter 2: clone processesThis post, second in a series, offers a Python solution to a Python problem. The broad principles should apply to any single-threaded…Nov 27, 2019Nov 27, 2019
Adam HooperSandboxing data crunches, Chapter 1: use a subprocessWorkbench lets users drag and drop “Steps” to create programs we call “Workflows.” It’s like a user-friendly Jupyter.Nov 20, 2019Nov 20, 2019
Adam HooperDescribing code? Avoid these words.When we describe code, we tend to use confusing words. Re-think your language with this simple guide.Sep 21, 2017Sep 21, 2017
Adam HooperMultiple Share Cards For Your Web PageThe first — and hopefully last — experience your user has with your news story is on social networks. I’ll describe a neat trick for…Aug 24, 20171Aug 24, 20171
Adam HooperMake UglifyJS way faster by using it soonerGrunt, Gulp, Browserify, Webpack — they all make the same rookie mistake.Aug 1, 20174Aug 1, 20174
Adam HooperA File Format For Static WebsitesEverybody’s doing it wrong. Use this file format.Apr 5, 20171Apr 5, 20171