State of the 2017 Rails Stack

By Derek Bullet_white Posted in Development Bullet_white Comments Comments

Are folks upgrading to Rails 5? Where is the Postgres vs. MySQL battle heading? Are devs embracing Puma and concurrency?

If you're curious about the above, you've come to the right place. We collect gems used on the apps we monitor at Scout to assist with debugging issues and to prioritize libraries we want to instrument. This data set, which is across thousands of apps, should be enough to grab general usage trends.

Without delay, lets dig in.

Read More →

 

Elixir foundations for Ruby Devs: Recursion

By Derek Bullet_white Posted in HowTo Bullet_white Comments Comments

I can't recall writing a recursive method in Ruby. I think that's because I find recursion more confusing than iteration (ie Array#map). Additionally, recursion isn't efficient in an imperative language like Ruby.

While I find recursive functions a bit difficult to grok in any language, writing a recursive function in Elixir is a good exercise for 3 reasons:

  1. Unlike Ruby, there isn't a performance hit when you use recursion in Elixir.
  2. Exposure to the inner workings of the List type.
  3. Exposure to pattern matching in multiple ways.

I'll start with some background on List and pattern matching, then write a function to sum the contents of a List. Finally, we'll write a recursive map function.

Read More →

 

2016 Year-in-Review

By Derek Bullet_white Comments Comments

We've pushed a lot of features this year at Scout. Here's a look back at what we've added to app monitoring in 2016:

Read More →

 

There's a Slim Linter in your Atom

By Matt Bullet_white Comments Comments

One of the technical bits I learned when joining Scout was Slim, a lightweight templating engine. I was a quick convert: Slim eliminates boilerplate code while making it easy to "break away" when full HTML markup is needed.

I'm a big fan of Linters, especially when learning a new syntax/language. It's like having a soft code review before the real thing. To assist with my conversion to Slim, I created an Atom package for slim-lint: linter-slim-lint. linter-slim-lint provides a lightweight interface inside of Atom to the output of slim-lint's analysis.

Read More →

 

Coming Soon: your Rails app performance trends & outliers, via email

By Derek Bullet_white Comments Comments

I follow a simple rule before configuring a monitoring alert: if I receive this alert at 3am, will I act on it?

If not, it shouldn't be an alert.

Few performance-related alerts meet this criteria. For example, if our app is running 25% slower, it's not worth a hasty 3am fix, but it is worth a first-thing-in-the-morning effort.

That's the drive behind a feature we'll make available soon: The Digest Email. Available in daily or weekly editions, the Digest Email summarizes your app performance and directs you to bottlenecks with ease:

Digest Email

Read More →

 

Elixir foundations for Ruby Devs: transforming data

By Tomasz Bullet_white Comments Comments

This is a guest post by Tomasz Kowal, a software developer currently working full time with Elixir at ClubCollect. He started with Erlang 6 years ago and is still amazed by the power functional languages provide. In his free time he likes tinkering with flying robots.

Have you ever reached for a drink of water, then realized, half-way through your first sip, it was Sprite? I like Sprite, but that first sip of a similar-looking, but very different liquid is a shock.

That's how Elixir can feel if you're coming from Ruby. The syntax looks similar, but Elixir is different from the first sip. For a smooth transition, you need to (a) learn some functional programming patterns and (b) unlearn some Object-Orientated habits.

A core design pattern of Elixir is the focus on data transformations: you'll see it in libraries like Ecto.Changeset, Ecto.Multi, Plug.Conn and built-ins like Enum. Let's dive in.

Read More →

 

Older posts: 1 ... 3 4 5 6 7 ... 63