RSSAmplifier

Blog

Ray Berger's Blog

Ray Berger's Blog

blog.rayberger.orgRSS feed ↗20 posts

Latest posts

A Faster Way to Save Links to Notion (or any API) on Android

Notion isn't exactly known as a speed demon... On Android it can take 30+ seconds to share a URL to the Notion app. It's faster to paste the link in the Notion app directly. I know because I do it 10-

Caring for My Father Online

When dad’s phone died I was the first one mom called for help. She always apologizes when calling for help. I’m not sure if she’s just being polite or she really doesn’t know the joy it brings me to b

Mapping Thrift Stores vs. Median Household Income in San Francisco

Last year, I learned QGIS through the GIS and Spatial Analysis for Urban Practitioners course by All Things Urban. This year, with free Udemy access via SFPL, I'm looking to expand my skills. First, I dug up my old final project to revisit and share....

How to Convert Strings to Wikidata QIDs

TLDR: I made a tool to do this: Wikidata string to QID tool (source). Bulk adding information to Wikidata by hand is a pain. I have an idea for creating a map of MVNOs (mobile virtual network operators) and their ownership (AT&T owns Cricket, Verizon...

Does FlixBus have free WiFi? (Yes, 250MB)

Friends often joke about how bad FixBus is but none of the ~10 rides I've been on were particularly unpleasant. In fact, this most recent bus even had 250 MB of free WiFi. I didn’t bother using it but I found it to be an amusingly small amount for a ...

Do Third-Party Launchers Work Well on Android 16? (yes)

Short answer: Yes, third-party launchers work great on Android 16. The update has resolved most of the issues I encountered with third-party launchers on Android 15 while using my Pixel 7. Long answer: The state of custom launchers on Android 15 was,...

Building a FastAPI or Flask app in Coolify with UV

So, you want to start a new Python app for Coolify with the latest and greatest tools? Here’s how to do it. At the end of the day, the process is relatively simple. However, despite having worked with all of these tools on existing projects, I hadn’t...

Presenting the OpenLibrary <> Wikidata Integration at Data Reuse Days 2025

I was invited to speak at Data Reuse Days 2025 and presented on February 27th. My talk was titled "169k Reasons to Care: Wikidata’s Role in Open Library Author Pages." I was finally inspired to post about it after visiting Orlando Code Camp. Because ...

Orlando Code Camp 2025

I went to Orlando Code Camp on Saturday, primarily because my friend Diane was presenting, but also because I wanted to make new friends and reconnect with my techy side. Wow, did I succeed in those goals! Diane introduced me to her friend Lizzie, wh...

Polishing Nextcloud Tasks

Background Nextcloud is an open-source alternative to Google Drive. I use it because I value control over my data and appreciate its use of open standards. While many people complain about Nextcloud, if they invested that time in reporting issues or ...

Vue Migration Part 2 - A Simple Solution Emerges

In Part 1 of our Vue migration journey at Open Library, I expressed frustration with the tooling's lack of support for our specific use case. However, I'm pleased to report that we've found an elegant solution. You can view the final implementation i...

2024 in Review

Previously: 2023 in Review I want to be better at reflecting and want to remember these wonderful years. So here I am, at the end of January, writing my 2024 in review. I was inspired by Steve and Shreyans’ blog posts and actually finishing the YearC...

Migrating Web Components from Vue 2 to Vue 3 at Open Library

Update Feb, 2025: Vue Migration Part 2 - A Simple Solution Emerges TL;DR: Migrating Vue 2 Web Components to Vue 3 isn't as straightforward as the docs suggest. We tackled three main challenges: setting up Vite builds, managing multiple components, a...

Cleaning Up Legacy Data: From Wikipedia Links to Wikidata IDs in Open Library

Software developers often avoid maintenance work, partly because companies rarely incentivize it. This is one reason why some tech companies have a reputation for abandoning products after launch. But maintenance is important, which is why I'm doing ...

A Morning in Bogota

What does a morning in Bogotá look like for me? This photo captures a snapshot of my daily life over the past few months. For breakfast, I cooked a rice paper omelet, topped with habanero-mayonnaise and a drizzle of agave syrup. Green onions were sor...

My First Wikidata QuickStatements Project: Documenting Professors at Eckerd College

I love my alma mater, Eckerd College, and I recently discovered EC Scholar, a website that showcases faculty research profiles and publications. This seemed like a good opportunity for me to learn about QuickStatements, a Wikidata tool that particula...

Google Gemini Can Create Past Calendar Events (Finally!)

A small but significant update caught my attention recently: Google Gemini on Android can now create calendar events in the past. This might seem like a minor feature, but I've been waiting for it for a long time. A Trip Down Memory Lane Back when th...

How to Add a Brand Preset to OpenStreetMap

TLDR: Learn how to add brand presets to OpenStreetMap by following the official Name Suggestion Index contribution guide. A video tutorial demonstrating this process is available here. Introduction Brand presets help OpenStreetMap editors like iD, Ev...

Emergent City Review: The Messiness of Urban Development

What happens when a neighborhood wants to turn its manufacturing district green and the property owners want to turn it into retail space? This is the tension that the documentary Emergent City explores and unravels alongside the neighbors, property ...

Wikidata and the 2024 Open Library Community Celebration

Every October, Open Library hosts a community celebration where volunteers showcase their work from the past year. I had the pleasure of presenting at this year's celebration and would like to share my presentation here. On a side note, during my rec...