I spend my days mostly working in a Postgres 13 environment with some core tables set up nearly a decade ago, meaning I'm used to accessing, inserting, and updating JSON being a bit painful. Especially if it's an hstore column. But lately I've been transitioning Serial Reader from MongoDB to Postgres which was an opportunity to install the latest and greatest Postgres and opened a world of…
Feels like I'm endlessly writing some version of "retrieve value, check if empty, set default if empty" flows with Go, particularly when handling optional REST API params/payload values. Other dynamic languages can usually just lean on an OR operator for such things. Didn't think Go had an easier way until today stumbling across a much cleaner option : cmp.Or ! myValue :=…
If you work on, with, or near computers there's just so many things to name. Processes, classes, wi-fi networks , computers, scripts, servers, fleets of servers , databases, tables. It's endless. There's a bit of advice on such things across the web which I am, if I may say, a pro at completely ignoring, forgetting, and disregarding. A trail of dull ("db1"), creative-yet-unclear (what the heck is…
I recently upgraded from a 2015 27" 5K iMac to an M1 14" MacBook Pro and had planned on trading in my iMac with the purchase. I was, however, surprised to find Apple thinks my iMac is worth $0. Sure the computer inside is getting sluggish and isn't supported with new software updates, but this 5K screen is comparable to a $1.6k Studio Display! Surely that's worth something? It is to me at least.…
As of February 2023, Twitter's free API is becoming a paid-only API. But the great thing about complex web applications like Twitter is there's always another API you can use: the one your web browser uses every day just to load data within the Twitter website. Using the API Twitter itself uses may be a bit more cumbersome — no documentation, authentication is hacky, and really only useful for…
A quick and emotional read, sprinting through the anger and violence of several class uprisings from the 14th to 16th centuries in Europe. Vuillard injects enough commentary to tie the events to the present day. Since reading the book, I've seen the author's works described as "historical essay with literary flourishes" which applies here as well. The book is more concerned with conveying the…
A constant challenge for image-rich applications, whether mobile apps or website, is what to display while images are loading. There's plenty of options, but one that grabbed my attention recently was BlurHash - a library that displays blurred representations of a image using a short string while hte larger asset is loading. I really liked this idea, but wanted to find a way to replicate a similar…
In running my projects, I've moved hosting providers 4 times now and experienced no downtime. I don't think this is super remarkable but thought I'd share how I do it in case anyone is facing move #1 and feeling anxious. Prerequisites First off, as the title suggests this is focused on moving a MongoDB replica set between providers. This approach would also be handy if you're moving between geo…
I was lucky enough to have Serial Reader noticed by Mary Elizabeth Williams , an author and staff writer at Salon , who gave me the chance to ramble a bit on the app and why I built it. Be sure to check out the article and Mary Elizabeth's other writing on the site and elsewhere! I enjoy looking to other apps that are trying to tackle the same big problem as Serial Reader - that is, breaking a…
In most ways Spotify is great. In some specific ways, Spotify is baffingly bad. One of the most annoying shortcomings of the platform is the inability of Spotify to alert you to new album releases from your favorite artists, even if you've explicitly "followed" the artists in Spotify. If you're frustrated by this lack of functionality, you can actually pretty easily fill the gap yourself using…
What motivates you to sustain side projects? For me, the primary drive is probably the love of coding, of solving problems, of crafting something new. But sometimes (ok, often) I'm just tired. Inspiration is lacking. Work has me burned out on writing code. I can't stare at a screen for one more second. What then? It'll come as no surprise that most developers' independent,…
So you need to add fuzzy search matching to your Python & MongoDB project. Though MongoDB offers quite a few handy text search features out of the box , any search for "Dostoyevsky" requires you spell good ol' Fyodor's name exactly right. There are likely dozens of solutions to this situation, including switching to another database that supports fuzzy matching. That may be the right answer for…
06/23/2017 Update - Three weeks from launch and the U.S. ratings count has exceeded 300, far beyond what I've seen in the past for a single release. (Interestingly of those ratings, only 5 reviews have been posted. The majority of those are positive and elaborate, but an interesting ratio nonetheless.) In any case, I strongly recommend adding SKStoreReviewController support to your iOS app! After…
Let's say you have a form with a ChoiceField populated with preset options, but you want to make the choices more specific to the user. For example, you want to ask the user to select if they like their favorite book or their favorite movie more. Let's say for some users, you already know their favorite book and for those users you want to display the book's title instead of a generic "Your…
On every other day he was a wiry intimidating hardass of an English professor, unafraid of labeling undercooked undergrad ideas b.s. and once throwing a cellphone out the classroom window. But one day, while discussing Willa Cather’s My Antonia, he broke down in tears. The novel — and one line in particular — had devastated him. Just as it had (he said) every time he taught it over the past 20…