All blogs / Software / engineering practice
Dan Lew Codes
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
2025 6
2024 7
2023 1
2022 4
2021 9
- Year in Review (2021)
- How Trello Android converted from Gson to Moshi
- My Programming Earworms
- Edina School Board Election (2021)
- The dangers of JSON + default values
- Do or do not; there is no tryEmit()
- Stop Nitpicking in Code Reviews
- RxJava vs. Coroutines
- A Warning Regarding Android App Startup with Multiprocess Apps
2020 11
- Year in Review (2020)
- Testing Never-Ending Flows
- Trello Android's Git Branching Strategy
- Why You Should Vote Early
- Optimizing Play Store Review Times
- How to Vote By Mail in Minnesota (And Make Sure It Counts)
- The LOGAF Scale
- Install Referrer Library Permissions Snafu
- Coroutines and Java Synchronization Don't Mix
- When WorkManager Stops Working
- Year in Review (2019)
2019 8
- Android Pseudolocalization Update
- Fixing Android Studio Keyboard Shortcuts
- Why I’m No Longer Traveling for Conferences
- Never break the chain: use Kotlin's extension functions
- Preventing Unwanted Content from Google Keyboard
- Adding `git log -S` to your code detective toolbox
- When to use Kotlin's standard functions
- Year in Review (2018)
2018 9
- The Reality of Migrating to AndroidX
- Edina City Council Election (2018)
- ConnectableObservable: So Hot Right Now
- Exploring Spannable Performance
- Hear Me Talkin' To Ya: Thoughts on Remote Communication
- How to Screw Over Your Beta Users Without Really Trying
- How to Release a Buggy App (And Live to Tell the Tale)
- When you don't need a map
- Notifications in Android 8.1
2017 20
- Year in Review (2017)
- Working With Android Notification Channels
- Why Not RxLifecycle?
- An Introduction to Functional Reactive Programming
- Convincing the Kotlin compiler that code is safe
- Musings on Kotlin Ranges
- Mutable vals in Kotlin
- Why Kotlin?
- Proper Parcelable testing
- Displaying Sync State
- Sync is a Two-Way Street
- Kotlin Puzzler: Whose Line Is It Anyways?
- Offline Attachments
- The Two ID Problem
- Sync Failure Handling
- Syncing Changes
- Airplane Mode: Enabling Trello Mobile Offline
- Correctly handling bundled Android notifications
- Code Deliberately
- The Activity lifecycle vs. the world
2016 7
2015 19
- Making EditTexts with links both clickable and editable
- Error handling in RxJava
- My First Android App, Six Years Later
- Sharing code between unit tests and instrumentation tests on Android
- Using hardware layers to improve Android animation performance
- Beware EditText on API 21
- Sharing files on Android in a world with runtime permissions
- Don't use dynamic versions for your dependencies
- How to upgrade to RxAndroid 1.0
- Deferring Observable code until subscription in RxJava
- Loading data from multiple sources with RxJava
- Recent presentations and code
- Lessons learned from our first Gradle plugin for Android, Victor
- Is your user a goat?
- Pseudolocalization: Visiting Android's Bizarro World
- Don't break the chain: use RxJava's compose() operator
- Setting up a new app in Crashlytics without the IDE plugin
- A Guide to Lollipop Notification Settings
- Handling Android resources with non-standard formats
2014 29
- An animated drawable issue in Lollipop
- I don't need your permission!
- Styling Views on Android (Without Going Crazy)
- You Should Write More
- Grokking RxJava, Part 4: Reactive Android
- Grokking RxJava, Part 3: Reactive with Benefits
- Grokking RxJava, Part 2: Operator, Operator
- Grokking RxJava, Part 1: The Basics
- What Should You Localize?
- Upcoming Talk: Custom Views for Profit and Pleasure
- New App: Download Shortcut
- Fast Android asset theming with ColorFilter
- Gfycat for Android
- The Hidden Pitfalls of AsyncTask
- Android Tips Round-Up, Part 5
- Why I avoid android.util.Patterns
- Android Tips Round-Up, Part 4
- Android Tips Round-Up, Part 3
- Android Localization Tips
- Android Tips Round-Up, Part 2
- Android Tips Round-Up, Part 1
- An android view measurement case study
- Android Tip of the Day
- Testing on android part 4 testing services
- New library joda time android
- Testing on android part 3 other testing tools
- Preserve your launchers use activity alias
- New domain and blog
- Testing on android part 2 functional tests
2013 21
- Who Goes First App
- Testing on android part 1 unit tests
- Thoughts on the current state of android ides
- Streaming json parsing performance test jackson vs gson
- Sample android project movies
- Is findViewById() Slow?
- Android talk slides from 2013
- Date utils get relative time span string and timezones
- Centering Single-Line Text in a Canvas
- Upcoming conferences
- Smoothing performance on fragment transitions
- Joda Time's Memory Issue in Android
- Don t override list view get adapter
- How to Correctly Format Date/Time Strings on Android
- Sentinels of the multiverse randomizer app
- Before after
- Memory management a case study
- Automatically managing bitmaps from urls via url bitmap drawable
- Is your async task running
- Easier view state saving
- Resistance avalon app
2012 17
- Why Do Motorola's ListViews Look Different
- The Unknown Style: actionBarWidgetTheme
- Styling an auto complete text view
- The case of the twin on surface changed and the split action bar
- Manually adding the legacy overflow button when target sdk version 14
- Android Emulator Keyboard Support in ADT 20+
- Fragment transactions reference
- Obscure simple date format android issue
- Custom fragment animations are different between the support library and vanilla
- Unicode normalization and android
- Yet Another Dumb Widget Hiding Trick
- Solving initial compilation issues with android
- Upcoming talks an dev con iii and mobile march 3 d
- Another App Widget Compatibility Trick
- GridLayout Child View Clipping Issues
- Highlights from android s new design docs
- Grid layout library for android 1 5 support
2011 15
- Sharing with gmail
- Text watchers and on restore instance state
- Android drawable xml talk
- Logc at
- New to Android: More Style Restrictions
- Honeycomb App Widget and Backwards Compatibility
- Passwords: Longer, Not More Complex
- Using Subquery Columns on Android with SQLite
- Detecting the Keystore Signature in Code
- HTML in TextViews
- Image Sharing on Android
- Tiled bitmaps in layer drawables
- Custom styles in Android libraries
- Sending Emails on Android, Take 2
- Drop shadow text
2010 15
- The True Problem With Google's License Verification Library (LVL)
- Palm shaking
- Sending Emails on Android
- Palm and CRUD
- The Curious Case of the Missing HttpsURLConnection
- How to Change a ListView Row's Background but Keep Normal Android Selector
- app-assistant handleLaunch and large numbers
- Android 1 5 widgets google maps api and verify error
- Headset Blocker
- Android serializable considered harmful
- Why They Can't Find Your App
- ViewFlipper "Receiver not registered" Error
- The missing manual android drawables from xml
- Uri and Android 1.5
- View flipper and memory leaks