Philosophical Hacker
TalksRxJava O'Reilly BookNotes
  • Should we refactor files we're working on?

    2020-05-09

    When programming, always follow the camping rule: Always leave the code base healthier than when you found it. — Martin Fowler, Refactoring The Boy Scouts of America have a simple rule that we can apply to our profession. Leave the campground cleaner than you found it. — Robert Martin, Clean Code Many of us share the attitude expressed by the above Fowler and Martin quotes. The attitude presumes that code we’re working on now will change again soon, and we’ll reap the benefits of a refactor when that happens.…

    programmingrefactoringstatistics

  • Why and How we Should Calculate Expected Utility of Refactorings

    2020-04-29

    In my experience, most applications are a mess…Changes are commonly made under urgent time pressure, which drives applications towards disorder…Velocity gradually slows, and everyone comes to hate the application, their job, and their life. —Sandi Metz, “The Half-Life of Code” Why Many of us work in codebases that are not easy to work with, codebases that we want to make better. The way that we typically choose what parts of the codebase get made better, however, is sub-optimal.…

    programmingrefactoring

  • My Mid-Career Job-Hunt: A Data Point for Job-Seeking Devs

    2020-01-26

    I wrapped up my job search recently, and I’m happy to say that I’ll be joining a YC-backed startup called “Heap.” I thought I’d share a little bit about my job search in case the information may benefit other job-seeking devs. I’ll go over the pipeline of places I applied to and the result of each application. I’ll also talk about things like salary, resume formatting, coding challenge prep, and interviewing.…

    careerprogramming

  • Maybe Don't Inject That

    2019-10-03

    I’m actually always suspicious when I’m writing up a pattern or a technique if I can’t talk about reasons when you shouldn’t use and trade-offs against it. If I can’t find arguments against it, then I’m worrying that I’m not really analyzing things properly. –Martin Fowler, “Is TDD Dead?”, 35:00 DI is useful. It’s great. It makes your code more flexible, testable, etc. Dagger? Also useful. Great. My favorite DI library.…

    testingprogrammingandroid

  • Maybe Don't Write That Test

    2019-09-19

    Testing seems to be like going to gym. Everyone feels like “yeah. I should be testing. I should be going to the gym everyday.” Koushik Goupal, Fragmented, “Episode 13,” 12:01 Remember those gimmicky fitness products that made you think you could “get fit” without actually going to the gym/dieting/etc? Because I live in Orlando and have seen the Carousel of Progress at the Magic Kingdom a bunch of times, the first example of this kind of gimmicky product that comes to mind is a thing called an “exercise belt.…

    testingprogramming

  • An Intro to Gradient Descent for Kotlin Programmers

    2019-09-01

    Introduction Gradient descent is an algorithm that’s used to solve supervised learning and deep learning problems. Here I’m going to try to give you an idea of why the algorithm works and how you’d implement it in Kotlin. I’ll also show the algorithm working with a simple kaggle dataset involving video game sales and ratings. Everything I cover here is covered in Andrew Ng’s excellent Coursera machine learning course with the exception of the Kotlin implementation of gradient descent.…

    machine learningkotlin

  • Dagger 2, 2 Years Later

    2019-08-27

    …in software, feedback cycles tend to be on the order of months, if not years…It’s during the full lifetime of a project that a developer gains experience writing code, source controlling it, modifying it, testing it, and living with previous design and architecture decisions during maintenance phases. With everything I’ve just described, a developer is lucky to have a first try of less than six months… –Erik Dietrich, “How Developers Stop Learning: Rise of the Expert Beginner”…

    androiddependency injectionprogramming

  • Maybe we Should Stop Creating Inscrutable CLIs

    2019-08-17

    In the original Unix tradition, command-line options are single letters preceded by a single hyphen…The original Unix style evolved on slow ASR-33 teletypes that made terseness a virtue; thus the single-letter options. Eric Steven Raymond, The Art of Unix Programming Programs must be written for people to read, and only incidentally for machines to execute. Abelson et. al., Structure and Interpretation of Computer Programs I just wrote this little bash-ism the other day for removing all attachments from a jira ticket:…

    programmingclis

  • Some Tips for Delivering an Effective Roadmap Presentation

    2019-07-13

    I recently delivered a presentation of our (outcome-based) roadmap. Several people approached me after the presentation to tell me that they found it useful and informative, so I thought I’d jot down some of the things that I think contributed to the warm reception of the presentation. Hopefully, these tips will come in handy both for others and for my future self. …

    product managementroadmaps

  • How to Automate Common Jira Tasks with Go Jira Custom Commands

    2019-07-03

    in all but small teams I typically recommend separate people for the separate roles [of product managment and project management]. But in every case I believe that developing strong project management skills is a big advantage for product managers – at the least your product will get to market faster, and it could make the difference between getting your product shipped at all. –Marty Cagan, “Ebay’s Secret Weapon” Every morning, I get the following slack message reminder:…

    jiraproduct managementproject management

  • 1
  • 2
  • 3
  • 4
  • 5

© 2025 Matt Dupree