Date APIs and their impossible promisesWhen we brainstorm Workbench features, I have a mantra: don’t promise the impossible.Jun 4, 2021Jun 4, 2021
My 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
Design by errorErrors are the universal language of programming. Make them count.Mar 1, 2021Mar 1, 2021
Sandboxing 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
Sandboxing 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
Sandboxing 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
Describing 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
Multiple 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
Make UglifyJS way faster by using it soonerGrunt, Gulp, Browserify, Webpack — they all make the same rookie mistake.Aug 1, 20174Aug 1, 20174
A File Format For Static WebsitesEverybody’s doing it wrong. Use this file format.Apr 5, 20171Apr 5, 20171
Fonts in node-canvasDo you use node-canvas to draw images from JavaScript using Cairo?Mar 14, 20172Mar 14, 20172
Node: synchronous code runs faster than asynchronous codeWriting Node code? What for?Feb 17, 20174Feb 17, 20174
In Ruby, don’t use timeout()Ruby has a method called timeout(). It supposedly avoids long-running code. Don’t use it.Jul 31, 20162Jul 31, 20162
In MySQL, never use “utf8”. Use “utf8mb4”.Today’s bug: I tried to store a UTF-8 string in a MariaDB “utf8”-encoded database, and Rails raised a bizarre error:May 13, 201635May 13, 201635
No, Bernie Sanders did not “win” WyomingDemocrats count delegates. Journalists count votes.Apr 12, 2016Apr 12, 2016
SQL Doldrums: transactionsAre you using an SQL database to build your news app? Two things are slowing you down: object-relational mapping (e.g., ActiveRecord) and…Apr 7, 2016Apr 7, 2016
Rails developers: avoid has_oneI’ve been struggling with Other People’s Code and Other People’s Guidance.Apr 1, 20162Apr 1, 20162