# Jake Lee's Programming Blog

In-depth ad-free articles about software development, Android, and the internet

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Adding accurate AsyncImage previews in Coil 3 with a Compose wrapper

DevFeed: [Adding accurate AsyncImage previews in Coil 3 with a Compose wrapper](<https://devfeed.tech/articles/adding-accurate-asyncimage-previews-in-coil-3-with-a-compose-wrapper-38570.md>)

Original publisher: [Read original article](<https://blog.jakelee.co.uk/coil-asyncimage-previews/>)

Author: Jake Lee

Published: 2026-01-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Jake Lee's Programming Blog](<https://devfeed.tech/sources/jake-lee-s-programming-blog.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [context](<https://devfeed.tech/topics/context.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [coil](<https://devfeed.tech/tags/coil.md>), [compose](<https://devfeed.tech/tags/compose.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [image](<https://devfeed.tech/tags/image.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A practical guide to improving Coil 3 AsyncImage previews in Jetpack Compose by overriding remote image fetching with a wrapper that supplies preview drawables.

### Source excerpt

I recently migrated from Coil 2 to Coil 3, allowing remote image fetching to be overridden for better previews! Here's a simple wrapper implementation.

## A real-world comparison between Lenovo's ThinkBook 16p Gen 2 and 16p Gen 6 (with photos!)

DevFeed: [A real-world comparison between Lenovo's ThinkBook 16p Gen 2 and 16p Gen 6 (with photos!)](<https://devfeed.tech/articles/a-real-world-comparison-between-lenovo-s-thinkbook-16p-gen-2-and-16p-gen-6-with-photos-38576.md>)

Original publisher: [Read original article](<https://blog.jakelee.co.uk/thinkbook-gen-2-and-6-comparison/>)

Author: Jake Lee

Published: 2025-12-03T00:00:00Z

Content type: comparison

Language: en

Sources: [Jake Lee's Programming Blog](<https://devfeed.tech/sources/jake-lee-s-programming-blog.md>)

Topics: [lenovo](<https://devfeed.tech/topics/lenovo.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [3dmark](<https://devfeed.tech/topics/3dmark.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [Hardware](<https://devfeed.tech/topics/hardware.md>), [pcie](<https://devfeed.tech/topics/pcie.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [3dmark](<https://devfeed.tech/tags/3dmark.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [hardware](<https://devfeed.tech/tags/hardware.md>), [laptop](<https://devfeed.tech/tags/laptop.md>), [lenovo](<https://devfeed.tech/tags/lenovo.md>), [pcie](<https://devfeed.tech/tags/pcie.md>), [performance](<https://devfeed.tech/tags/performance.md>), [technology](<https://devfeed.tech/tags/technology.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

A real-world comparison of the Lenovo ThinkBook 16p Gen 2 and Gen 6 examines specifications, photos, benchmarks, storage performance, and gaming results. The author reports substantial improvements in SSD and 3DMark performance, while noting that benchmark results may not fully represent everyday use.

### Source excerpt

I recently replaced my aging Lenovo ThinkBook 16p Gen 2 with a Gen 6, so here's benchmarks, side-by-side photos, and general notes on their differences!

## How to automate earning and selling Steam Trading Cards

DevFeed: [How to automate earning and selling Steam Trading Cards](<https://devfeed.tech/articles/a-detailed-guide-to-automated-farming-selling-of-steam-trading-cards-38569.md>)

Original publisher: [Read original article](<https://blog.jakelee.co.uk/automating-steam-trading-cards/>)

Author: Jake Lee

Published: 2025-10-10T23:00:00Z

Content type: tutorial

Language: en

Sources: [Jake Lee's Programming Blog](<https://devfeed.tech/sources/jake-lee-s-programming-blog.md>)

Topics: [Automation](<https://devfeed.tech/topics/automation.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [automated](<https://devfeed.tech/tags/automated.md>), [automation](<https://devfeed.tech/tags/automation.md>), [guide](<https://devfeed.tech/tags/guide.md>), [steam](<https://devfeed.tech/tags/steam.md>), [trading](<https://devfeed.tech/tags/trading.md>)

### AI overview

A tutorial on using automation software, specifically Idle Master Extended, to earn Steam Trading Cards from eligible games and sell them on the Steam Market. It also discusses checking card eligibility and assessing software safety, though the supplied text ends mid-article.

### Source excerpt

Steam Trading Cards have been out for a long time, but you probably didn't realise you likely have tens of games with earning potential just sitting in your library! Here's how to earn and sell the cards quickly.

## How to verify a Google Play account without publicly exposing a home address and phone number

DevFeed: [How to verify a Google Play account without publicly exposing a home address and phone number](<https://devfeed.tech/articles/please-don-t-dox-me-google-how-to-verify-your-google-play-account-without-exposing-all-of-your-information-38573.md>)

Original publisher: [Read original article](<https://blog.jakelee.co.uk/publishing-on-google-play-without-exposing-info/>)

Author: Jake Lee

Published: 2025-01-19T00:00:00Z

Content type: tutorial

Language: en

Sources: [Jake Lee's Programming Blog](<https://devfeed.tech/sources/jake-lee-s-programming-blog.md>)

Topics: [Google Play](<https://devfeed.tech/topics/google-play.md>), [account](<https://devfeed.tech/topics/account.md>), [App](<https://devfeed.tech/topics/app.md>), [Android](<https://devfeed.tech/topics/android.md>), [console](<https://devfeed.tech/topics/console.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [app](<https://devfeed.tech/tags/app.md>), [company](<https://devfeed.tech/tags/company.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [payments](<https://devfeed.tech/tags/payments.md>), [privacy](<https://devfeed.tech/tags/privacy.md>), [verification](<https://devfeed.tech/tags/verification.md>)

### AI overview

This tutorial explains how a Google Play developer can avoid publicly exposing a home address and phone number during verification. It describes forming a company with a forwarding address, creating a new Organisation Google Play profile, verifying it with the company's information, and transferring apps and associated services.

### Source excerpt

In 2023, Google began requiring verification for Google Play, especially if earning any money. Unfortunately, this required publicly exposing your home address and phone number! Here's how to earn money without revealing this info.

## Improving an Android app's Google Play rating with in-app review prompts

DevFeed: [Improving an Android app's Google Play rating with in-app review prompts](<https://devfeed.tech/articles/rapidly-improving-play-store-rating-with-an-android-in-app-review-prompt-helper-from-2-2-to-4-7-in-2-weeks-38572.md>)

Original publisher: [Read original article](<https://blog.jakelee.co.uk/play-store-rating-prompt/>)

Author: Jake Lee

Published: 2024-12-26T00:00:00Z

Content type: article

Language: en

Sources: [Jake Lee's Programming Blog](<https://devfeed.tech/sources/jake-lee-s-programming-blog.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Google Play](<https://devfeed.tech/topics/google-play.md>), [App](<https://devfeed.tech/topics/app.md>), [Library](<https://devfeed.tech/topics/library.md>), [Google](<https://devfeed.tech/topics/google.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [google](<https://devfeed.tech/tags/google.md>), [google-play](<https://devfeed.tech/tags/google-play.md>), [in-app-review](<https://devfeed.tech/tags/in-app-review.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [library](<https://devfeed.tech/tags/library.md>), [play-store](<https://devfeed.tech/tags/play-store.md>), [reviews](<https://devfeed.tech/tags/reviews.md>), [time](<https://devfeed.tech/tags/time.md>)

### AI overview

This article describes how the Seatfrog app's Google Play rating improved after stability work reduced one-star reviews and an in-app review prompt made it easier for satisfied users to submit ratings. It also discusses using Google Play Console ratings data and per-version averages to assess the results.

### Source excerpt

I recently worked on an app, Seatfrog, that had been rated between 1 and 2 stars for months, despite no major issues. The solution? In-app rating prompts!

## Generating a SQLite word dictionary (with definitions) from WordNet using Python

DevFeed: [Generating a SQLite word dictionary (with definitions) from WordNet using Python](<https://devfeed.tech/articles/generating-a-sqlite-word-dictionary-with-definitions-from-wordnet-using-python-38575.md>)

Original publisher: [Read original article](<https://blog.jakelee.co.uk/sqlite-word-dictionary-from-wordnet/>)

Author: Jake Lee

Published: 2024-12-18T00:00:00Z

Content type: tutorial

Language: en

Sources: [Jake Lee's Programming Blog](<https://devfeed.tech/sources/jake-lee-s-programming-blog.md>)

Topics: [SQLite](<https://devfeed.tech/topics/sqlite.md>), [Python](<https://devfeed.tech/topics/python.md>), [Databases](<https://devfeed.tech/topics/databases.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [python](<https://devfeed.tech/tags/python.md>), [regex](<https://devfeed.tech/tags/regex.md>), [script](<https://devfeed.tech/tags/script.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>)

### AI overview

This tutorial explains how to generate a SQLite word dictionary from Princeton's WordNet using Python. It describes filtering words and definitions, removing unwanted entries, and producing a compact database for use in an app.

### Source excerpt

I recently needed a SQLite dictionary with word, type, and definition(s). Turns out, it was easy enough to make my own!

## The History and Variations of GitHub's Octocat Mascot

DevFeed: [The History and Variations of GitHub's Octocat Mascot](<https://devfeed.tech/articles/what-on-earth-is-an-octocat-exploring-all-160-variations-of-github-s-mascot-38577.md>)

Original publisher: [Read original article](<https://blog.jakelee.co.uk/what-on-earth-are-octocats/>)

Author: Jake Lee

Published: 2024-12-07T00:00:00Z

Content type: article

Language: en

Sources: [Jake Lee's Programming Blog](<https://devfeed.tech/sources/jake-lee-s-programming-blog.md>)

Topics: [GitHub](<https://devfeed.tech/topics/github.md>), [communications](<https://devfeed.tech/topics/communications.md>)

Tags: [art](<https://devfeed.tech/tags/art.md>), [cat](<https://devfeed.tech/tags/cat.md>), [cats](<https://devfeed.tech/tags/cats.md>), [communications](<https://devfeed.tech/tags/communications.md>), [design](<https://devfeed.tech/tags/design.md>), [github](<https://devfeed.tech/tags/github.md>), [illustration](<https://devfeed.tech/tags/illustration.md>), [logo](<https://devfeed.tech/tags/logo.md>), [mona-lisa](<https://devfeed.tech/tags/mona-lisa.md>), [twitter](<https://devfeed.tech/tags/twitter.md>)

### AI overview

An overview of GitHub's Octocat mascot, including Mona's origins, the creation of the Octodex, and the evolution of Octocat designs from classic to modern variations.

### Source excerpt

If you've used GitHub for any length of time, you've probably seen their odd "Octocat" logo. This cute little cat also has a lot of bizarre variations, here's an explanation of them all!

## How to automatically add WebP post banners to Jekyll for faster load times

DevFeed: [How to automatically add WebP post banners to Jekyll for faster load times](<https://devfeed.tech/articles/how-to-automatically-add-webp-post-banners-to-jekyll-for-faster-load-times-38568.md>)

Original publisher: [Read original article](<https://blog.jakelee.co.uk/adding-automated-webp-banners-to-jekyll/>)

Author: Jake Lee

Published: 2024-11-30T00:00:00Z

Content type: tutorial

Language: en

Sources: [Jake Lee's Programming Blog](<https://devfeed.tech/sources/jake-lee-s-programming-blog.md>)

Topics: [Jekyll](<https://devfeed.tech/topics/jekyll.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Accessibility](<https://devfeed.tech/topics/accessibility.md>), [browsers](<https://devfeed.tech/topics/browsers.md>), [CSS](<https://devfeed.tech/topics/css.md>)

Tags: [accessibility](<https://devfeed.tech/tags/accessibility.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [images](<https://devfeed.tech/tags/images.md>), [jekyll](<https://devfeed.tech/tags/jekyll.md>), [liquid](<https://devfeed.tech/tags/liquid.md>), [optimisation](<https://devfeed.tech/tags/optimisation.md>), [times](<https://devfeed.tech/tags/times.md>)

### AI overview

A tutorial on automating WebP banner generation and delivery in Jekyll. It explains configuring a conversion library, generating WebP files, serving them conditionally with Liquid and picture/source elements, and providing alternative text. The article also notes possible color-rendering issues with the converter.

### Source excerpt

Most modern browsers can handle the smaller & speedier WebP versions of images, yet generating them manually can be a pain! Here's how to do it automatically in Jekyll.

## My experience with the GitHub Foundations Certification process

DevFeed: [My experience with the GitHub Foundations Certification process](<https://devfeed.tech/articles/my-experience-with-the-github-foundations-certification-process-38574.md>)

Original publisher: [Read original article](<https://blog.jakelee.co.uk/review-of-github-foundations-certification/>)

Author: Jake Lee

Published: 2024-11-16T00:00:00Z

Content type: opinion

Language: en

Sources: [Jake Lee's Programming Blog](<https://devfeed.tech/sources/jake-lee-s-programming-blog.md>)

Topics: [GitHub](<https://devfeed.tech/topics/github.md>), [Learning](<https://devfeed.tech/topics/learning.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [certifications](<https://devfeed.tech/tags/certifications.md>), [education](<https://devfeed.tech/tags/education.md>), [github](<https://devfeed.tech/tags/github.md>), [microsoft](<https://devfeed.tech/tags/microsoft.md>), [students](<https://devfeed.tech/tags/students.md>)

### AI overview

A personal review of studying for and taking the GitHub Foundations Certification, including its student offering, covered topics, available study guides, and experience with Microsoft's Learning Path.

### Source excerpt

Did you know GitHub offer paid certifications? They do! The first of these is "GitHub Foundations", offered for free to students, here's my somewhat rocky experience of studying & taking the exam.

## How to force update (& test) your Android app using Google's in-app update library

DevFeed: [How to force update (& test) your Android app using Google's in-app update library](<https://devfeed.tech/articles/how-to-force-update-test-your-android-app-using-google-s-in-app-update-library-38571.md>)

Original publisher: [Read original article](<https://blog.jakelee.co.uk/googles-force-update-android-app-library/>)

Author: Jake Lee

Published: 2024-11-09T00:00:00Z

Content type: tutorial

Language: en

Sources: [Jake Lee's Programming Blog](<https://devfeed.tech/sources/jake-lee-s-programming-blog.md>)

Topics: [LineageOS](<https://devfeed.tech/topics/lineageos.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Library](<https://devfeed.tech/topics/library.md>), [Google](<https://devfeed.tech/topics/google.md>), [callback](<https://devfeed.tech/topics/callback.md>), [Code](<https://devfeed.tech/topics/code.md>), [Users](<https://devfeed.tech/topics/users.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [callback](<https://devfeed.tech/tags/callback.md>), [code](<https://devfeed.tech/tags/code.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [google](<https://devfeed.tech/tags/google.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [library](<https://devfeed.tech/tags/library.md>), [version](<https://devfeed.tech/tags/version.md>)

### AI overview

A Kotlin-focused tutorial on using Google's Android in-app updates library to implement mandatory immediate updates, including Gradle setup, update checks, dialog handling, callbacks, and app closure when the user cancels.

### Source excerpt

Earlier this year, I needed to add the ability to force update users of an app. Whilst I've used custom solutions in the past, Google has a standardised "in-app updates" library that does all the essentials for you!