RSSAmplifier

Blog

Spaghetti and Hammers - Articles

Personal site of Pedro Rijo (@pedrorijo91). Writing about Scala, Java, Functional Programming, git, and whatever I find time to learn about.

pedrorijo.comRSS feed ↗46 posts

Latest posts

Interviewing in the age of AI

How to interview engineers in the age of AI

Some of my favorite programming principles

Sharing some of my favorite programming principles

The Hidden Downsides of Daily Stand-ups

A critical look at daily stand-ups and how they often disrupt focus, delay progress, and become performative rituals instead of productive meetings.

Recommended books

Some technical books I would recommend every engineer to read

To be more Catholic than the Pope

When to follow the rules and when to break them

My Hands-On Experience with Gen-AI

Some thoughts on my experience using the latest Gen-AI tools

Bloom Filters

Bloom Filters as space-efficient alternatives to Sets

Using Java Service Loader

Using Java Service Loader to allow pluggable code

Load testing using k6

Load testing a service using k6

Scala tutorials in Baeldung

Scala tutorials now in Baeldung

What is a good developer?

How to be a good developer - beyond the technical skills

Newsletter

I have been thinking for long time in creating a newsletter. I made an rss feed since day 1, but I know some people prefer newsletters. So you can now sign-up to receive new posts on your inbox. No spam, just an email whenever a new blog post is published. And don’t worry, you’ll get 1 email per week at most. Sign-up newsletter here!

Implementing Authentication on Play Framework

Implementing User Authentication on Scala Play Framework

When 1 + 1 = 3

How to make Java saying 1 + 1 = 3 by messing with Integer cache

My journey into React

My experience coming from the JVM into front-end development with React

Type safe builder pattern

How to create a type safe builder pattern

First steps into RabbitMQ

Beginners tutorial on why and how to use RabbitMQ with Scala examples

Play Framework and Slick example updated

The updated version of the Play Framework, Slick, and MySQL tutorial and demo application. Now for Play 2.7.X

An intro to Mutation Testing - or why coverage sucks

A intro to Mutation Testing, a technique that has become robust enough to be seen as a reliable alternative to Code Coverage as the de facto metric for assessing your unit tests quality.

Strings are not the type you are looking for

Why use statically typed languages when all of your types are Strings? Forget about Primitive Obsession and leverage the type system for code correctness

Are Scala Streams really lazy?

Are Scala Streams really lazy?

Creating forms on your Play application - Part 2

Advanced HTML forms in Play framework.

Creating forms on your Play application - Part 1

How to create simple HTML forms in Play framework.

Why you should think twice before using Tuples

Why you should think twice before using Scala Tuples. The problems of using tuples in Scala.

Handling exceptions in Scala

How to handle exceptions in Scala. try/catch vs Try vs Catch[T]

Git Workflow

How to use Git? What is the best Git workflow? Hot to use git log? Solving merge conflicts. Git reset vs Git checkout. Third part of a series of git tutorials

Scala interview questions

Some basic, or not so basic, questions about Scala. Interview level questions. Preparing your next Scala interview.

Functional Programmings concepts

Functional Programming concepts. What is referential transparency? That are pure functions? What is idempotence? What is the Uniform Access Principle?

Git Clone

Getting started with Git. Git basic commands. Everything you need to know to start using Git in your personal projects. Second part of a series of tutorials

Git Init

Introduction to Git. What is Git? First part of a series of tutorials

Scala Enumerations - Return of the (Java) Jedi

Second part of Scala enumerations, after some discussions. Looking at enumerations libs overheads, and Java enums as an alternative.

Scala Enumerations

How to use enumerations in Scala? Is the native approach the best one? Which problems does it brings? Are there any interesting alternatives?

How to make the Scala compiler to review your code

C ode review has become one of the most important (and used) techniques when it comes to code quality. The code review process may have very different workflows and subtleties, but it is often driven around the following steps: The developer responsible by the code (a new feature, a bug fix, a refactor, etc) sends his changes to other colleagues (in git it is called a patch, that can be…

Why I quit using Slack (during working hours)

T his month Slack announced to have raised $200M on its most recent financing. At the same time I started to turn off Slack during working hours . One chat to rule them all Slack (just as Hipchat , and many other alternatives ) are messaging apps for teams. If you are on a still small startup (< 5 guys) maybe you don’t have anything similar yet, but as you start to grow, you will fell the need for…

Signing Git commits

L ast week GitHub released another new feature: GPG signature verification . While it may seem something new, Git already supports signing commits and tags with GPG . Still, GitHub turned easier to verify if the commit is signed by the author, introducing a badge next to the commit UUID. How to sign my own commits If you want GitHub to display your verified commits there are a couple of steps…

Saving JSON to Scala model - Part 2

F ollowing up my previous post on mapping json objects to Scala models , it is time to present some more advanced use cases. In the past weeks I have found myself in cases where a little more ‘magic’ was needed: Read dates from the json ( org.joda.DateTime ) Mapping primitive types (as Long ) to a custom case class Nested objects Reading dates from Json objects Imagine you have a Json object, with…

Git Status Notifier

G it has become one of the most essential tools for every developer. While most developers trust in GitHub to host their git repositories, Bitbucket , and more recently Gitlab , have become worthy alternatives. When users rely so much on those services for the everyday workflow, it became crucial for both, the providers and the users, to have almost non existing downtimes. One common approach to…

Saving JSON responses to your model in Scala

I f you deal with external APIs (like Twitter, Facebook, Intercom, Github, and many others) on a regular basis there’s a big chance that you have already dealt with JSON answers before. JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is a text format that is completely language…

Open Source Development: a few guidelines

This post was originally published on Codacy blog by me : I believe the Open Source movement is the biggest breakthrough in software development. Open Source has allowed many projects to increase the number of contributors (and contributions) to unreachable standards for any enterprise. Just take a look at the Linux kernel , which counts with 500,000+ commits and 5,600+ contributors. In this…

Play framework, Slick and MySQL Tutorial

Edit: You may want to have a look at the updated example using Play 2.7 instead of Play 2.4 at Play Framework and Slick example updated T ypical nowadays applications need to store some persistent data frequently. And when we talk about persistent storage we are talking about databases. Among the most common applications, we have web applications. And it is uncommon to have a web application that…

Playing with Instagram API

F or those who don’t know, the Play Framework is the standard web framework for Scala (also available to Java), and it is similar to many other MVC frameworks, such as Spring MVC , Ruby on Rails , Django , and so on. And it has been a while since I’ve been wanting to play a little bit and experiment the Play Framework. Unfortunately, I never had the time, or any good idea to start with it. And…

Mac and homebrew, the perfect marriage

L ast week, on September 1 st , I started a new adventure on Codacy . Codacy is an automated code review tool that allows developers to improve code quality and monitor technical debt. It aims to improve the code review process. To achieve such goal, not only automates the code review process, but also integrates with existing project management tools such Bitbucket , Github , Travis CI , and so…

Lighthouse keeper - yet another ping

I t has been a while since my last post, but between some side projects, summer vacation, and personal hobbies, it hasn’t been exactly easy to get time to write something. Today I want to talk about another small project I finished not long time ago! It all started at Go Youth Conference 2015 (or GYC 2015) last April. GYC is an unique conference, created by a group of young entrepreneurs in 2012,…

Seven Languages in Seven Weeks - Book review

R ecently I’ve finished reading the book ‘Languages in Seven Weeks’. It is part of Seven in Seven series and it approaches seven different programming languages: Ruby , IO , Prolog , Scala , Erlang , Clojure , and Haskell . The publisher, The Pragmatic Bookshelf , introduces this book by making reference to a recommendation by The Pragmatic Programmer , which states “You should learn a programming…

Bulletproof Commits

H ave you ever committed code that made you feel ashamed? Maybe, for instance, a print statement you used for debugging just because you were too lazy to use the debugger? Maybe you even had that crazy idea of using a not so pretty print message? (Don’t worry, we all felt desperate to that point.) If the project you are working on has strong code review practices then, those print statements…

And God said: “Let there be light”

H ey there, and welcome to my new blog! It has been a while since I got this idea of creating a blog, a place where I could share my nerd stories, and it finally happened. :smiley: I’m gonna use this blog to communicate with the world and to let you know I am up to. And no, it’s not an April fools joke! Hoping to keep you guys with me!