Steve Grunwell

Open-source contributor, speaker, and coffee snob

Category: Thoughts

Someone writing a to-do list in a notebook

Steal This Idea: Extract TODOs from a Codebase

As a software developer, it’s incredibly common to browse a codebase and find that the functionality that was advertised doesn’t really exist.

Maybe the function or class method is there, but where there should be some brilliant logic, instead there’s a comment to the effect of “TODO: actually implement this.”

It’s frustrating, especially if you know that the developer who wrote that comment is long-gone, but what can you do? The nature of the industry is that we’re hopping between projects (or jobs) almost constantly; how can anyone remember all of the “when I get time, I need to get back to that” demands on them?

Continue reading→

A close-up on a stack of US currency

Steal This Idea: Campaign Contribution Visualizer

In the same vein as my idea for a Social Media Analyzer tool, my interest in politics also brought up another question: why isn’t there an easy way to see who — at a local level — is supporting different candidates?

Legally, political campaigns have to disclose who their donors are. After all, money often buys influence, and an elected officials’ constituents have the right to know for whom their representative might be working.

Naturally, there are all kinds of sneaky ways to get around these rules (search “dark money” for more on that topic), but at the local-level it’s good to know who has the ear of your local representative.

In the state of Ohio, we have a rather simple system where raw campaign contribution data is available for downloading and searching, but there isn’t an easy way to see (for instance) what counties are supporting which candidates.

Continue reading→

An aisle overflowing with books

Steal This Idea: Social Media Analyzer

After the 2018 mid-term elections proved to be rather disappointing for the state of Ohio, I toyed with the idea of running for public office. It’s still not something I’ve ruled out, but the emotions it all stirred up got me thinking about campaign-oriented technology.

I started thinking about what tools might benefit a younger, progressive candidate and I realized that social media can be a tremendous asset or a tremendous liability.

People my age (early 30s) are the first ones to really enter adulthood in the age of social media; I joined Facebook when it was first rolling out to select Universities, and had been blogging and on MySpace throughout high school.

Unfortunately, when you put yourself into the public eye, you must expect some level of scrutiny. Old Tweets posts will be dug up, tagged photos will be scrutinized, and Facebook posts from your 21st birthday will be surfaced. If you’re not doing this research ahead of time, you can be damn sure your opposition will.

Continue reading→

A drawing of a lightbulb pinned to a corkboard

Please Steal These Ideas

A few years ago, I wrote a blog post with an idea for a “Be Your Own Barista” bar at coffee shops and hotels. I don’t know whether or not anyone picked it up and ran with it or not (if so, please let me know!), but thought process behind that post was essentially “hey, I have an idea but no means/interest in taking it to fruition.”

Today, I have a personal Trello board filled with ideas. A lot of them are potential software libraries or products, but I occasionally dip outside of the realm of programming.

The problem is that I don’t have time to do them all.

Continue reading→

Stacks of vintage, sepia-toned photographs

Paid Support for Legacy Libraries

A few weeks ago, I was talking to my good friend Eric Mann about an open-source package he maintains. This particular package has quite a number of downloads and active users, despite Eric trying to abandon it a few years ago. He’s since restarted development on it, but now he faces a problem: people are upset that he’s dropped legacy PHP version support.

This particular package is popular within the WordPress ecosystem, which is big on backwards compatibility. Despite the fact that both PHP 5.6 and 7.0 stopped receiving even security updates at the end of 2018, there are still plenty of users out there running their applications in old, insecure versions of PHP. As a result, some people were rather upset when Eric stated “I’m not going to spend my [limited] time supporting EOL’d versions of PHP.”

Some commenters were quick to jump in with remarks ranging from “well, it doesn’t take that much time to support older versions of PHP…” to “WordPress supports older versions of PHP, so should you!”, but Eric remained firm: if you want support for older versions of PHP, you can either pay me for my time or contribute the code yourself.

It may sound a little harsh, but I’m 100% with Eric on this one: he doesn’t owe anybody his time and effort. That’s time he could be spending with his family, out hiking, or working on projects that he enjoys. Heck, knowing what Eric can do, back-porting support for old versions of PHP should be way down on his list of priorities.

Continue reading→

A Chemex pour-over being prepared in a coffee shop

Steal this Idea: “Be Your Own Barista” Bars

Last week, I went to New York City for my very first time. The city was amazing: iconic landmarks, outstanding food, and a mix of people from all walks of life. I don’t think I could see myself living in New York, but I’d happily go for a vacation at the drop of a hat.

One thing that struck me, however, was the lack of great coffee. Perhaps it was just my neighborhood (Tribeca), but even great shops like La Colombe Coffee offered an espresso bar or drip coffee. No pour-overs, no French Press, nor Chemex; my choices were coffee-plus-something or black coffee that’s been sitting in an airpot. It wasn’t until a colleague and I wandered into Everyman Espresso that I was actually able to get a Chemex, and it blew every other coffee I had that week out of the water.

Continue reading→

On Price Matching

Tonight I made a rare venture to my nearby shopping mall to pick up some near-last-minute Christmas presents, namely Assassin’s Creed Rogue for my brother. My first stop was Target (as I needed to get a few other things), but I came up empty handed with respects to the game. Begrudgingly, I wandered over to the nearby video game retailer, which was filled to the brim with teenagers and younger twenty-somethings feeding their gaming habits so hard there were practically needles sticking out of their arms.

Continue reading→

Be excellent to each other.