Avatar of Justin Dorfman

Justin Dorfman

Developer Evangelist at StackShare
Avatar of jdorfman
Developer Evangelist at StackShare·

The following will be a series of decisions we made that took BootstrapCDN from 0 to over 74 billion requests a month (and growing).

Initially, I didn’t want to do BootstrapCDN. I have attempted a few projects like it before and they always failed to gain any traction. In June of 2012, my boss at the time (and good friend today), David Henzel got a BuzzSumo Alert coming from an #OpenSource project on GitHub called Bootstrap and someone mentioned that MaxCDN was always looking for projects to sponsor. Long story short, David registered the domain and told me to get to work.

The first version of the site was written in PHP. It was quick and dirty but met the scope. We beta tested it for a month then people started to use it after searching for “bootstrap cdn” on Google.

I was still skeptical until, well, that’s for the next decision.

AMA below. 👇

READ MORE
11 upvotes·73.6K views
Avatar of jdorfman
Developer Evangelist at StackShare·

This is the second Stack Decision of this series. You can read the last one to catch up (link below). Bootstrap, Jacob Thornton aka @fat tweeted about #BootstrapCDN and according to Google Analytics, that sent 10k uniques to the site in 24 hours. Now I was pumped but I knew I was way over my head and needed help. Fortunately, I met my co-maintainer Josh Mervine at the 2013 O’Reilly Velocity Conference and we hit it off immediately. I showed him the MaxCDN and Amazon S3 stats and his eyebrows went up. When I showed him the code, he was very polite, “well, I mean it works but I really want to try Node.js out so I’m just going to rewrite everything in Node and Ruby for the S3 scripts.

I didn’t know what to expect from Josh, to be honest. In the next decision (part 3), I will go over how he completely transformed the project.

AMA below 👇

READ MORE
Justin Dorfman's Stack Decision | StackShare (stackshare.io)
9 upvotes·71.8K views
Avatar of jdorfman
Developer Evangelist at StackShare·
Shared insights
on
Visual Studio CodeVisual Studio CodeAtomAtom

A few months ago, I decided I would try Visual Studio Code. I resisted for so long because I knew I would love it and would then have to find alternative extensions for the ones I have installed in Atom. Fast forward to today and I'm kicking myself for not doing it sooner.

Extensions that I use:

What VSCode extensions do you use? 👇

READ MORE
8 upvotes·20K views
Avatar of jdorfman
Developer Evangelist at StackShare·
Shared insights
on
JavaJavaMaxCDNMaxCDN
at

This is the fourth Stack Decision of this series. Read the last one to catch up.

My friend and I were driving up to northern California, I got a tweet saying that their corporate anti-virus software was reporting that certain files on BootstrapCDN contained malicious code that installed Java malware on Windows XP workstations. The hackers were clever, using MaxCDN's #API they found a way to update the origin server URL & port (8080) to their server and only updated a few files to fly under the radar.

I thought it was over, who was going to use BootstrapCDN after this? Well, like earlier I was wrong again. After the postmortem was written people left comments and emailed us saying “thanks” which I can’t thank those who did, it kept me going. Which was needed because the next wave of issues are coming in part 5.

AMA below. 👇

READ MORE
Justin Dorfman's Stack Decision | StackShare (stackshare.io)
8 upvotes·15.5K views
Avatar of jdorfman
Developer Evangelist at StackShare·
Shared insights
on
Visual Studio CodeVisual Studio Code
at

I'm currently working on a project that requires me to work in a #YAML file a lot. If you use Visual Studio Code and find yourself doing the same, I highly recommend installing vscode-yaml by RedHat.

Not only does it detect whether your file(s) are valid .yaml it also does autocompletion among other things.

READ MORE
GitHub - redhat-developer/vscode-yaml: YAML support for VS Code with built-in kubernetes syntax support (github.com)
6 upvotes·2K views
Avatar of jdorfman
Developer Evangelist at StackShare·

When my SSL cert MaxCDN was expiring on my personal site I decided it was a good time to revamp some things. Since GitHub Services is depreciated I can no longer have #CDN cache purges automated among other things. So I decided on the following: GitHub Pages, Netlify, Let's Encrypt and Jekyll. Staying the same was Bootstrap, jQuery, Grunt & #GoogleFonts.

What's awesome about GitHub Pages is that it has a #CDN (Fastly) built-in and anytime you push to master, it purges the cache instantaneously without you have to do anything special. Netlify is magic, I highly recommend it to anyone using #StaticSiteGenerators.

For the most part, everything went smoothly. The only things I had issues with were the following:

  • If you want to point www to GitHub Pages you need to rename the repo to www
  • If you edit something in the _config.yml you need to restart bundle exec jekyll s or changes won't show
  • I had to disable the Grunt htmlmin module. I replaced it with Jekyll layout that compresses HTML for #webperf

Last but certainly not least, I made a donation to Let's Encrypt. If you use their service consider doing it too: https://letsencrypt.org/donate/

READ MORE
4 upvotes·108.9K views
Avatar of jdorfman
Developer Evangelist at StackShare·

I use CloudApp because it saves me so much time and energy. I use it at the very least once an hour. When Skitch was shutdown I thought my life was over! CloudApp saved the day and gave me features that Skitch didn't have.

If you write a lot of technical content (or any content for that matter) it is an invaluable tool. I'm not sure about Windows support but it integrates flawlessly with macOS. 🤘

READ MORE
4 upvotes·18.9K views
Avatar of jdorfman
Developer Evangelist at StackShare·
Shared insights
on
MaxCDNMaxCDNnginxnginx
at

This is the fifth Stack Decision of this series. Read the last one to catch up.

One thing that happens when your service gets really popular is that you start running into server capacity issues. From day 1 we launched with #SSL, which might seem like “well duh” today, but it wasn’t that common in 2012. Jump to circa 2015 and the service is doing ~4k request per second (on average) and over 75% of those are SSL, puts a lot of stress on the CPUs.

At the time, MaxCDN deployed a custom build of nginx and we optimized the hell out of it. What we ended up having to do was basically dedicating a server in the busiest datacenters (PoPs) just for BootstrapCDN. Most enterprise customers didn’t even get their own (because they didn't need it). The engineering team did some other cool optimizations but I honestly can’t remember verbatim. Hopefully, they can comment on this. I’m lucky because this allowed me to work with some really great engineers, inside and outside of MaxCDN. Specifically an engineer by the name of XhmikosR. That’s in part 6.

AMA below. 👇

READ MORE
Justin Dorfman's Stack Decision | StackShare (stackshare.io)
4 upvotes·14.9K views
Avatar of jdorfman
Developer Evangelist at StackShare·
Shared a protip
on
cURLcURL
at

To view the HTTP headers of any URL all you need to do is run the following with cURL:

$ curl -I https://example.com

The response should look something like this:

HTTP/2 200
accept-ranges: bytes
cache-control: max-age=604800
...
x-cache: HIT
content-length: 1270

If your URL has query strings then you will need to add double quotes:

curl -I "https://example.com?query=string&foo=bar"

READ MORE
4 upvotes·3.8K views
Avatar of jdorfman
Developer Evangelist at StackShare·

I use Trello, the macOS app for my personal projects and Google Chrome for work. At work, I have 7-8 active boards for various projects.

At first, I wasn't sure about Trello. The last company I worked at used Asana and I was really used to that. Before then I was using Jira. Now I ❤️Trello. It is amazing. Power-Ups™️ are so awesome!

For personal projects, I have used it for planning a move across town. I'm also using it for my Wedding. I got my fiancè almost loving it too.

READ MORE
3 upvotes·69K views