We love reading, watching, and listening to constantly update our skills and learn new perspectives. Here are some of the exciting pieces we learned from this month.
Ruby adds support for forwarding arguments to a method, along with the leading arguments
Argument forwarding allows you to...forward arguments passed in to one method into another. It was first introduced in Ruby 2.7, and further refined in 3.0. You can learn more about how it works with this introduction.
How to read TypeScript errors and not get mad?
Typescript errors are a lot of characters forced into a fairly small window. This guide helps focus your vision on the parts that matter, and helps you turn it from a loud wall of text to a meaningful clue with some simple context.
Demystifying cookies in Rails 6
There are many different ways Rails can add a cookie to a user's computer, and this article explains the available APIs to do so and how they work.
Building Aggregates in Elixir and PostgreSQL
While this example uses Elixir, the knowledge about optimistic and pessimistic locking for handling concurrent updates is generally applicable.
Why writing software is not like engineering
The "Engineering" question has loomed large over the craft of writing software for all of its existence, a very silent war for legitimacy amongst the classical engineering disciplines. This post takes a different tactic, seeking to transcend the dichotomy of legitimacy altogether.
Integration test on golang using Docker
This article demonstrates a clear, clean pattern for implementing integration tests in Go against a dependency running as a Compose service. The Dockerfile and Compose configuration can be easily extended for other use cases.
Estimating Large-scale Software Projects
Helpful advice on where to start, and where to go, when going through the notoriously difficult and inaccurate exercise of estimating software projects.
Moving From Tailwind To CSS Variables
If you introduce Tailwind, are you tied to Tailwind? Learn about what this author likes and doesn't like about the framework, and how they worked to have what they liked with as close to vanilla CSS as possible.
Feature Flags: Not Just for Big Teams or Big Features
Come for a discussion on utilizing caching for a performance boost, stay for a strategy of how to safely release such an improvement with confidence - not only to move forward, but backwards if needed.
How Teams Can Be More Supportive With Help From Hanlon’s Razor
Heard of Hanlon's Razor? Check out this article to learn more about how you can use this principle to facilitate communication and strengthen relationships across your team.
Contributors
Learn more about how The Gnar builds software.
Top comments (1)
Thanks for sharing.
The article "Why writing software is not like engineering" seems to misunderstand what engineering is by getting too attached to its classical incarnations in other fields as opposed to freeing understanding from how it was executed and focusing instead on its essence; that is producing consumer-satisfying useful products within time, quality and budget constraints.
As such, there are no implications of "how" things are done in engineering, yet only "what". People who get caught up in the "how" dig themselves a big hole of wasted time pondering senseless matters instead of simply engineering successful outcomes for their customers. The latter is done without wasting time on the "how" yet focusing on the "what" (goals) above all else and freeing the "how" to happen in the best way possible (which can always evolve with the times and within different applications).
Everyone who is building something within quality, time, and budget constraints is engineering whether they admit it or not. Better master engineering then instead of trying to pretend it is not there.