Hacky Friday Stuff #24.01.2020
Alexey Zhaboyedov
Posted on January 24, 2020
Links about web development, product engineering, tools and services from all over the internet.
Do better, not best - transitioning to a growth mindset
On how setting goals like 'run a marathon' or 'write 1000 words per day' hurt me more than helped, and what I'm doing now instead.
From 15,000 database connections to under 100: DigitalOcean's tale of tech debt
In the past seven years, DigitalOcean has grown from garage-band roots into the established cloud provider it is today. Like other transitioning tech companies, DigitalOcean deals with legacy code and tech debt on a regular basis.
An Empirical Study of Wireless Carrier Authentication for SIM Swaps
- Is SMS 2FA Secure?
- NO!
URI.escape is obsolete. Percent-encoding your query string
Have you encountered warning: URI.escape is obsolete
warnings in your Ruby 2.7.0 project? Find out how to fix it!
Best practices when writing a Dockerfile for a Ruby application
The simplicity of the Dockerfile format is probably one of the reasons why Docker managed to become so popular in the first place. Getting something working is fairly easy. Producing a clean, small, secure image that will not leak secrets might not be as straightforward though.
This post will try to share some best practices when writing a Dockerfile for a Ruby application. Most of these suggestions should be valid for any other runtime as well.
Naming: Climbing Towards Abstraction
Your code and its artifacts are strewn with names. You name repositories, files, packages, classes, functions, variables, and on and on. The names you choose determine the quality of the conversations you have with your programmer peers.
Goodbye, Clean Code
When the "dirty" code isn't always bad. Let clean code guide you. Then let it go.
On Pair Programming
Many people who work in software development today have heard of the practice of pair programming, yet it still only has patchy adoption in the industry. One reason for its varying acceptance is that its benefits are not immediately obvious, it pays off more in the medium- and long-term. And it's also not as simple as "two people working at a single computer", so many dismiss it quickly when it feels uncomfortable. However, in our experience, pair programming is vital for collaborative teamwork and high quality software.
Tools and libraries
pxi
pxi (pixie) is a small, fast, and magical command-line data processor similar to jq, mlr, and awk.
rails-pg-extras
Rails PostgreSQL database performance insights. Locks, index usage, buffer cache hit ratios, vacuum stats and more.
forme
HTML forms library for ruby.
reverse_markdown
Ruby gem to convert html into markdown
fstrings
Python-alike fstrings (formatting strings) for Ruby.
Podcasts
Full Stack Radio | 132: Caleb Porzio - Just Enough JavaScript with Alpine.js
In this episode, Adam talks to Caleb Porzio about his new UI library Alpine.js.
Topics include:
- What is Alpine and what does it replace?
- How does Alpine compare to Vue?
- How does Alpine compare to Stimulus?
- “Why not just use vanilla JavaScript you dummy?”
- How Alpine works internally
- Patterns for extracting reusable behaviours with Alpine
- The Alpine roadmap
Greater Than Code | 165: Rubyfmt with Penelope Phippen
Penelope’s Superpower: An extremely cursed knowledge of the Ruby programming language’s grammar, so she tells how Rubyfmt helps Ruby developers to overcome problems that Rubocop doesn't solve.
Code[ish] | 53. Scaling Telecommunications Data with a Service Mesh
When you're one of the largest telecommunications companies in Canada, you're responsible for building and maintaining services that can handle a volume of data many times greater than the average web server. Julián Duque had a chance to sit down with Luca Maraschi, a chief architect at TELUS Digital, during NodeConfEU. On this episode, they talk about the frameworks and tech stack Luca has chosen to build the service mesh which facilities data flow between their microservices and clients.
Videos
Yukihiro Matsumoto interview for Evrone (in English)
the Yukihiro Matsumoto interview that he gave during the RubyRussia 2019 conference in Moscow on September '19. It's about the evolution of Ruby in the past ten years, the philosophy of the language design, and discussed what inspired its creator.
Introduction to Tailwind and the Utility first workflow
Everything you need to know about how to design beautiful custom designs from scratch with Tailwind.
You'll learn how to:
- install tailwind in your project
- design with the utility first workflow
- use tailwind for responsive design
- extract Tailwind component classes
How to use AWS Cloud9 for Ruby on Rails development
Ever wanted an editor and Rails environment you can use anywhere? Cloud9 is the perfect option for this and can run on an EC2 instance in your AWS account.
dry-rb in five: 003 dry-validation (whitelisting)
In today's episode we're going to dive into whitelisting. It's an important security feature to filter out unauthorized data.
dry-rb in five: 004 dry-validation (coercion)
In today's episode we're going to dive into data coercion: the ability for a schema to accept/reject incoming data based on their type and to transform input from a Ruby type into another. Coercion will guarantee that the resulting data will be of the expected type, avoiding NoMethodError and TypeError exceptions.
Posted on January 24, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.