Joel, (always one syllable), often "@jayroh"


Back at it, (maybe?). Thanksgiving 2021.

26 Nov 2021

I would be remiss if I didn’t mention that it’s been well over 5 years – almost 6 – since I last updated this blog. Long time. Regardless, “there is no better time than now” right? So here I am, in an effort to dump some of the things that have been in my brain I am going to commit to seeing out the rest of the year by posting once a week, putting whatever pithy thoughts here that may have ended up on twitter or instagram.

I would like to give some credit to my friends Joe and Greg for their own projects – Joe’s own weeknotes, and Greg’s newsletter – for the inspiration to dust this thing off and smash the keys on this laptop. Thanks to both of them for the (unintentional) nudge.

This week was Thanksgiving. And while it’s our collective national responsibility to fill ourselves to bursting, watch football, and indulge in our favorite national pasttime (shopping), I, instead, took the time to really slow down and give my brain some time to recover.

What does that look like? A lot of reading. A lot of tinkering and research. And some self-care. To wit:

  • A trip to Comicopia ended up with the first volumes of Locke and Key, The Black Monday Murders, and Sweet Tooth.
  • Subscribing to GoRails - yay, Black Friday sales!
  • A meeting with Emma from All-Tru. Making a commitment to be nicer to myself for at least the next 8 months (at the least).
  • Learning a little more about Docker, docker compose, private networking, cloud hosting.

Misc Thoughts

  • I honestly can not believe this blog can still be built, still works, still does the job. Just goes to show what a great job the Jekyll team has done over the years.
  • The state of computer peripherals is a travesty. These days a new mouse requires a new app, an account on a poorly designed “cloud” app, and multiple computer restarts. All of for the sole reason of turning bright colored lights off a damn mouse. (At least this new one is not wireless)
  • Reading: Locke and Key 1, Hawkeye (2012 - Fraction & Aja) in prep for the new Hawkeye tv series.
  • Watching: Succession - what is going on with this 3rd season? Dexter “New Blood” - considering how the original series ended, anything they do here is an improvement.

1: First volume, “Welcome to Lovecraft”, is more brutal than I expected, but what else would I expect from Joe Hill (Stephen King’s son)? Fun fact - the town of “Lovecraft” is just a renamed Nahant, MA, which, when you look at the illustration of the place, is plainly evident.


06 Jan 2016

I am super excited to share what I’ve been working on for these past few months. is a SaaS product that allows you to outsource all of your image and file uploads, directly to S3 - never touching your app-servers, process/resize/convert your images, and provide you the file data back, via webhooks, for all of your uploads.

While accepting file uploads is no longer the tedious and arduous process it was years ago, it’s a process that can quickly and easily balloon to a non-trivial endeavor and touch many levels of your application stack. This is why I’m building It’s a facet of the web-stack that I believe can have the boilerplate abstracted, the busy-work automated, and the repetitive work outsourced.

Now don’t get me wrong, this task—uploading and processing files—is managable. There are plenty of tools that abstract this issue out. But when you’ve tackled this issue several dozen times, and would rather not work through the same boilerplate, that’s when it’s time to look for a more robust and managed solution.

Do you host your app on a platform like Heroku? File uploads on Heroku provide particular set of hoops you will now have to jump through.

Do you often accept dozens to hundreds of files? I hope your app server and stack can handle files tying up your resources (depending on your framework of choice, of course).

If you’re ambitious, you may have tried to upload your files directly from your browser to S3. Have you tried? It’s not entirely straightforward.

These are a few use cases where it’s not terribly difficult, but when an application feature set grows past a certain point, is here to help remove those pain points.

I’m really excited to announce as the various aspects of its feature set have been a large part of my own personal development toolbox since I started writing code 17 years ago. File uploads are going nowhere, so is here to make it an easier, better experience.

There are a few things I’ve been working on in beta form as they roll out, so keep that in mind. If you’d like to know more about the features, the business, or have some feedback, please do sign up for the newsletter, follow @shuboxio, or me (@jayroh), on twitter, or . I’d love to hear your thoughts on what you’d like to see provided by a service like

If you’re sold already - you can sign up and start using it now 🎉😃!

Correctly Syntax Highlight Your Shell Scripts

04 Jan 2016

Not all shell scripts are created equal. You may have a script, or maybe you call it do-something? Maybe it uses the bourne shell? Maybe bash? Maybe zsh? I don’t know. We all have opinions.

You’re probably using vim to edit that thing though, right? If you’re reading this, you probably do. Isn’t it bothersome when you’re editing that file and want it highlighted with the correct syntax? That’s easy enough, if you use the .sh extension.

au BufRead,BufNewFile *.sh set ft=sh

It’s less easy if you mix and match shells or don’t use the file extension. I sometimes don’t. In those cases I check for what’s going on in the she-bang.

au BufRead,BufNewFile,BufWrite *
      \ if getline(1) =~ "#!/bin/bash" |
      \   set ft=sh |
      \ endif

au BufRead,BufNewFile,BufWrite *
      \ if getline(1) =~ "#!/bin/zsh" |
      \   set ft=zsh |
      \ endif

Maybe that’s overkill. Have a better solution? I bet you do :). Let me know!

Writing in Markdown With Vim

02 Jan 2016

While writing a post yesterday I noticed there were some gaps in my vim setup for when I’m authoring a markdown file so here are a few tips for polishing up your markdown experience in vim, specifically for jekyll blogs.

Front Matter

Starting at the top, literally, with the front matter. It was looking a bit weird out of the box:

jekyll front matter better

It’s rather inconsequential data compared to the meat of the document, the actual content. I found a helpful blog post with some details that worked for me. The heart of which is to parse between the ---s and consider this content a comment.

au BufNewFile,BufRead,BufWrite *.md syntax match Comment /\%^---\_.\{-}---$/

After, it looks a little less odd.

jekyll front matter after


I prefer a little more space when I’m writing so I change the width before text wraps to something slightly more than my default 80 character width - like 100 characters. In my autocommand group I place something like:

au FileType markdown setlocal textwidth=100

Fenced-in Languages

If you have many, or maybe super-specific, languages and syntaxes you commonly use in your markdown you can specify them in your vimrc to be interpreted as such.

let g:markdown_fenced_languages = ['javascript', 'ruby', 'sh', 'yaml', 'javascript', 'html', 'vim', 'coffee', 'json', 'diff']


I use snipmate but I guess the same can be applied with something like UltiSnips? Probably. In any case, snippets are a lifesaver for the occasional piece of code or markup you can either never remember the exact syntax for, or are slightly awkward to type. For me it’s more often the former.


snippet a
snippet img
snippet front
	title: ${1:Title}
	author: Joel
	layout: post
	permalink: `strftime("/%Y/%m/%d")`/${2:slug}.html

The first two are for links and image tags, respectively. I consistently confuse the two so why leave it to guessing? The front snippet is handy in that date for the permalink is automatically populated when the snippet is expanded.

Preview Your Markdown

A tweet from Ches asking about previewing documents piqued my curiosity so I decided to look into it a little further. His suggestion to try the QuickLook plugin was met with failure, as he mentioned, as there’s some weirdness when you try to launch from terminal. From finder it seems to work just fine but that defeats the purpose of being vim-driven, right? The next best thing would be to leverage a native mac app to get a look at what our rendered markdown files look like. The app I prefer is called MacDown and has plenty of good features if you ever feel like dropping into a gui app instead of vim.

MacDown comes with a cli command you can use to open documents from the terminal but I’ve found that it doesn’t retain your preferences and switches to the defaults once you use it. Using OS X’s open command, however, does retain your preferences. So, about getting vim to play nice with this? Not so hard:

map <leader>pre :w<cr>:silent! !open -a MacDown % > /dev/null &<cr>:redraw!<cr>

So <leader>pre will now open up MacDown with the current document so I can get a good look. Not bad!

The changes to MacDown’s preferences I’ve found useful:

  • General > Put editor on the right. I don’t care much about the editor, so it gets shoved right.
  • Rendering > Detect Jekyll front-matter. For those of us jekyll users.

Helpful Plugins

  • goyo.vim plugin. A really nice distraction free writing plugin suggested by Thomas.
  • tpope’s markdown plugin. Arguably unecessary but provides some fenced codeblock extras.
  • Chris Toomey’s titlecase plugin. Teach Vim about titlecase, with support for motions and text objects
  • Chris Toomey’s quicklink plugin. This is nothing short of beautiful. A Vim plugin for quickly looking up a topic in google and inserting the relevant link. Bonus video with some insight on these two plugins from Chris.
Joel Oliveira

Hi, I'm Joel.

An engineering manager in Boston. Lapsed "tweeter" at @jayroh. Thinking about family, my (bull)dogs, code, comics, and building things like shubox.

Articles from 2012

Articles from 2007