Backing away from GCP

I finally got a working prototype of my journal recommender project up and running; I just shared it with a few co-workers yesterday. However, it has been a bit of a journey to get here: I was only able to get the project finished by backing away from Google Cloud Platform. I won’t dwell on my complaints with GCP; instead I want to focus how I got out of my predicament.

Basically, I solved the problems that were dogging the recommender project by returning as much as possible to python. One of the reasons that I found Google Cloud Platform so frustrating was because I had to do a lot of work outside of python.

The solution was to run the project on PythonAnywhere instead. The reason PA worked for me was that I could solve my problems directly in python, in the shell. For the most part, there were no additional layers of complexity. GCP is a much more comprehensive offering, but I’m fine with a more simple tool like PA if it means I can get my work done effectively.

Posted in google, python, pythonanywhere | Comments closed

Some things are harder remotely

I know there has been a lot of talk about how people will continue to work from home, even after the virus fades. This seems mostly sensible. I find I can do most of my job from home quite well, thank you. Of course teaching and reference are more difficult remotely, but the rest is quite manageable with very little disruption.

What I had not foreseen was that generating new project ideas would be so hard. I’ve been at a loss to come up with new interesting projects since WFH started. Apparently I need in-person conversations with my fellow librarians to do this. Needless to say, I look forward to eventually being back in the office, so that we can dream up new ideas together again.

Posted in projects, remote | Comments closed

Beginning again

The past few months have been humbling for me, programming-wise. I’ve struggled a lot with Google Cloud Platform, without much success. It’s been frustrating. It has also forced me to re-evaluate my progress as a programmer.

The real issue has been that I failed at being a self-reliant problem solver. It’s one of the hallmarks of a good technologist to be able to break down and solve technical problems, and I haven’t been able to do that with Google Cloud Platform. Not for lack of trying. I’ll spare you the details, but to sum up, I failed to build the thing I wanted to using GCP.

This isn’t the end of the world, but the failure has irked me. So for now, I’ve retreated from ‘ops’ to just work in Python, which is safe and familiar.*

Anyhow, all of this has sparked some self-reflection, and made me think a lot about why I want to program in the first place. Ultimately, my reason is that programming can provide us with opportunities to do all kinds of things we couldn’t do previously. And the experience of the expansive possibilities of programming usually comes early on in the coding journey.

So I’m going to focus on beginnings, and the power of learning. Hopefully, it can help me tap into the sense of potential that comes with learning; and to try to share it.

* maybe I’ll try again with GCP at some point.

Posted in google, learning | Comments closed


Sometimes, it’s important to enjoy coding for it’s own sake. It can be fun to solve problems and bend your brain a bit. Work doesn’t always offer this. Sometimes work is, well, work. That’s why this weekend I’ve been spending time with checkio. Checkio is a programming puzzle site, where the only goal is to solve puzzles to unlock other puzzles. In a strict sense, it’s not a productive use of my time, but it makes me happy.

Posted in learning | Comments closed

The (much needed) back burner

Some technology projects really test my patience and stamina. Either they’re too advanced for me, or they use badly-documented technology that’s hard to work with. There is sometimes an upside to this frustration: it’s good for me to try things that are difficult or at the limits of my skill set.

But it’s also nice have an easier project on another burner, to turn to when things get too frustrating.

Lately, I’ve been really annoyed with Google Cloud Platform. Almost furious, at times. I frequently need to walk away and decompress. So to take a break, I started setting up a Raspberry Pi to store backups on my home network. The stakes are lower; the problems are easier (for now). It’s nice to step away from the frustrating stuff, at least for a bit.

Posted in Uncategorized | Comments closed

There be dragons…

For a beginner trying to solve a programming problem, there is a lot of readily Googleable help. You can usually solve your problem with very clear, specific, and accessible instructions.

Things are different a bit further down the programming path. As the problems become harder, the solutions become less obvious. For example, I now might spend more time trying to tease a solution out of rambling GitHub issues. This involves a different sort of problem solving skill; it’s more focused on building something out of your own knowledge mixed with a few insights from others in similar situations. Sometimes it goes well, sometimes it doesn’t. It can be time consuming.

The upside is that this problem solving approach can sometimes produce solutions instead of just solving bugs. The feature you want may not exist, and your solution may make an useful contribution back to the upstream project. It’s one way to start giving back, by solving problems for others.

Posted in learning | Comments closed

Preliminary thoughts on Google Cloud Platform

As I mentioned in an earlier post, I was granted a bunch of Google Cloud Platform credits. I’ve started using them, and here are my initial thoughts:

  1. There is a Cloud Platform service for most of the use cases I can imagine for my project. This means that there are a lot of options to consider.
  2. It’s already becoming clear that there’s a fair bit of platform lock-in, even if you only consider the technical debt incurred by shoehorning existing code into Google services.
  3. The costs are about in line with what I expected. I’ve been coding against the platform pretty intensively for three weeks now, and it has cost me $43.32 in credits so far. In brief, more than I’d be willing to spend from my own pocket. I’m quite willing to spend the credits they’ve given me, though.
  4. Ironically, some of these tools are very hard to google! Good luck getting precise technical help when searching terms like “google cloud function”!
Posted in google | Comments closed


I started working with Python around version 3.3, which predates the addition of asynchronous features into the language’s standard library. Asynchronous programming in Python has come a long way since then; it is now a well-established feature of the language.

I first wrestled with async on an Amtrak train, on my way home from the Code4Lib conference in 2018. I remember it being a bit daunting. For me, the transition to an asynchronous mindset was made easier by starting with trio, an aysnc library with metaphors that are – in my opinion – much simpler than those used by the more common asyncio library.

The value of async is that unlocks some programming problems that would not otherwise be solvable in a reasonable amount of time. For example, do you have a lot of requests to make across the network all at once? Async will make that way faster for you than waiting on each request to finish synchronously. It’s a valuable tool in the Python programmer’s toolkit. If you have not had a chance to dive into this yet, I encourage you to give it a try!

Posted in async, python | Comments closed

Unexpected funds

I recently found out that I got funding from Google for my journal recommender project. More than I expected, too. I had hoped to receive maybe $200 or $300 of Google Cloud Platform credits, but they gave me $5000 in credits, which was quite a surprise.

This is good news for this project, because it allows me to try out some technical solutions and optimizations that would not have been possible if I were spending my own money (or CUNY’s money). Hopefully, it will allow me to create a better public-facing journal recommender tool than I could have otherwise.

I’ll try to be pragmatic about what this funding can do for this project, while keeping in mind some of the drawbacks of leaning on Google. Specifically, there are vendor lock-in risks and user privacy risks that come with using Google products. It’s best not to lose sight of these problems. Keeping those in mind, the credits give me a chance to experiment with approaches to project infrastructure without having to worry too obsessively over cost. That is welcome news.

Posted in doaj, google, journal recommender | Comments closed

Further into hardware

I used to really dislike computer hardware. It seemed like it always cropped up as an inconvenience or annoyance when I was trying to do something with code. I preferred the abstractions and ephemeralness of software to the inconvenience of physical things.

More recently, my thoughts on this have been changing. In part, I’m realizing how essential the physical stuff is to working with computers. This should be obvious but I’m a bit slow to catch on.

I’m learning from the good folks at sdf.org, who are in general way more hardware-oriented than I am. Their joy at hacking on hardware is contagious. I have a lot to learn, but I’m excited about it.

Posted in hardware, learning | Comments closed
Need help with the Commons? Visit our
help page
Send us a message
Skip to toolbar