The Curious Engineer

All blogs / Software / engineering practice

Dan Lew Codes

blog.danlew.net

Thoughts on life, the universe and the mystery of it all; but actually mostly just code.

Software / engineering practiceTesting / QAMobile / iOS / AndroidGaming

Posts
209 from 8 Dec 2009 to 15 Sep 2026
Posting
monthly (9 in the last year)
Kind
personal blog
Feed
https://blog.danlew.net/rss/

2026 7

  1. My life before & after automated testing
  2. Nitpicking in code reviews wastes time
  3. There's more to software development than coding
  4. Obfuscated Rhythm Games
  5. How to use Jest mocks
  6. What the fuck are passkeys and why are they everywhere now?
  7. Don't Cite Unsold eBay Listing Prices

2025 6

  1. Hacking Displate (For Fun!)
  2. Balatro’s Least Erratic Decks
  3. Fix Your Microphone
  4. When Your Source of Truth is Reality
  5. Coding by Magic
  6. Programming Priorities

2024 7

  1. Dan's Edina Sample Ballot Election (2024)
  2. Edina City Council (2024)
  3. Hennepin County Commissioner, District 6 Election (2024)
  4. Edina Mayor Election (2024)
  5. My Evolving Approach to Learning Programming Languages
  6. Software Development is Nonlinear System
  7. JavaScript Nulls and Programming Minutiae

2023 1

  1. Playing Trombone Champ... with a Trombone

2022 4

  1. In Search of Exploration Games
  2. Sharing code between test modules
  3. Domain-Specific Models
  4. Maintaining Software Correctness

2021 9

  1. Year in Review (2021)
  2. How Trello Android converted from Gson to Moshi
  3. My Programming Earworms
  4. Edina School Board Election (2021)
  5. The dangers of JSON + default values
  6. Do or do not; there is no tryEmit()
  7. Stop Nitpicking in Code Reviews
  8. RxJava vs. Coroutines
  9. A Warning Regarding Android App Startup with Multiprocess Apps

2020 11

  1. Year in Review (2020)
  2. Testing Never-Ending Flows
  3. Trello Android's Git Branching Strategy
  4. Why You Should Vote Early
  5. Optimizing Play Store Review Times
  6. How to Vote By Mail in Minnesota (And Make Sure It Counts)
  7. The LOGAF Scale
  8. Install Referrer Library Permissions Snafu
  9. Coroutines and Java Synchronization Don't Mix
  10. When WorkManager Stops Working
  11. Year in Review (2019)

2019 8

  1. Android Pseudolocalization Update
  2. Fixing Android Studio Keyboard Shortcuts
  3. Why I’m No Longer Traveling for Conferences
  4. Never break the chain: use Kotlin's extension functions
  5. Preventing Unwanted Content from Google Keyboard
  6. Adding `git log -S` to your code detective toolbox
  7. When to use Kotlin's standard functions
  8. Year in Review (2018)

2018 9

  1. The Reality of Migrating to AndroidX
  2. Edina City Council Election (2018)
  3. ConnectableObservable: So Hot Right Now
  4. Exploring Spannable Performance
  5. Hear Me Talkin' To Ya: Thoughts on Remote Communication
  6. How to Screw Over Your Beta Users Without Really Trying
  7. How to Release a Buggy App (And Live to Tell the Tale)
  8. When you don't need a map
  9. Notifications in Android 8.1

2017 20

  1. Year in Review (2017)
  2. Working With Android Notification Channels
  3. Why Not RxLifecycle?
  4. An Introduction to Functional Reactive Programming
  5. Convincing the Kotlin compiler that code is safe
  6. Musings on Kotlin Ranges
  7. Mutable vals in Kotlin
  8. Why Kotlin?
  9. Proper Parcelable testing
  10. Displaying Sync State
  11. Sync is a Two-Way Street
  12. Kotlin Puzzler: Whose Line Is It Anyways?
  13. Offline Attachments
  14. The Two ID Problem
  15. Sync Failure Handling
  16. Syncing Changes
  17. Airplane Mode: Enabling Trello Mobile Offline
  18. Correctly handling bundled Android notifications
  19. Code Deliberately
  20. The Activity lifecycle vs. the world

2016 7

  1. Year in Review (2016)
  2. Trello Android Schema Upgrades
  3. A deep dive into Android View constructors
  4. Multicasting in RxJava
  5. How I write tech talks
  6. Unlimited vacation policies are inherently unfair
  7. RxJava's repeatWhen and retryWhen, explained

2015 19

  1. Making EditTexts with links both clickable and editable
  2. Error handling in RxJava
  3. My First Android App, Six Years Later
  4. Sharing code between unit tests and instrumentation tests on Android
  5. Using hardware layers to improve Android animation performance
  6. Beware EditText on API 21
  7. Sharing files on Android in a world with runtime permissions
  8. Don't use dynamic versions for your dependencies
  9. How to upgrade to RxAndroid 1.0
  10. Deferring Observable code until subscription in RxJava
  11. Loading data from multiple sources with RxJava
  12. Recent presentations and code
  13. Lessons learned from our first Gradle plugin for Android, Victor
  14. Is your user a goat?
  15. Pseudolocalization: Visiting Android's Bizarro World
  16. Don't break the chain: use RxJava's compose() operator
  17. Setting up a new app in Crashlytics without the IDE plugin
  18. A Guide to Lollipop Notification Settings
  19. Handling Android resources with non-standard formats

2014 29

  1. An animated drawable issue in Lollipop
  2. I don't need your permission!
  3. Styling Views on Android (Without Going Crazy)
  4. You Should Write More
  5. Grokking RxJava, Part 4: Reactive Android
  6. Grokking RxJava, Part 3: Reactive with Benefits
  7. Grokking RxJava, Part 2: Operator, Operator
  8. Grokking RxJava, Part 1: The Basics
  9. What Should You Localize?
  10. Upcoming Talk: Custom Views for Profit and Pleasure
  11. New App: Download Shortcut
  12. Fast Android asset theming with ColorFilter
  13. Gfycat for Android
  14. The Hidden Pitfalls of AsyncTask
  15. Android Tips Round-Up, Part 5
  16. Why I avoid android.util.Patterns
  17. Android Tips Round-Up, Part 4
  18. Android Tips Round-Up, Part 3
  19. Android Localization Tips
  20. Android Tips Round-Up, Part 2
  21. Android Tips Round-Up, Part 1
  22. An android view measurement case study
  23. Android Tip of the Day
  24. Testing on android part 4 testing services
  25. New library joda time android
  26. Testing on android part 3 other testing tools
  27. Preserve your launchers use activity alias
  28. New domain and blog
  29. Testing on android part 2 functional tests

2013 21

  1. Who Goes First App
  2. Testing on android part 1 unit tests
  3. Thoughts on the current state of android ides
  4. Streaming json parsing performance test jackson vs gson
  5. Sample android project movies
  6. Is findViewById() Slow?
  7. Android talk slides from 2013
  8. Date utils get relative time span string and timezones
  9. Centering Single-Line Text in a Canvas
  10. Upcoming conferences
  11. Smoothing performance on fragment transitions
  12. Joda Time's Memory Issue in Android
  13. Don t override list view get adapter
  14. How to Correctly Format Date/Time Strings on Android
  15. Sentinels of the multiverse randomizer app
  16. Before after
  17. Memory management a case study
  18. Automatically managing bitmaps from urls via url bitmap drawable
  19. Is your async task running
  20. Easier view state saving
  21. Resistance avalon app

2012 17

  1. Why Do Motorola's ListViews Look Different
  2. The Unknown Style: actionBarWidgetTheme
  3. Styling an auto complete text view
  4. The case of the twin on surface changed and the split action bar
  5. Manually adding the legacy overflow button when target sdk version 14
  6. Android Emulator Keyboard Support in ADT 20+
  7. Fragment transactions reference
  8. Obscure simple date format android issue
  9. Custom fragment animations are different between the support library and vanilla
  10. Unicode normalization and android
  11. Yet Another Dumb Widget Hiding Trick
  12. Solving initial compilation issues with android
  13. Upcoming talks an dev con iii and mobile march 3 d
  14. Another App Widget Compatibility Trick
  15. GridLayout Child View Clipping Issues
  16. Highlights from android s new design docs
  17. Grid layout library for android 1 5 support

2011 15

  1. Sharing with gmail
  2. Text watchers and on restore instance state
  3. Android drawable xml talk
  4. Logc at
  5. New to Android: More Style Restrictions
  6. Honeycomb App Widget and Backwards Compatibility
  7. Passwords: Longer, Not More Complex
  8. Using Subquery Columns on Android with SQLite
  9. Detecting the Keystore Signature in Code
  10. HTML in TextViews
  11. Image Sharing on Android
  12. Tiled bitmaps in layer drawables
  13. Custom styles in Android libraries
  14. Sending Emails on Android, Take 2
  15. Drop shadow text

2010 15

  1. The True Problem With Google's License Verification Library (LVL)
  2. Palm shaking
  3. Sending Emails on Android
  4. Palm and CRUD
  5. The Curious Case of the Missing HttpsURLConnection
  6. How to Change a ListView Row's Background but Keep Normal Android Selector
  7. app-assistant handleLaunch and large numbers
  8. Android 1 5 widgets google maps api and verify error
  9. Headset Blocker
  10. Android serializable considered harmful
  11. Why They Can't Find Your App
  12. ViewFlipper "Receiver not registered" Error
  13. The missing manual android drawables from xml
  14. Uri and Android 1.5
  15. View flipper and memory leaks

2009 4

  1. Android Dialogs Created From Threads
  2. Dynamically Retrieving Resources in Android
  3. Android Add-On Applications
  4. Welcome 2