The crappy software cycle

2023-04-08

What is good or bad code is very subjective. It’s easy to spot terrible code. For example, a function copied and pasted 20 times having nothing but a string constant modified in each copy is hopefully universally bad code. A 1000-line of code function should be classified the same way. However, once you get past the extremes of bad code, it becomes a matter of personal preference. While I may prefer to do things in some way and you may prefer to do them in another, this doesn’t mean one of them is better than the other.

Continue reading 


Observability-first development

2023-03-27

A while back I worked for a company that hopped on the microservices train while I was there. As we adapted to this new way of creating software, we also adopted a new set of technologies to be able to effectively do this. One area we invested in was observability. When you think about it, there is no way you could effectively operate multiple microservices in production if you had no visibility into how they were functioning.

Continue reading 


From C++ to the borrow checker

2023-03-12 | #borrow-checker #c++ #lifetimes #rust

A common complaint about Rust is that its learning curve is pretty steep. The borrow checker will give you quite the fight until you get used to writing code in a way that satisfies its expectations. In my case, I started learning Rust after a few years of doing C++. This was an interesting experience because I very quickly realized the constraints that the borrow checker was applying seemed familiar. Almost too familiar.

Continue reading 


Catching null pointer exceptions

2023-03-03 | #bugs #errors

A while back, we had a situation at work where a customer hit a bug that materialized as an issue popping up in sentry on our end. This wasn’t uncommon but the troubleshooting for this one bug was memorable. The conversation that popped up on slack after we received the sentry notification about it went something along the following lines: Bob: Looks like the issue is that a PurchasedProduct’s date_purchased attribute is null and we’re not handling that case, so it’s blowing up.

Continue reading 


Compile time errors are nice

2023-02-22 | #errors #rust #types

When programming in Rust, it’s common to write a bunch of code and then have it magically work the first time you run it. This is not because the language gives us programmer superpowers, but because its strong and rich type system prevents certain types of bugs from ever making it into your application. This is something we as programmers should aim for, as any error that we can catch while writing code is an error that could otherwise cause our system to fail when we least expect it.

Continue reading 


Hello world

2023-02-18

Hello! I’m Matias and this is my new blog. I’m a software engineer from Argentina who currently lives in the San Francisco bay area. I enjoy building software and taking part in all stages of the development life cycle: understanding what needs to be built, designing the solution, implementing it, and ensuring it works correctly. I had another blog a very long time ago where I mostly wrote about security, and more recent-ish one that I barely wrote anything on.

Continue reading 