Ralph's Bloghttps://golb.hplar.ch/2024-01-06T18:07:33+01:00Blog about this and thatRalphA look at Angular's ngFor directive2017-12-05T08:42:24Zhttps://golb.hplar.ch/2017/01/A-look-at-Angulars-ngFor-directive.htmlA look at Angular's ngFor directiveRalphConsume Protocol Buffer messages with Ionic2018-12-01T19:50:35Zhttps://golb.hplar.ch/2017/01/Consume-Protocol-Buffer-messages-in-Ionic-2.htmlConsume Protocol Buffer messages with IonicRalphForm validation with Angular and Spring Boot2018-12-04T17:45:49Zhttps://golb.hplar.ch/2017/01/Form-validation-with-Angular-and-Spring-Boot.htmlExample of form validation in an Ionic application. How to create custom synchronous and asynchronous validators and how to validate data on the server with the Java Bean Validation framework.RalphHot deploy updates to Ionic / Cordova apps with Ionic Appflow Live Deploy2018-12-07T22:48:30Zhttps://golb.hplar.ch/2017/01/Hot-deploy-updates-to-Ionic-2-apps-with-Ionic-Deploy.htmlHot deploy updates to Ionic / Cordova apps with Ionic Appflow Live DeployRalphJavaScript Date and moment.js2017-10-25T16:29:52Zhttps://golb.hplar.ch/2017/01/JavaScript-Date-and-moment-js.htmlJavaScript Date and moment.jsRalphProduce RSS and Atom feeds with Spring framework2018-02-16T20:10:54Zhttps://golb.hplar.ch/2017/01/Produce-RSS-and-Atom-feeds-with-Springframework.htmlHow to create RSS and Atom feeds with the Spring Framework and the ROME libraryRalphProtocol Buffers with Spring Integration2017-12-23T09:24:49Zhttps://golb.hplar.ch/2017/01/Protocol-Buffers-with-Spring-Integration.htmlProtocol Buffers with Spring IntegrationRalphStoring data with localStorage and Lockr2017-06-19T11:37:13Zhttps://golb.hplar.ch/2017/01/Storing-data-with-localStorage-and-Lockr.htmlStoring data with localStorage and LockrRalphIntegrate ECharts into an Ionic app2018-09-29T11:00:57Zhttps://golb.hplar.ch/2017/02/Integrate-ECharts-into-an-Ionic-2-app.htmlIn this post, we look at a way to display charts from the ECharts library in an Ionic appRalphJWT Authentication with Ionic/Angular and Spring Boot2018-12-07T11:00:57Zhttps://golb.hplar.ch/2017/02/JWT-Authentication-with-Ionic-2-and-Spring-Boot.htmlHow to implement a JWT authentication system with Ionic/Angular and Spring Boot.RalphLovefield, a SQL database engine for the web2018-11-29T13:00:35Zhttps://golb.hplar.ch/2017/02/Lovefield-a-SQL-database-engine-for-the-web.htmlA short introduction to Lovefield, a JavaScript SQL database engine.
And how to build an Ionic app that uses Lovefield as database access layer.RalphSecure Todo app with Ionic2018-12-06T12:53:37Zhttps://golb.hplar.ch/2017/02/Secure-Todo-app-with-Ionic-2.htmlIn this post, we create a Todo application with Ionic that stores the data encrypted in the client storage.
asmcrypto.js is used as the cryptographic library and we have a look at the Web Crypto APIRalphSending push messages from Spring Boot to Ionic over FCM2020-03-31T08:00:00Zhttps://golb.hplar.ch/2017/02/Send-messages-from-Spring-Boot-to-Ionic-2-over-FCM.htmlThis post describes how a Spring Boot can send messages over FCM to an Ionic / Cordova appRalphUpload files from Java to a Minio server2018-02-16T20:10:54Zhttps://golb.hplar.ch/2017/02/Upload-files-from-Java-to-a-Minio-server.htmlIn this article, we take a closer look at Minio, a self-hosted S3 compatible server, and how to connect a Java application to it.RalphUploading files from Ionic / Cordova to Minio / S32018-12-06T12:10:54Zhttps://golb.hplar.ch/2017/02/Uploading-files-from-Ionic-2-Cordova-to-Minio-S3.htmlHow to upload files from an Ionic / Cordova app directly to a Minio server or Amazon S3 with pre-signed URLs.RalphUploading pictures from Ionic / Cordova to Spring Boot2018-12-06T12:10:37Zhttps://golb.hplar.ch/2017/02/Uploading-pictures-from-Ionic-2-to-Spring-Boot.htmlIn this article, we create an Ionic application where the user can take a picture, and the app uploads it to a Spring Boot application.RalphServer-Sent Events with Spring2018-02-16T20:10:54Zhttps://golb.hplar.ch/2017/03/Server-Sent-Events-with-Spring.htmlWhat are Server-Sent Events and how can you send them from a Spring Boot applicationRalphA closer look at IndexedDB2017-10-30T08:06:24Zhttps://golb.hplar.ch/2017/09/A-closer-look-at-IndexedDB.htmlIndexedDB, the database in the browser. How does it work and what can you do with it.RalphA closer look at the Web Cryptography API2018-12-04T08:18:01Zhttps://golb.hplar.ch/2017/09/A-closer-look-at-the-Web-Cryptography-API.htmlCreating a trivial password manager with the Web Cryptography API and the Ionic framework.RalphDo it yourself Multi Value Map with Java 82017-10-25T16:41:18Zhttps://golb.hplar.ch/2017/09/Do-it-yourself-Multi-Value-Map-with-Java-8.htmlHow to create a simple MultiValue Map with Java 8RalphOffline capable Ionic Web App with IndexedDB2018-12-03T08:41:52Zhttps://golb.hplar.ch/2017/09/Offline-capable-Ionic-Web-App-with-IndexedDB.htmlExample of an Ionic web application that stores data in an IndexedDB and works offline.RalphPluggable file systems in Java2018-02-16T20:10:54Zhttps://golb.hplar.ch/2017/09/Pluggable-file-systems-in-Java.htmlHow to use pluggable file systems in Java and a look at implementations outside the standard libraryRalphSpring Boot and Ionic application development with OpenAPI2018-12-04T10:10:54Zhttps://golb.hplar.ch/2017/09/Spring-Boot-and-Ionic-application-development-with-OpenAPI.htmlIn this blog, we create REST services in Spring Boot and consume them in an Ionic app.
We use the OpenAPI specification for generating API documentation and the client TypeScript code.RalphUpload files from Ionic to Spring Boot with Flow.js2018-12-04T10:41:52Zhttps://golb.hplar.ch/2017/09/Upload-files-from-Ionic-to-Spring-Boot-with-Flow-js.htmlA closer look at the Flow.js JavaScript library that helps upload files from a browser to the server.
Flow.js is a JavaScript library providing multiple simultaneous, stable, fault-tolerant, and resumable/restartable file uploads via the HTML5 File API.RalphDeveloping a self-hosted location tracker2018-12-05T10:10:54Zhttps://golb.hplar.ch/2017/11/Developing-a-self-hosted-location-tracker.htmlIn this blog post, we create a self-hosted location tracker that consists of three parts. An Ionic/Cordova application that continuously sends the current location to a Spring Boot application from where the locations are broadcasted to a website and visualized on Google Maps. RalphDynamically loading position data with Ionic and Spring Boot2018-12-03T10:53:24Zhttps://golb.hplar.ch/2017/11/Dynamically-loading-position-data-with-Ionic-and-Spring-Boot.htmlIn this blog post we create an Ionic app that dynamically requests location data points from a
Spring Boot server and displays them on an OpenStreetMap map. The data points are stored in a
MongoDB database, and we take advantage of the geospatial query support to read the data points only for a certain area.RalphAdding speech recognition to an Ionic App2019-07-16T21:10:54Zhttps://golb.hplar.ch/2017/12/Adding-speech-recognition-to-an-Ionic-App.htmlIn this blog post I present three different way how to integrate a speech recognition functionality into an Ionic app.
With a Cordova plugin, the Web Speech API and with RecordRTC and the Google Cloud Speech API.RalphA closer look at date-fns2019-08-22T10:03:45Zhttps://golb.hplar.ch/2018/01/A-close-look-at-date-fns.htmlA closer look at the date-fns date/time library. Compare it with Moment.js and look at a few examples.RalphA closer look at the Cache API2018-01-09T16:54:25Zhttps://golb.hplar.ch/2018/01/A-closer-look-at-the-Cache-API.htmlExplore the provided methods of the Cache API that is primarily used in Service Workers to cache assets, but can be used anywhere as a general-purpose cache.RalphCustom SVG icons with Ionic2018-12-01T16:03:45Zhttps://golb.hplar.ch/2018/01/Custom-SVG-icons-in-Ionic.htmlHow to use arbitrary SVG icons in IonicRalphIndexedDB programming with Dexie.js2018-01-12T08:45:39Zhttps://golb.hplar.ch/2018/01/IndexedDB-programming-with-Dexie-js.htmlIn this blog post, I give you an overview of Dexie, a minimalistic wrapper library for IndexedDB.
Write simpler and more concise IndexedDB code with Dexie.
RalphIntegrate Parcel into a Maven project2021-10-31T06:00:00Zhttps://golb.hplar.ch/2018/01/Integrate-Parcel-into-a-Maven-project.htmlAn example project that integrates a front end JavaScript application with the Parcel bundler
and a Spring Boot application built with Maven into one project and ultimately create one executable JAR.RalphSelf-host Polyfill.io2023-02-02T06:00:00Zhttps://golb.hplar.ch/2018/01/Self-host-Polyfill-io.htmlA short tutorial on how to self-host Polyfill.io on UbuntuRalphSending Web push messages from Spring Boot to Browsers2018-12-07T12:31:07Zhttps://golb.hplar.ch/2018/01/Sending-Web-push-messages-from-Spring-Boot-to-Browsers.htmlIn this blog post I show you how you can send push messages from a Spring Boot application over Firebase Cloud Messaging (FCM) to connected clients with the Web Push API. The Push API is part of the Service Worker specification and does not depend on any native plugins. RalphUsing Dexie.js in a TypeScript application2018-12-03T08:50:52Zhttps://golb.hplar.ch/2018/01/Using-Dexie-js-in-a-TypeScript-application.htmlIn this blog post I present a way to use Dexie in a TypeScript applicationRalphAccess Server-sent events from Java2018-02-26T13:00:00Zhttps://golb.hplar.ch/2018/02/Access-Server-Sent-Events-from-Java.htmlHow to consume Server-sent events in a Java application.RalphConditionally load polyfills2018-02-14T13:00:00Zhttps://golb.hplar.ch/2018/02/Conditionally-load-polyfills.htmlTwo examples of how you can conditionally load polyfills in a JavaScript applicationRalphHuman readable regular expressions2018-02-27T18:00:00Zhttps://golb.hplar.ch/2018/02/Human-Readable-Regular-Expressions.htmlWriting human readable regular expressions with the VerbalExpression libraryRalphReal-Time Polling App with Java and JavaScript2021-10-31T06:00:00Zhttps://golb.hplar.ch/2018/02/Real-time-polling-app.htmlIn this blog post, we create a simple polling application with Java and JavaScript and send real-time updates with server-sent eventsRalphWorking with MongoDB Capped Collections from Java2018-02-05T06:29:02Zhttps://golb.hplar.ch/2018/02/Working-with-MongoDB-Capped-Collections-from-Java.htmlA brief overview of capped collections in MongoDB and how to access them from JavaRalphWorking with MongoDB TTL Indexes from Java2018-02-05T07:10:55Zhttps://golb.hplar.ch/2018/02/Working-with-MongoDB-TTL-Indexes-from-Java.htmlA brief introduction to time to live indexes in MongoDB and how to access them from JavaRalphSearching "Have I Been Pwned?" passwords locally with Java2023-03-11T12:11:54Zhttps://golb.hplar.ch/2018/03/Local-search-Have-I-Been-Pwned-with-Java.htmlIn this blog post, we're going to create Java applications that download and search the "Have I Been Pwned?" password list with over 840 million passwords.RalphCheck for commonly used or compromised passwords2018-05-03T20:00:00Zhttps://golb.hplar.ch/2018/05/Check-for-commonly-used-or-compromised-passwords.htmlIn this blog post, I present four examples of how you can implement password checks for commonly used or compromised passwords.RalphOAuth 2.0 server-to-server authorization flow between a Java application and a Google service2018-05-01T19:00:00Zhttps://golb.hplar.ch/2018/05/Google-OAuth2-Server-to-Server-with-Java.htmlHow a Java server application can complete the server-to-server OAuth 2.0 flow and access a Google serviceRalphA closer look at the Background Sync API2018-06-26T19:00:00Zhttps://golb.hplar.ch/2018/06/background-sync.htmlThis blog post takes a closer look at the Background Sync API, part of the service worker implementation, and presents an example that uses Background Sync to synchronize data between an Ionic web application and a Spring Boot server application.RalphBackup to Amazon S32022-02-04T03:10:54Zhttps://golb.hplar.ch/2018/06/backup.htmlHow to install a backup job that runs daily and sends files to Amazon S3RalphPutty, a free Windows SSH client2018-06-10T08:05:00Zhttps://golb.hplar.ch/2018/06/putty.htmlA quick introduction to the free Windows SSH client Putty. How you can connect to an SSH server and how to set up public/private key authentication.RalphSparkleShare, a self-hosted GDrive, OneDrive, Dropbox alternative2018-06-12T12:00:00Zhttps://golb.hplar.ch/2018/06/self-hosted-gdrive-onedrive-dropbox-alternative.htmlIn this tutorial, we look at SparkleShare, a self-hosted, instant and secure file synchronization serviceRalphInstall a self-hosted Git server with Gitea2022-02-03T05:10:54Zhttps://golb.hplar.ch/2018/06/self-hosted-git-server.htmlIn this tutorial, I show you how to self-host a Git server with GiteaRalphSending emails from your Linux server2018-06-16T06:00:00Zhttps://golb.hplar.ch/2018/06/send-only-email.htmlIn this tutorial, I present two ways how to send emails from your self-hosted Linux server. A configuration with SSMTP that relies on a 3rd party mail server and an example with exim4, a self-hosted SMTP server.RalphFirst configuration steps on a new VPS Server2018-06-10T08:00:00Zhttps://golb.hplar.ch/2018/06/vps-setup-first-steps.htmlA description of initial configuration steps after renting a new VPS serverRalphAngular project with Workbox service worker2020-03-30T18:00:00Zhttps://golb.hplar.ch/2018/06/workbox-serviceworker-in-angular-project.htmlThis tutorial describes how to integrate a service worker written with the Workbox library, into an Angular applicationRalphTileServerGL, a self-hosted map tile server with OpenStreetMap data2022-02-01T17:00:00Zhttps://golb.hplar.ch/2018/07/self-hosted-tile-server.htmlIn this article, I show you how to self-host TileServerGL, an open-source tile serverRalphA closer look at the Beacon API2018-09-05T10:00:00Zhttps://golb.hplar.ch/2018/09/beacon-api.htmlThe Beacon API in the browser can be used to transfer data to a server. Its primary use case is to send analytics data during the unload event of a web page. In this blog post, we're going to look at the API and create some examples that use the Beacon API to send data to a server.RalphBigInt, arbitrary precision integers in JavaScript2018-09-03T20:00:00Zhttps://golb.hplar.ch/2018/09/javascript-bigint.htmlA closer look at the ES2020 numeric primitive BigIntRalphGlobal error handler in Angular2018-10-05T11:00:00Zhttps://golb.hplar.ch/2018/10/global-errorhandler-angular.htmlHow to install a global error handler in an Angular application and send error reports to a back end. The blog post shows you how to collect error reports while the application is offline and send them to a back end as soon as the device is back online.RalphText to speech with Google Cloud Text-to-Speech2018-10-04T10:00:00Zhttps://golb.hplar.ch/2018/10/google-cloud-text-to-speach.htmlConverting text from a web application into speech with Google Cloud Text-to-SpeechRalphInstalling WireGuard on Amazon Lightsail2018-10-11T10:00:00Zhttps://golb.hplar.ch/2018/10/wireguard-on-amazon-lightsail.htmlInstalling WireGuard, a simple, fast, and modern VPN, on Amazon Lightsail virtual server and connect an Android mobile device.RalphUsing the Background Sync API with the Angular service worker2018-12-09T22:00:00Zhttps://golb.hplar.ch/2018/12/background-sync-ng.htmlIn this blog post, we look at a way to use the Background Sync API together with Angular's service worker. Or, in general, how to add custom service worker code to a generated Angular service worker.RalphGoogle Cloud Vision and Storage example with Ionic and Spring Boot2018-12-11T10:00:00Zhttps://golb.hplar.ch/2018/12/google-vision-storage-example.htmlThis blog post shows you a way to upload pictures from a web application to Google Cloud Storage and run them through Google Cloud Vision. The application uses Ionic for the front end and Spring Boot for the back end. It utilizes signed URLs for permitting the client to upload pictures directly from the web application to Google Cloud StorageRalphSelf-host Bitwarden, an online Password manager2018-12-12T20:00:00Zhttps://golb.hplar.ch/2018/12/self-host-bitwarden.htmlIn this article, we're going to self-host Bitwarden, an open-source Password Management solution, and install it on an Ubuntu 20.04 serverRalphBuilding a simple neural network with Java and JavaScript2018-12-23T12:00:00Zhttps://golb.hplar.ch/2018/12/simple-neural-network.htmlCreating a simple feedforward neural network in Java and JavaScript, based on the algorithms of Tariq Rashid's book "Make Your Own Neural Network"RalphReal-time messaging with Cettia and Spring Boot2019-01-28T16:25:00Zhttps://golb.hplar.ch/2019/01/cettia-springboot.htmlGetting started with Cettia, a real-time web framework, and Spring BootRalphExpose server behind NAT with Tor2019-01-10T20:00:00Zhttps://golb.hplar.ch/2019/01/expose-server-tor.htmlIn this blog post, I'm going to show you how to make services, installed on a server behind a NAT/Firewall, accessible from everywhere with the Tor networkRalphExpose server behind NAT with WireGuard and a VPS2019-01-10T20:00:00Zhttps://golb.hplar.ch/2019/01/expose-server-vpn.htmlIn this blog post, I'm going to show you how to set up a WireGuard VPN between a computer, located behind a NAT/Firewall, and a VPS in the cloud to expose services running on the private server to the Internet and make them accessible from everywhereRalphA closer look at the Java 11 HTTP Client2019-01-23T20:00:00Zhttps://golb.hplar.ch/2019/01/java-11-http-client.htmlIn this blog post, we will take a closer look at the new HTTP Client introduced in Java 11.RalphGetting started with jOOQ, Flyway, and Spring Boot2019-01-31T20:00:00Zhttps://golb.hplar.ch/2019/01/jooq-flyway-springboot.htmlIn this blog post we are going to set up a Spring Boot application with jOOQ and FlywayRalphJavaScript BigInt and JSON2019-01-04T20:00:00Zhttps://golb.hplar.ch/2019/01/js-bigint-json.htmlHow to JSON deserialize and serialize the new JavaScript primitive number type BigInt in a full-stack application with Spring BootRalphSetup a NanoPi Kiosk with Chromium2019-01-05T20:00:00Zhttps://golb.hplar.ch/2019/01/kiosk-mode-nano-pi.htmlIn this blog post I'm going to show you how to set up a kiosk mode with a full-screen Chromium on a NanoPiRalphMachine Learning with brain.js and Tensorflow.js2019-01-04T16:00:00Zhttps://golb.hplar.ch/2019/01/machine-learning-with-brain-and-tensorflow-js.htmlIn this blog post we are going to create two neural networks with brain.js and Tensorflow.js, train the MNIST dataset and use the trained model in a web application to detect digitsRalphNetgear Aircard as Internet gateway with pfSense2019-01-05T15:00:00Zhttps://golb.hplar.ch/2019/01/pfsense-and-netgear-aircard790.htmlHow to connect a Netgear Aircard to a pfSense router and use it as an Internet gatewayRalphUsing pre-trained Tensorflow.js models2019-01-04T12:00:00Zhttps://golb.hplar.ch/2019/01/pretrained-models.htmlIn this blog post we are going to look at tfjs-models (https://github.com/tensorflow/tfjs-models), a collection of pre-trained models with Tensorflow.js that you can simply add and use from your web applicationRalphJavaScript spread and rest syntax examples2019-01-19T15:35:00Zhttps://golb.hplar.ch/2019/01/spread-rest-syntax.htmlA collection of examples with the spread and rest syntax in JavaScriptRalphSpring Boot with TLS and HTTP/2 on localhost2019-01-09T12:00:00Zhttps://golb.hplar.ch/2019/01/spring-boot-with-tls-localhost.htmlIn this blog post, we are going to set up a private root CA with mkcert on our local development machine, create a TLS certificate, and enable Spring Boot to use TLS and HTTP/2. We learn how to configure Charles, an HTTP proxy, to trust this private root CA and we also take a brief look at HTTP/2 push.RalphDirectory watching with Java2019-02-01T12:00:00Zhttps://golb.hplar.ch/2019/02/directory-watch.htmlIn this blog post, we take a look at the capability of Java to monitor directories for changes. A feature that has been introduced a long time ago (2011) in Java 7RalphIntegrate FontAwesome icons in an Angular application2019-08-21T12:00:00Zhttps://golb.hplar.ch/2019/02/fa.htmlThis blog post shows you how to integrate FontAwesome icons into an Angular application with the official Angular JavaScript libraryRalphSelf-host Seafile2022-02-01T03:00:00Zhttps://golb.hplar.ch/2019/02/self-host-seafile.htmlHow to self-host Seafile, an open-source file sync and share software, on a VPS with DockerRalphStateless Authentication with Spring Security2019-05-15T07:00:00Zhttps://golb.hplar.ch/2019/05/stateless.htmlIn this blog post, we are going to implement a stateless authentication system with Spring Security, Spring Boot, and an Angular/Ionic clientRalphPassword auto-login with the Credential Management API2019-06-13T12:00:00Zhttps://golb.hplar.ch/2019/06/credential-management-api.htmlHow to create a frictionless password auto-login experience with the Credential Management API.RalphExposing build information of Spring Boot and Angular applications2019-06-12T16:00:00Zhttps://golb.hplar.ch/2019/06/expose-build-information.htmlHow to expose build information, like version number, build timestamp, git commit information, of Spring Boot and Angular applicationsRalphGoogle Fonts in an Angular / Ionic application2019-06-10T20:00:00Zhttps://golb.hplar.ch/2019/06/google-fonts-download.htmlA tutorial on how to use Google Fonts in an Angular / Ionic app. The blog post presents two approaches. One approach is by linking to the Google Font server, and the second approach shows you how to download Google Fonts and serve them from your web server.RalphSpring Security second-factor authentication with TOTP2020-04-05T20:00:00Zhttps://golb.hplar.ch/2019/06/totp-spring-security.htmlIn this blog post, you learn how to write an authentication system with Spring Security that uses username/password and TOTP (Time-based One-Time Password) as second-factorRalphReliable file uploads over HTTP with tus.io2019-06-11T12:00:00Zhttps://golb.hplar.ch/2019/06/upload-with-tus.htmlHow to integrate tus.io implementations into JavaScript and Java applications to create reliable and resumable file uploads over HTTP.RalphUploading pictures from Capacitor app to Spring Boot2019-06-11T17:00:00Zhttps://golb.hplar.ch/2019/06/uploading-capacitor-spring-boot.htmlHow to take pictures with the Capacitor camera plugin and upload them to a Spring Boot application with Angular's HttpClient and tus.io.RalphVariable length integers2019-06-18T16:00:00Zhttps://golb.hplar.ch/2019/06/variable-length-int-java.htmlHow to encode fixed 4 bytes Java integers into a variable-length format that uses less space.RalphOCR in the browser with Tesseract.js2019-12-30T10:00:00Zhttps://golb.hplar.ch/2019/07/ocr-with-tesseractjs.htmlIn this blog post, we will develop an Angular/Ionic application that runs Optical character recognition (OCR) in a browser with Tesseract.js. This application does not depend on any server-side code, and the recognition process runs locally in the browser.RalphA look at the Page Visibility API2019-07-29T12:00:00Zhttps://golb.hplar.ch/2019/07/page-visibility-api.htmlWhat is the Page Visibility API and how can you access it in web applications. Also, a quick look at the visibilityjs library that simplifies commons tasks with the Page Visibility API.RalphWeb Workers - Basic usage, Angular and Comlink2019-07-31T19:00:00Zhttps://golb.hplar.ch/2019/07/web-workers.htmlIn this blog post, we are looking at the Web Workers API. What problem it solves, and how can we use it in our JavaScript applications. We take a look at the Angular build-time support for Web Workers, and lastly, we take a look at Comlink, a JavaScript library that simplifies Web Workers programming.RalphSetting up WireGuard on Windows2019-07-17T20:00:00Zhttps://golb.hplar.ch/2019/07/wireguard-windows.htmlInstalling WireGuard, a simple, fast, and modern VPN, on Windows and connecting to a WireGuard server.RalphCatch-all SMTP servers for development and testing2019-08-09T07:00:00Zhttps://golb.hplar.ch/2019/08/catch-all-smtp.htmlHow to use a catch-all SMTP server for development and testing email delivery. In this blog post, we are going to look at 6 different catch-all SMTP servers and a Junit 5 example with an embedded catch-all SMTP server.RalphEntity auditing with Hibernate Envers2019-08-05T12:00:00Zhttps://golb.hplar.ch/2019/08/envers.htmlIn this blog post we take a look at Hibernate Envers, a library that provides an easy auditing/versioning solution for entity classesRalphGit with JGit2019-08-04T15:00:00Zhttps://golb.hplar.ch/2019/08/git-with-jgit.htmlIn this blog post we take a look at JGit, a pure Java implementation of GitRalphA look at JSR 374 - Java API for JSON Processing (JSON-P)2019-08-29T09:00:00Zhttps://golb.hplar.ch/2019/08/json-p.htmlIn this blog post, we are going to take a loot at the JSON-P (JSR 374) standard for processing JSON in Java.Ralphky - elegant fetch2019-08-10T13:00:00Zhttps://golb.hplar.ch/2019/08/ky.htmlA closer look at ky, a JavaScript HTTP client for the browser, built on top of the Fetch API. ky adds convenient functions and new features to the Fetch API.RalphRate limiting Spring MVC endpoints with bucket4j2019-08-07T14:00:00Zhttps://golb.hplar.ch/2019/08/rate-limit-bucket4j.htmlHow to rate limit Spring MVC HTTP endpoints with bucket4jRalphCreating a password-less sign-in with WebAuthn, Spring, and Ionic/Angular2019-08-25T04:00:00Zhttps://golb.hplar.ch/2019/08/webauthn.htmlIn this blog post, we will build a password-less authentication system with the FIDO2 WebAuthn standard. I will show you a full-stack demo application with an Ionic / Angular front end and a Spring Boot back end with Spring Security.RalphSending Web Push Notifications with Java2019-08-13T17:00:00Zhttps://golb.hplar.ch/2019/08/webpush-java.htmlSending Web Push notifications from a Java back end to a web browserRalphSimplified WireGuard server installation2021-12-22T12:00:00Zhttps://golb.hplar.ch/2020/02/wireguard.htmlIn this blog post, I show you how to install WireGuard server in a very convenient way with a batch scriptRalphTranslation chat app with Cettia and Google Cloud Translation2021-05-20T10:00:00Zhttps://golb.hplar.ch/2020/04/babel-fish-cettia-chat.htmlIn this blog post, I show you how to build a chat application with Cettia and Google Cloud Translation that automatically translates chat messages.RalphBackup with restic2020-04-02T20:00:00Zhttps://golb.hplar.ch/2020/04/backup-restic.htmlHow to backup your data with restic, an easy, fast, efficient, secure, and free command-line tool.RalphPush Notifications with Capacitor and Java2021-06-20T12:50:35Zhttps://golb.hplar.ch/2020/04/capacitor-push-notification.htmlIn this blog post we take a closer look at how to receive push notifications with Capacitor and how to send them from a Spring Boot applicationRalphJavaScript / Java chat application with Cettia2021-05-20T10:00:00Zhttps://golb.hplar.ch/2020/04/cettia-chat.htmlIn this blog post, I show you how to build a simple chat application with a JavaScript front- and a Java backend.RalphExchange Protocol Buffers messages between JavaScript and Java2021-05-20T10:00:00Zhttps://golb.hplar.ch/2020/04/exchange-protobuf-messages.htmlIn this blog post, we are going to take a look at how to sends Protocol Buffers messages from an Angular app to a Spring Boot back end.RalphYouTube Player and Google Maps Angular component2021-05-21T10:00:00Zhttps://golb.hplar.ch/2020/04/google-maps-youtube.htmlIn this blog post, we take a look at the YouTube Player and Google Maps component from the angular/component repository.RalphMigration from Nashorn to GraalVM JavaScript2021-05-21T10:00:00Zhttps://golb.hplar.ch/2020/04/java-javascript-engine.htmlOracle removes the Nashorn JavaScript engine in Java 15 (September 2020). In this blog post, I show you how to migrate to the successor - GraalVM JavaScript engineRalphRxJS webSocket, w3c-compatible WebSocket wrapper2021-05-20T10:00:00Zhttps://golb.hplar.ch/2020/04/rxjs-websocket.htmlIn this blog post, we take a closer look at the webSocket function from the RxJS library, a wrapper around the native WebSocket object.RalphBuilding encrypted chat app with the Web Cryptography API2021-05-20T10:00:00Zhttps://golb.hplar.ch/2020/05/cryptochat.htmlIn this blog post, I show you how to create an encrypted Java/JavaScript chat application with the Web Cryptography API.RalphDeploy Angular and Spring Boot application to Google Cloud2020-05-05T12:00:00Zhttps://golb.hplar.ch/2020/05/deploy-google-cloud.htmlIn this blog post, I show you how to deploy an Angular application to Firebase Hosting and a Spring Boot application to Google Cloud RunRalphSelf-host Docker registry server on Ubuntu 20.042020-05-08T16:00:00Zhttps://golb.hplar.ch/2020/05/docker-registry-ubuntu.htmlHow to install Docker and Docker registry server on Ubuntu 20.04RalphPresent photos on Google Maps2021-10-31T10:00:00Zhttps://golb.hplar.ch/2020/05/geophotos.htmlIn this tutorial, I show you how to develop a web application that presents your holiday photos on Google MapsRalphGitblog - the software that powers my blog2020-05-07T16:00:00Zhttps://golb.hplar.ch/2020/05/gitblog.htmlTaking a closer look at the software that runs my blogRalphAdd CAPTCHA to your site with hCaptcha2021-05-20T10:00:00Zhttps://golb.hplar.ch/2020/05/hcaptcha.htmlThis blog post shows you how to integrate hCaptcha CAPTCHAs into a plain JavaScript project and Angular projects, with a Spring Boot back end.RalphSmall changes in Java 9 to 212023-09-20T14:00:00Zhttps://golb.hplar.ch/2020/05/java-small-changes.htmlA summary of interesting small changes in the Java standard library and the language in Java 9 to 21.RalphGetting started with Nebular for Angular2020-05-17T12:00:00Zhttps://golb.hplar.ch/2020/05/nebular-start.htmlHow to create an Angular application from scratch with the Nebular component library.RalphUpgrade password hashes with Spring Security2021-05-21T10:00:00Zhttps://golb.hplar.ch/2020/05/passwordhashupgrade.htmlA closer look at Spring Security's support for upgrading password hashesRalphJava application as Windows Service2020-05-06T06:00:00Zhttps://golb.hplar.ch/2020/05/windows-service.htmlHow to install any Java application as Windows service with WinSWRalphHTTP over TLS on localhost with Go server2021-11-28T10:00:00Zhttps://golb.hplar.ch/2021/11/go-tls-localhost.htmlIn this blog post, I'm going to show you how to set up TLS with a Go HTTP server listening on localhost.RalphInfrastructure as Code with Pulumi (Go)2021-11-29T06:00:00Zhttps://golb.hplar.ch/2021/11/pulumi.htmlIn this blog post, I'm going to show you how to set up cloud resources on AWS with the infrastructure as code (IaC) tool PulumiRalphJava Switch Expression in Java 142021-11-20T10:00:00Zhttps://golb.hplar.ch/2021/11/switch.htmlAn overview of the new switch introduced in Java 14RalphAWS Lambda development with Go and Pulumi2021-12-06T18:00:00Zhttps://golb.hplar.ch/2021/12/go-lambda.htmlIn this blog post I will show you how to write AWS Lambdas with Go and deploy them with Pulumi (Go).RalphImplementing HTTP API back end on AWS - Part 1 Foundation2022-01-29T03:45:00Zhttps://golb.hplar.ch/2022/01/aws-backend-1.htmlThe first part of setting up an HTTP API back end on AWS shows you how to configure Amazon API Gateway and Amazon DynamoDB and build and deploy an AWS Lambda in Go to form the back end for a simple todo web application.RalphImplementing HTTP API back end on AWS - Part 2 User Authentication2022-01-29T03:45:00Zhttps://golb.hplar.ch/2022/01/aws-backend-2.htmlThe second part of setting up an HTTP API back end on AWS shows you how to transform the single-user application from the first part into a multi-user application where users can sign-up and sign in. User authentication will be implemented with Amazon Cognito and OAuth2.RalphDexie.js live queries2022-01-22T08:00:00Zhttps://golb.hplar.ch/2022/01/dexiejs-livequery.htmlIn this blog post, I will show you an example of the new live query feature in Dexie.js 3.2 that enables an application to subscribe to IndexedDB queries.RalphAccess Amazon S3 objects with SQL SELECT2022-01-22T08:00:00Zhttps://golb.hplar.ch/2022/01/s3-select.htmlIn this blog post, I take a look at S3 Select, a service that enables an application to access Amazon S3 objects with SQL SELECT. Code examples in Java and GoRalphSelf-host Plausible, open-source web analytics tool2022-01-30T13:23:00Zhttps://golb.hplar.ch/2022/01/self-host-plausible.htmlIn this article, I show you how to install Plausible Analytics, a self-hosted, open-source website analytics application.RalphSending Protocol Buffers messages over SQS2022-01-15T08:00:00Zhttps://golb.hplar.ch/2022/01/sqs-protobuf.htmlIn this blog post, I show you how to send and receive Protocol Buffers messages over Amazon Simple Queue Service (SQS). The examples of producers (send) and consumers (receive) are written in Java and Go.RalphAccess HIBP Pwned Passwords with Go2023-03-11T12:10:54Zhttps://golb.hplar.ch/2022/02/hibp-go.htmlVarious ways how to access the Pwned Passwords database from have i been pwned with GoRalphGit with go-git2023-08-01T18:00:00Zhttps://golb.hplar.ch/2023/08/git-with-go-git.htmlIn this blog post, I'm going to show you how you can write Go programs that access Git repositories with the go-git libraryRalphTLS with Go in production2023-08-01T19:00:00Zhttps://golb.hplar.ch/2023/08/go-tls-production.htmlSetting up TLS with Go in productive environmentsRalphPush notifications with Angular and Java2023-08-06T08:00:00Zhttps://golb.hplar.ch/2023/08/webpush-angular.htmlIn this blog post, I show you how to implement a web application with Angular that receives push notifications and a back end with Java that sends push messages. It uses the standard Push API supported by all major browsers.Ralph