Hi, I'm Steve Gattuso! I'm a New Yorker 🗽 currently living in Miami 🌴. I enjoy writing software 🤓, cycling 🚲, and trying to figure out ways to make humanity more sustainable 🚇. I'm a hackNY '13 alum, Recurser, and currently employed at Amperon 🔌.

Latest Posts

I generally like writing about software, businesses, and any other interesting links I find around the web. If you like what you see here, consider subscribing to my RSS feed or following me on Twitter.

A small detail from some screenshots in the keynotes (and later confirmed on Apple’s website) is adding next-hour precipitation to the native weather apps for both iOS and MacOS:

If I could take a guess, it looks like they’ve already integrated DarkSky’s forecasts into iOS. It’s a relief for any of us who have been desparately seeking a weather app that has good data + isn’t bloated with all sorts of nonsense/distractions, but still a bummer that Dark Sky isn’t its own company anymore.

I don’t remember exactly how this quote made it into my bookmarks, but I really liked it and thought it’d be worth sharing:

It’s a strange thing about the human mind that, despite its capacity and its abundant freedom, its default is to function in a repeating pattern. It watches the moon and the planets, the days and seasons, the cycle of life and death all going around in an endless loop, and unconsciously, believing itself to be nature, the mind echoes these cycles. Its thoughts go in loops, repeating patterns established so long ago we often can’t remember their origin, or why they ever made sense to us. And even when these loops fail over and over again to bring us to a desirable place, even while they entrap us, and make us feel anciently tired of ourselves, and we sense that sticking to their well-worn path means we’ll miss contact with the truth every single time, we still find it nearly impossible to resist them. We call these patterns of thought our “nature” and resign ourselves to being governed by them as if they are the result of a force outside of us, the way that the seas are governed — rather absurdly, when one thinks about it — by a distant and otherwise irrelevant moon.

And yet it is unquestionably within our power to break the loop; to “violate” what presents itself as our nature by choosing to think — and to see, and act — in a different way. It may require enormous effort and focus. And yet for the most part it isn’t laziness that stops us from breaking these loops, it’s fear. In a sense, one could say that fear is the otherwise irrelevant moon that we allow to govern the far larger nature of our minds.

I also was browsing this blog and found that the author made an amazing collection of vintage science facemasks. I love this aesthetic and instabought the Saturn mask:

Saturn mask

As it turns out, moving to a new city just before a pandemic hits is a great way to find yourself with plenty of free time. I finally got bored enough to redesign my personal website and hook it up to, which will ideally auto-syndicate posts to Twitter, Mastodon, and RSS (honestly this post is mostly just testing the xposting out).

I’m trying to be a bit better about writing these days and hope I can publish thoughts more frequently here. For some reason it’s always easy for me to write sub-240 character Tweets and blast them off, but when it comes to this blog I find myself frequently second-guessing and overcorrecting my writing. This inevitably kills off the original motivation I had to write the post in the first place (see gumption traps), resulting in never hitting the publish button.

I’m thinking about writing a utility which lets me blast off blog posts directly from Drafts, which I’ve been using a lot for journaling lately. This would essentially replicate the low-friction fire-and-forget of Twitter’s compose view, but I’m still deciding if that’s a desireable trait or not.

Anyways, hope you enjoy reading with the new layout.

If your company uses Google Cloud Build you may have noticed that their out-of-the-box Slack integration is… Lacking. I’ve published a much improved Slack notification on Amperon’s blog for you to steal!

Following up on my previous post, Creating your own reverse geocoder with OSM and PostGIS, I’ve found myself needing to translate a pair of GPS coordinates into a timezone. Thankfully this operation was quite a bit simpler than building a country/city/neighborhood reverse geocoder, but still worth documenting to help others going down a similar path. Let’s get started! In order to correctly calculate the timezone containing a given coordinate we’ll need a nice map that defines the shape of all of the world’s timezones.

Something I’ve felt (and disliked) about American society is our desire to be self-sufficient as individuals. We don’t want to share with one another; we want our own and we want it to be better than everyone else’s. David Brooks, an op-ed columnist at the New York Times does an amazing job of explaining how this mentality has failed us, and gives advice of what we can do to fix it.

Somewhere in my head is a much longer essay about why I think this is so important, using the American preference of cars over public transit as an example of how we’ve lost sight of what we can achieve when we band together.

Over the course of my first two weeks at the Recurse Center I’ve found myself in a rabbit hole of working with geospatial data. More specifically, I’ve collected a pretty sizable dataset on my personal location history using a small Swift app that pings my home server with my current whereabouts, which then stores it in a PostGIS database. Given that I’m currently teaching myself about data science/visualization, this seemed like the perfect starting point to practice gaining insights from a set of data.

I went through all of the pain of figuring out how to issue and verify EIP-712 messages in Go so you don’t have to!

Lately I’ve been working on a research project at work called TCR Party, a token curated list of the top Twitter handles in the crypto community, powered by an existing human-readable interface.

And yes, I recognize the irony of publishing this article on Medium given my previous writing. I’m actively trying to move my team away from it 🙂.

I finally found myself with a perfect combination of free time and a useful idea and managed to put together a small widget for BetterTouchTool which duplicates the menu bar UI for Harvest for Mac. If you use Harvest to keep track of your time, check it out!