Cube Drone


A New Character Appears

single image


alt: … and on Thursday, our new Build Engineer will be joining us.
Lain: Wait, we had 3 people who were applying for that. Who’d we get? |
Melissa Nguyen: Continuous Integrator, Ruby Expert, Arduino Hacker, Foodie. What about the other two? |
Athena: Stopped returning our calls when she found out our build was 40,000 lines of Bash. |
Sheik: Much better offer from Amazon

Cube Drone Patreon

Terrible Realization

single image


Melissa: So, where can I check out the build code?
Warbeard: Oh, it’s on the build servers. |
Melissa: Yeah, but where do you keep it?
Warbeard: I said, on the build servers. |
Melissa makes a very sour face.



Curtis Explains the Joke

I intentionally included a lot of fun Github Red Flags in this comic.

node_modules, .idea, .DS_Store

It is considered a coding faux-pas to include any of the following in your repo:

  • generated files (the output of a scss=>css transformation)
  • the output of compilation (a /bin directory)
  • external libraries (a /node_modules directory)
  • editor files (a .vimrc, .idea, or Visual Studio customizations)
  • unrelated files from your operating system.

Bad Commit Messages

asdfjkl;a is a terrible commit message.

Very Big Commits

asdfjkl;a also touches a lot of files. There are lots of reasons why small commits are a good idea. The biggest ones for me, though, is that it makes commit messages more readable and it makes rebasing way easier.

utils, tools, misc, stuff, things

These words all mean the same thing: “I could not think of a good name for this.” Try your best to think of a better name. Try your best to remove these words from your vocabulary. You can do it. You will write better code for it. Read Clean Code. Remember that there are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one-errors.


Say it with me, now: Every repo needs a readme! It should explain what the project is, any dependencies, how to install it, how to run it, and what it will do when it is run, at the very least.

Do you have more Github Red Flags? Tweet them at me, @classam!

single image


Sparky: So, what do you think of my new project? Pretty sweet, huh? |
A github repository: sparkyzhang/awesome_cms. Description: 'finally, a CMS that rocks."
39 commits, 1 branch. Most recent commit: ASDFJKL;A. Folders include ‘node_modules’, ‘file___0_split’, ‘.idea’, and ‘midi_files’.
Files include ‘index.js’, ‘misc.js’, ‘stuff.js’, ‘utils.js’, ‘things.js’, and ‘.DS_Store’.
There is no readme. |
Cube Drone: Yeah, it’s … great. Good effort.


Art of War

single image


Appear strong when you are weak, and weak when you are strong; Sun Tzu on strong vs. weak type systems. |
Treat your men as you would your beloved sons, and they will follow you into the deepest valley; Sun Tzu on dragging your team to Silicon Valley for a funding round. |
In the midst of chaos, there is also opportunity; Sun Tzu on PHP.


Team Portrait

I actually use these as character guides. They help me keep the color and character faces consistent between comics. Which, you know, I still don’t do super well, but I try my best.


Words With Colours

single image


Walt: Have you ever heard of synesthesia? |
Cube Drone: The lost Russian princess?
Melissa: The person who does my hair and nails? |
Walt: Wait, what?
Cube Drone: The stuff they use to knock you out during surgery?



single image


Cube Drone checks his watch: Company standup in five minutes! Ugh. |
CEO, on a video feed: Let’s talk about the meaning of the word “vision”.|
CEO: SWOT analysis key partner value-add directionality funding round valuation opportunity market position strategic IPO commoditification sales deck-measuring contest money VP of marketing the board wants money money dollars money
Cube Drone: Uuuuuuugh.


Relentless Persistence

single image


Problem: Javascript has almost no standard library.
Solution: Thousands of community-supported libraries of wildly varying quality.
Problem: Javascript has no packaging or a linker to tie those packages together.
Problem: Javascript won’t run outside the browser.
Solution: V8
Problem: Javascript is single-thread by design.
Solution: Asynchronous programming, node.js
Problem: Callback Hell
Problem: The DOM is too slow for video games.
Solution: Canvas
Problem: Javascript is too slow for video games.
Solution: Use an assembly-like subset of Javascript called asm.js
Problem: asm.js is basically unwritable by humans.
Problem: Prototypal Inheritance is pants-on-head stupid. (That’s right, I said it)
Problem: Web resources need to be minified and zipped for performance.
Solutions: Hundreds of community supported build tools of wildly varying quality.
Problem: Grunt
Solution: Gulp
Problem: Gulp
Problem: Machine-generated code is more difficult to debug.
Problem: Async is still a nightmare, huh?
Problem: Ballooning project size and complexity.
Problem: Output runs very slowly on mobile devices.
Problem: Javascript still doesn’t do everything.
Solution: Electron, PhoneGap, FireFoxOS

Cube Drone and Miloslav are digging in a giant hole.
Cube Drone: How is digging going to get us out of this hole?
Miloslav: Where I am from, the point of digging is not freedom from digging.


Versioning Schemes

Of course, the full Drone-Ver specification is available here.

single image


Versioning Schemes - Semver:
2.12.28, where the first part is major version, updating on changes that are not backwards compatible. The second part is minor version, updating on changes that add functionality. The third part is patch version, updating on bugfixes. Good! |
Ubuntu: 15.04 Vivid Vervet. That’s year, month, and an alliterative animal of increasing letter value. Ok! Trouble in fall 2017? |
Windows: 3.1, 95, 98, ME, XP, Vista, 7, 8, 10. Wait, what? |
Drone-Ver: 18.relieved.138.12.pickle.1436966326.7, where it’s Major Version (romantic), developer mood, number of open GitHub issues, forks and faves, a random dictionary word, the Unix time, and always the number 7.

Drone-Ver Versioning Specification

Digital Entendre

single image


CEO: It’s important! Our competition is coming. Our competition is coming hard… |
: And our competition is coming fast.
Cube Drone: Oh god not in my face! |
Walt angrily mutes the conference call.


Duckie Blanket

single image


When you’re sick, you genuinely want to help your team. Cube Drone: Sure, I’ll look at the admin module! |
But your reserves of focus and mental acuity drain quickly. (Cube Drone is sleeping under a duck blanket) |
Which can make status updates difficult. Miloslav: What’s your status on the admin module? Cube Drone: I sweated through my jeans and managed to eat a whole piece of toast.


Software By Composition

Graph jokes!


6% Code
10% Tests
4% CYA
10% Diva bullshit
8% Arguments about Duck Typing
8% Wearing a cape to work
1% Off-by-one Errors
17% Getting pissy and defensive about code reviews
14% Tech debt
14% Copy and pasting from Stack Overflow
6% Aeropress
0% Documentation


Still Crazy After All These Years

single image


Cube Drone walks by a server room that’s whirring and gurgling. |
Cube Drone: Hey, Walt, I didn’t know we had a server room. Aren’t we entirely on cloud services?
Walt: Yeah, but Milo says there’s still equipment we need in there. |
Milo is operating a moonshine still out of the server room.


Two Hard Problems

This comic has a cross-panel transition that doesn’t split well. So you get it like this!


Miloslav: There are only two hard things in Computer Science. |
Walt: Cache invalidation and naming?
Miloslav: What? No. |
Miloslav (flexing his biceps): These!


Smart and Gets Things Done

This one guest colored by the talented Tiffany Thoreson.

single image


Walt: We’re hiring for Smart and Gets Things Done. |
Lain: I feel like those shouldn’t be our only criteria.
Walt: What are we missing? |
Lain: How about “not likely to burn the company to the ground in a fit of rage”, “hygienic”, and “able to communicate without accidentally cramming both hands in their mouth”.


Severity 1

single image


Warbeard gets a text: Boop! |
Warbeard: A severity 1? Seriously? Someone had better be in mortal danger or I’m going to be angry. |
Smoke is pouring out of the server room.
Warbeard: Ok, good use of a severity 1.


Automated Animosity

single image


Code. The top comment is “this code was generated by a tool.” |
Cube Drone frowns. |
Cube Drone (angrily): Who keeps adding mean comments to my code?


Stack Rankings


“Oh god, somebody’s smashed my laptop!”
Milo is walking with a putter in his hands, whistling to himself.
Staying on top of the stack rankings takes persistence, dedication, and a blunt object.


Magic is Real


Poof! Now your code is garbage! : The Singleton Fairy.


Free Stuff and Naps


Conference Guy: Here’s your headphones and your soft pillow! Conference room A is for napping. Conference room B is for quietly hacking while soft electronica plays.

There is actually no such thing as a “Developer Conference”