Skip to content

Instantly share code, notes, and snippets.

@gilday
Created February 21, 2018 23:46
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gilday/6ff1fe1b068291585fa5e04bc681e4ba to your computer and use it in GitHub Desktop.
Save gilday/6ff1fe1b068291585fa5e04bc681e4ba to your computer and use it in GitHub Desktop.
Things I like

Things I like

I am a grumpy developer. More than once, usually after I finish a diatribe on why some language or framework is a dumpster fire, I have been asked "so, what do you like?". I actually like a lot of things! Here's a list

Books

  • "Domain Driven Design" by Eric Evans: I came to discover the domain modeling persistence pattern while working on an ASP MVC application. The .NET community does a great job of furthering the discussion on best practices for domain modeling. Since, I have worked on too many Java code bases with anemic domain models. Each time I come across one of these code bases, I like to crack open "Domain Driven Design" again to refresh myself with Eric Evans' ideas on building an ubiquitous language using the domain model.
  • "Patterns of Enterprise Application Architecture" by Martin Fowler: the Gang of Four patterns are great for low-level design, but after reading Fowler's PoEAA I remember thinking "so this is how people actually structure large applications"
  • "Working with Legacy Code" by Michael Feathers: heavily influenced my approach to automated testing and refactoring code with poor automated testing practices.
  • "Effective Java" by Joshua Bloch: I work on a lot of Java code bases, and this is the best guide I have seen for writing good Java code. A lot of the ideas in this book support writing Java code using functional paradigms. I have not yet checked out the latest edition which addresses Java 8.

Current Reading Queue

  1. Functional Thinking by Neal Ford
  2. Patterns, Principles, and Practices of Domain-Driven Design
  3. The Mythical Man-Month

Languages

  • Scala: I have only had the opportunity to work on one Scala project full-time, but it deeply affected the way I wrote all code. I love functional paradigms and how well pure functions lend themselves to automated testing.
  • C#: while I do not like working on Windows, I think C# is a great language with impressive multi-paradigm features. It has been years since I wrote C# full-time, but I am interested to see if more JVM + Linux shops start adopting .NET Core and C#.
  • JavaScript / TypeScript: I used to hate JavaScript, but after I realized that JavaScript has good support for functional programming paradigms, I saw it in a new light. Additionally, the JavaScript and TypeScript communities have been busy adding innovative language features and it is an exciting space to work in.
  • Java: I work mostly in Java, and while it is not the most exciting language on my list, and it often requires a ton of boilerplate code, and I would rather be working in Scala, I think there is such thing as a well designed, structured, tested, and fast Java application. Additionally, the Java ecosystem is vast and full of tools and libraries to use off-the-shelf to build useful applications. The functional paradigms in Java 8 are refreshing, and I am hopeful that Java's new, frequent release cycle will bring more innovation to the language.

Podcasts

  • Beats, Rye, and Types: my favorite podcast of all time. The entertaining hosts hit on programming, food, pizza, bagels, social issues, and music.
  • The Changelog the podcast that started me on podcasts, I follow The Changelog religiously. It makes me feel guilty that I do not have a lot of opportunities to work on open source, but I like to hear the stories behind the open source software I rely on.
  • Fragmented Podcast: it has been years since I developed Android apps, and this podcast is my only link back to that community. I listen to Fragmented to keep up with the latest Android hotness, but I end up re-purposing much of the innovation I learn about in the Android community to the backend Java services I work on. Kotlin, Dagger, RxJava, OK HTTP, Retrofit, all good stuff.

Patterns and Paradigms

  • Test Driven Design: I no longer know how to write software without writing tests first; I just get lost and frustrated
  • Functional Programming: FP has captured my heart. The implications functional programming has on writing bug-free, easily testable code is a game changer. Recently, I read Neal Ford's Functional Thinking which has me convinced that FP is a great way to cede control of the more toilsome aspects of programming to the runtime in the same way that most developers cede memory management to their runtimes. Regardless of whether or not I am using a functional language, FP affects how I write code.
  • Log Structured Data Stores: I thoroughly enjoyed LinkedIn engineering blog's article The Log: What every software engineer should know about real-time data's unifying abstraction. I enjoyed working on with a couple of teams that had great success with Berkeley DB and Cassandra, both of which are interesting storage technologies
  • Event Sourcing: an incredibly interesting pattern, Event Sourcing solves a lot of problems present in storage patterns. I am interested the Elm architecture, building event sourced databases with log-structured data stores like Kafka, and the combination of automated testing, functional programming, and event sourcing

Fun

gitmoji - every commit, ever

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment