GoLinks
What are GoLinks? GoLinks are short URL-like links that follow the form: go/some/path that you can enter in your browser address bar (or anything that resolves a hostname) to be redirected to a well-known web resource. They’re similar to a BitLy URL, except that they follow generally use a friendly, easy to remember and type path (ie. go/zurns-blog or go/2025-goals). They’re pretty popular in big tech companies (Google being a big user of them), and likely between that (we’ve all heard the ‘insert high tech company here does it, so we should too’ line of reasoning) and how great they actually are (I’m not saying that not all high tech trends aren’t worth adopting), SaaS providers are now offering a this functionality as a service. Having to share your potentially private URLs with a third-party (and pay to do it) might deter you though, as it did myself, especially when it’s breeze to host a local GoLinks provider on your own machine. This post aims to help you do exactly that, all in a few dozen lines of code and commands. ...
Using Spring Data to Abstract Data Sources (Spanner and Biquery JDBC)
Most software engineering practioners that use Spring will be aware of the power of abstraction that Spring Data can provides to greatly reduce time taken and the amount of code necessary to interact with an application’s database. Most will probably also realize that the abstraction provides a degree of freedom in shifting to different data sources with minimal amount of code changes (generally importing a different dependency and potentially some modifications to the entity/POJO classes that are used to define the structure in the database). But what about using multiple Spring Data data sources in the same application that reuse much of the entity/POJO classes to efficiently provide access to different databases that serve different business use cases, such as fast paths of data access for hot data and slower paths for historical data? Maybe we need to store recent data in a database with faster access, and older data in a cheaper (slower) database (and maybe the database we select for our fast access doesn’t have the ability to run on cheaper, slower spinning disks). Using Spring Data Spanner (using an underlying JPA implementation) and Spring Data JDBC with a JDBC library for GCP BigQuery, we can serve up a consistent interface to our application (latency witholding) to our application data while preserving all the great benefits we get from Spring Data, as we’ll see below. ...
Blog Ideas
Some random blog ideas Testcontainers for contract-based testing of services HttpBin + TestContainers for HTTP-based unit testing Spring Boot + Graal + Datadog Java Agent Spring Boot + Graal + Micrometer + OTEL Spring Boot + Kotlin + HAPI FHIR for EHR Integrations Spring Boot + Spring Data Spanner + Spring Data JDBC (BigQuery) for Data Source Abstraction VisualVM + K8s for JVM Profiling
Coming Soon
More to come…