Howdy, and happy Wednesday.
I’m Garrett. I’ve been designing and developing software on the web for a couple of decades with a focus on information architecture, HTML, CSS, accessibility, Ruby, and Rails.
Featured
Applets. ActiveX. Flash. Flex. Silverlight. Angular. React. Plenty of corporations thought they knew better but failed to see the larger picture. Innovation as collaboration is one thing, but innovation as an attempt at displacement of compromise and collaboration is another.
Recently
A very nice and concise summary of all the lesser-known and under-appreciated benefits of using partials in Rails. There are a lot of alternatives to partials these days, but they’re so nicely integrated with models, views, and layouts, I still lean heavily towards using partials and leveraging caching to reduce performance impacts.
The only thing I’d add is that any class can work seamlessly with partials as long as it has defined a to_partial_path
method. With that, we’re not limited to rendering only ActiveRecord models with an implicitly associated partial.
As someone who has spent far too much time thinking about managing configuration and secrets in Rails applications, this post from Joy of Rails is solid.
Learn how to use “Rails config x” and add your own configuration options to your Rails app with built-in methods, ActiveSupport::OrderedOptions, and practical use cases.
Rails provides a plethora of great tools for managing configurable values, environment variables, credentials/secrets, and even per-environment variations. Like generators, while Rails uses them plenty internally, all of these tools are equally available and accessible for our own custom configuration bits.
Companies love to plaster their logos everywhere. In many ways, the degree to which companies prioritize their logo visibility on products speaks volumes about the company’s priorities. As an amputee, I like it even less when companies slap obtrusive logos on my feet or legs. In most cases, there’s very little we can do, so most of us just accept it.
Like many other amputees, after seeing a cosmetic prosthesis that reminded me most of a severed hand, I opted for a more mechanical mien. But plastered across the top of the bionic hand I wanted, in traffic-cone orange and black, was the device’s name, bebionic.
It’s often not worth railing against the corporate narcissism, but it’s one thing to add obtrusive logos to products can people can choose not to use. Putting a logo on a body part someone has to wear every day? That’s rather shameless in my book.
Applets. ActiveX. Flash. Flex. Silverlight. Angular. React. Plenty of corporations thought they knew better but failed to see the larger picture. Innovation as collaboration is one thing, but innovation as an attempt at displacement of compromise and collaboration is another.
It’s not always clear how to make the most of partials and helpers in Rails and know when to put what code where. Regardless of the methods, we all still want to organize the elements that help bridge the front-end and back-end with readable and maintainable code.
The ActiveRecord::AssociatedObject gem is a great tool to help organize logic that fits nicely into an encapsulated concept but only ever needs to interact with one type of object.
We’re close to rolling out updated pricing for Flipper Cloud, and it goes against most of the advice we heard from other SaaS teams. We’re moving forward anyways because it feels like the right thing to do for our context.
When we started billing for Flipper Cloud, we did what everyone else in the space was doing – per seat pricing. $20 per seat each month felt like plenty. As time has passed this choice has increasingly bothered me. The past few months I’ve been thinking about what type of billing I like.
Instead of strategizing about maximizing revenue, we focused on finding an approach that would maximize customer satisfaction while leaving room for reasonable profit. We could be entirely wrong, but there’s really only one way to find out.
We’re making some updates to Flipper’s pricing in order to move from seat-based pricing to fixed-price monthly and yearly plans, but we didn’t want to force any customers onto the new plans, so we planned and designed first-class support for multiple types of billing indefinitely.
I haven’t yet tried this tactic, but I really like the idea. Instead of requesting answers, we request a sort of virtual debate to help us strengthen our own thinking as we try to write it down.
Let’s turn the tables and have ChatGPT prompt us. Tell AI to ask you questions about what you’re writing. Push yourself to express in clear terms what you really want to say.
Of course, there’s still the fact that AI uses an inordinate amount of power, but this is one of those applications that feels like it has real potential if the power usage can ever get under control. It’s like a rubber duck for your thoughts.
Web forms and inputs support a variety of additional attributes that can provide hints to the browser and improve the user experience of filling out forms online. With the tiniest bit of extra effort, we can make sure our forms help rather than hinder.