Have You Tried Turning It Off and Again?

If your app has never experienced memory issues, is it really in production?

An Erlang-Inspired Node.js project I deployed at work runs out of memory randomly. It maintains a relatively flat memory usage profile at about 10% of the server’s RAM, but it will suddenly spike to 1.5x ~ 2x RAM.

Excessive Memory Usage on Heroku
Dotted line is my allowed memory usage. Definitely not the¬†way I hoped to start the weekend ūüôĀ

Thankfully Heroku is flexible enough to tolerate spikes under 2x of the allotted RAM so in most cases the app continues to do its job and the worst that happens is I get notified about it. Despite its ability to elegantly recover from crashes, my pride felt like it was being curb-stomped whenever Slack notified me the server ran out of memory again.

slack memory alert
Redacted so much it looks like a CIA release

After determining to redeem my self-respect by fixing the issue, I quickly realized I had no idea where to begin!

Continue reading Have You Tried Turning It Off and Again?

Erlang-Inspired Node.js

Despite the¬†unshakable feeling that¬†I’m a terrible programmer, I’ve end up going on some very experimental journeys writing code that reflects the way I think about software.

Unintentionally, though¬†it makes sense¬†in retrospect, my experiments in JavaScript have leveraged¬†one another, reinforcing each other’s¬†usefulness in my mind and building more confidence in the experiments.

While it’s probably not the best first experiment to discuss, I’d like to write about¬†my most-recent one: a module that helps me write Erlang-inspired code for Node.js.

Continue reading Erlang-Inspired Node.js

My First Command Line Utility

I feel like a teenager who just discovered he has super-powers!

Angel showing off his wings
Image Source: Pop Mythology

Last year we gave our production servers the ability to send notifications to Slack and it’s been so helpful! Each one comes with all the relevant data, sometimes with a link to an admin page where you can fix the problem. It’s been truly empowering to deal with many types of problems¬†without needing to write code.

One of the notifications is for a problem we can’t fix without input from our customers, so we needed to move the data from Slack to a Google Spreadsheet we could share with them.

Quickly discarding the idea creating an endpoint that gave me a CSV-formatted version of the data, I settled on copying the text straight from Slack (it was already there for the copy-pasting so don’t judge me) to a file and writing a program to process the Markdown-formatted data from Slack to generate the CSV.

The formatting program itself is nothing special, so straightforward I didn’t need to import a single library to make it work, but you wouldn’t believe how much more useful the program got after a tiny change at the beginning and the end of the code.

Continue reading My First Command Line Utility

How To Gracefully Shut Down Express.js

What happens when you try to shut down an Express.js server while a user is connected to it?

This is a simple express server that waits ten seconds before sending a response to a user.

Let’s find out what happens when I connect to it and shut the server down before it responds to me.

Continue reading How To Gracefully Shut Down Express.js

Let Me Know What I Can Do Better

“But you already have a good physique!”, Oscar replied, his face matching the level of surprise in his voice.

Oscar’s a regular at the gym I’ve been going to for the last few months. We’d never spoken before today, but I was at the dips station when he wanted to use it so he started a conversation.

He did his dips flawlessly, so I asked him to watch my set and tell me where I can be better.

After the workout, I told him if he ever sees me doing an exercise improperly or has a tip to help me improve, he shouldn’t hesitate to let me know.

Getting advice at the gym

He seemed genuinely surprised that I’d take advice from him; maybe because it seems like I already know what I’m doing.

Thing is, the first time I ever worked out was just three years ago.

I still have no idea what I’m doing.

Continue reading Let Me Know What I Can Do Better

Why Do People Use My App?

“The learning and knowledge that we have is, at the most, but little compared with that of which we are ignorant.”¬†
– Plato
Just in case Plato is a little bit more refined than what you’re used to:

“Nobody will never ever really know, because the more you know, the more you know that you don’t know shit.”
– MF DOOM
It’s weird to realize and publicly admit that I have no idea why people use the app I spend most of my time working on.

Yes, I know what it says on the marketing site and pricing page. I know what features we have. I can tell you how many clients we have and how many of our client’s clients use our service.

Knowing all that doesn’t help me answer the most important question I need to know as someone who makes a living making software:

Why Do People Use My App?

Continue reading Why Do People Use My App?

Do It For The Dummies

I’m a dummy. I have so much to learn and an embarrassingly high number of things I’ve forgotten.

I’ve estimated it’ll take 10 minutes to do something and I’m still at it 3 hours later.

I’ve started tasks with confidence only to realize you need the manual to do finish what you started.

There’s nothing wrong with being a dummy. It doesn’t mean I don’t know anything; simply means the fields I know almost nothing about far number the ones I excel in.

das-bus1

Most people are dummies. Nobody has the time to master every subject and get real life experience in all of them.

Keep this in mind when you’re making things for people because chances are the person is a dummy. They don’t know a lot and they’ll often forget the little they knew a while ago. It’s not their fault. They’re too busy trying to be better parents, partners or people in general.

People you care about, work with, are married to or gave birth to are dummies. Lets make the world a better place for them. Do it for the dummies.

Most Important Slackbot to Install

While I’ve known about Slackbots for almost as long as I’ve used the service, they’ve mostly fallen into the “nice to have but not mission-critical” category.

Do I really need to spam the rest of the team every time a commit or pull request comes through? Do I need to know when an item has been checked off on trello if it wasn’t blocking my progress? Will I never get tired of DJ Khaled’s quotes randomly inserted into my conversations?

The answer’s almost always no, and as a result I’ve never really given Slackbots serious thought. Not until I discovered the bot I couldn’t live without.

Slackbot - forever happy :)

Continue reading Most Important Slackbot to Install