Punchline Movies

Some Like it Hot

I really love movies that end on a punchline. There are a few movies out there that just feel like gigantic lead-ins to a single punch-line ending, like the whole movie is one winding joke being told in a smoky bar.

One such movie, "A Boy And His Dog", is based on a Harlan Ellison short story. The whole movie - long, dark, abstract, super misogynistic, and pretty terrible, start to finish - ends on a really unexpected cannibalism joke. "Well, I'd certainly say she had marvelous judgment, Albert, if not particularly good taste." Especially contrasted with how dark and humorless the rest of the movie was, I think I laughed for five solid minutes. It made the whole movie seem worth it for me.

"Some Like it Hot", 1959 comedy classic, has a man, Jerry/Daphne, who, attempting to escape his mafia creditors, is disguised as a woman for the better part of the film. Jerry/Daphne manages to successfully win the heart of Osgood Fielding III, a millionaire who Jerry intends to bilk out of a great deal of money. At the end of the movie, Osgood has bravely rescued Jerry/Daphne from some mafia goons, and Jerry/Daphne - who has begun to experience some real feelings for Osgood - is creating every excuse that he can to try to convince Osgood that marrying him would be a bad idea. She's a smoker! She's barren! Osgood dismisses them all, one after the next, until Jerry/Daphne, exasperated, takes off his wig and reveals that he's a man.

"Well, nobody's perfect."

Reddit Asks: Compact Code

PEP8 vs. V05

Won't I have a hard time getting a job if I can't write my code compact enough?

First of all, no. I don't think you will have a hard time getting a job if you can't write your code compact enough. Unfortunately, a lot of job getting is measured by being able to answer questions on a whiteboard that have no ability to predict whether or not you are a good programmer.

There are lots of jobs where you are only measured by your ability to produce working code, not by any metrics of quality. Of course, you might not want to work for these companies so much - the code you'll face will be nightmarish and byzantine and you will hate everybody you work with all of the time.

There are lots of jobs that deeply respect code quality, and most of these jobs are aware that junior employees often need some guidance in this area, which is why they do pairing and code reviews in order to help guide your code towards elegance.

There are also lots of jobs that simply won't hire you if you can't produce good code. So those ones will be out. But at this point in your career you have a ways to go before that's a real problem.

Second of all, "compact" is a bad measure. Code quality can be measured on numerous factors.

  • Clarity. Can an average programmer quickly understand what your code is doing?
  • Documentation. Can an average programmer quickly understand why your code is doing what it is doing, how to install your code, and how to use your code?
  • Testability. Can you prove that your code works the way that you claim it does?
  • Efficiency. Does your code solve the problem at hand quickly, and without wasting memory, disk space, or CPU?
  • Elegance. Do the data structures and abstractions that you have used to frame the problem at hand make the code simple to write and easy to understand?
  • Flexibility. If you needed to use this code again on a very similar product, could you?

On top of that, sometimes these goals are at odds - a hard-to-explain block of unclear code might be crucial for performance, for example. Some people have a real tendency to write code that can solve any problem (high flexibility) at the cost of being incredibly complicated to use in practice (low elegance), inspiring terms like KISS ("keep it simple stupid") and YAGNI ("you aren't gonna need it")

So, "compact" is sort of a second-order indicator that the programmer has chosen a clear, elegant abstraction, but it is not necessarily true that code that is compact is code that is clear, testable, readable, or even sane.

Learning to write code that is good by all of these many measures is a lifelong project, and not something you're expected to master in your second programming course. Most companies understand that young coders are not well-seasoned masters of this quite yet.

Leading The Transformation: I Read It So That You Don't Have To - Chapter 1

Variations on a Theme

The words "IT Revolution" are on the front of the book, so if you don't read carefully you might end up holed up with a bunch of guns in a remote wildlife sanctuary.


The advice in this book was very successful at HP and Macy’s, two lumbering tech giants who are still relevant in this day and age, dammit.

Chapter 1

Some organizations use Agile and DevOps to make software faster than you do. This is probably what Google, Amazon, and Facebook are doing, but Google, Amazon, and Facebook don’t produce all of the software. (yet).

Did you know that software is important? Hands up if you haven’t yet noticed that software is stupid important in every industry now. You, you, and you - with your hands up. Please leave. There is nothing for you, here.

You are bad at making software. Yes, you, large traditional organizations. You use SAP software to manage your payroll, you have 11,000 employees, and your projects always take at least 2 years and at least 5 million dollars. You know who you are. Most of your software either can’t survive without an enormous sales team or was purchased from a different company that also had an enormous sales team using an RFP process that involved no less than three separate acts of inconceivable depravity and a game of golf. Somehow you’re having trouble competing with companies that can make good software with 6 guys and a Foosball table.

Some of your employees tried agile, but the inherently poisonous and change-resistant nature of your thick bureaucratic miasma killed everything they tried. They couldn’t get buy-in from 18 different departments without a F-923 Schedule, Project Plan and Budget Breakdown that successfully navigated the 4 Goalposts of Project Innovation Success, and they gave up and went back to doing things the same way as the rest of the company. So instead of telling you how teams can be agile, we’re going to tell you how whole companies can be agile.

Using the techniques in this book, some people at HP made some bad concrete numbers go down, and also some good imaginary numbers went up - by 35%!

We found that the techniques didn’t make teams any more productive. How could it? They’re already working 8 hours a day, 5 days a week. It’s not like they weren’t working before. Instead, our whole organization has stopped communicating entirely via poorly-worded design documents and day-long-meetings, resulting in a massive decrease in miscommunication and day-long-meetings.

In Chapter 2, we will dissect The Waterfall Method - a model first introduced to the world in 1970, in a paper by Winston Royce that explained that it was a terrible idea and how to avoid it. Somehow, despite being a prominent example of failure from its very inception, it still managed to become the dominant ideology in megacorp software design, because large corporations are very, very inefficient.

Why are you doing this? Are you a trend-follower? Are you just “doing Agile”? Make this change to your organization, not because it is trendy, but because we told you that it is good and we are very trustworthy.

In Chapter 3, we’ll tell you, executives, how to lead the transformation. (If you have been handed this book by an executive, you should probably skip chapter 3, to keep the surprise alive.) You’re going to start by putting in place business objectives and a continuous development process.

Watch out, executives! While you’re doing this, some of the numbers might not go up right away! You might need to manage by something other than sheer metrics. We know it’s hard to pay attention to what’s happening in your company when there’s golf and cocaine out there, but please do, at least during this transition! Golf and cocaine can wait! It will take years of effort. Laying out what you’ll be doing in those years of effort? That’s right, Chapter 4.

HP has enough employees that if the entire city of Saskatoon decided to leave abruptly for a hockey tournament, HP could provide a replacement for each person in the town and still have enough people left over to fill a stadium. For the sake of sanity, instead let’s imagine we have 100 people.

Here are some key buzzwords for this chapter, accompanied by clip-art:

  • Business objectives
  • Enterprise-level Continuous Improvement
  • Applying DevOps Principles at Scale
  • Planning & Prioritized Backlog

Clip Art 4 Business

Once you’ve captured business objectives and continuous development in your Pokemon collection, you’re going to need to go into the tall grass and collect some Agile and DevOps principles.

Understand that software is not the same as manufacturing wallets or whatever the fuck it is that you do. Software is different every time you make it and you usually fail at it because you are terrible. Most of the planning you do will be wasted. In Chapter 5, we’ll talk about how to do planning anyways, but way less often.

Once you do have working software, you probably have to keep it from falling over when somebody looks at it too aggressively or by sneezing in your data center. Most organizations treat these symptoms with manpower, constant panic, and by being super averse to change. We think we can do better, and we’ll talk about how in Chapters 6-11. Your employees are too stupid or unmotivated to fix this on their own, so it’s on your shoulders, suit-wearing executive stud man.

Years of working in unlit caverns and getting beaten by sacks of doorknobs will have rendered your employees sad and fearful, so the biggest change you’re going to have to make is convincing your employees that change is not to be feared, and almost nobody will be sacked.

We’ve talked a lot about changes while imparting almost zero actual knowledge of the process we plan to put in place, and we’re almost out of time in this chapter, so let’s cram it all into one paragraph:

“Developers create a stable trunk in a production-like environment as Job #1. Developers and Operation teams use common tools and environments to align them on a common objective. The entire organization agrees that the definition of done at the release branch means that the feature is signed off, defects-free, and the test automation is ready in terms of test coverage and passing rates. The organization embraces the unique characteristics of software and designs a planning process that takes advantage of software’s flexibility.”

Pow. We should have put that on the cover. We could have saved everyone a lot of time.

Anyhow, let’s start this book.

PHP Bashing and Jim Davis

Fine Art

Hey, article about making fun of PHP, I feel like you're written about me, because I have an ego the size of the moon.

I hate PHP, but because I programmed in it for 7 years and familiarity breeds contempt. Most PHP developers know that PHP itself is pretty bad - most of PHP development is working around the many, many failings of the language. I have worked with some very talented and intelligent PHP developers, and the workarounds people have built to improve PHP have become sizable technical products that are impressive on their own merits. I have very specific (and even "constructive") feedback about a number of things in PHP because I think that it could be better, but instead of trying to fix those things from inside of the community I just take the good things I like and try to bring them to other languages.

That being said, it does lead me to rail on PHP now and then, especially when I'm making a cheap joke. I certainly don't want people to think that that means I have a lower opinion of PHP programmers than other programmers. Many of my more thoughtful jokes about PHP have established my real feelings towards it as a practical workhorse language with a lot of strange behaviors. I'll try to make less mindless jab comics.

I did poke some fun at Java at PyConf in 2015, - Java does something with Hash Tables that applies a seemingly random huge performance hit to your code and I wanted the world to know, but I phrased it as a sort of jab at the language itself, which might even be the making-fun-of-Java-at-a-python-conference-in-2015 that the article mentioned! I'm delivering that presentation this year against at an O'Reilly conference and I'll take that part out.

The reasons that I chose Mondrian for Java and Jackson Pollock for Perl should be obvious enough, but I think that the reason I chose Jim Davis for PHP might deserve a little bit more thought. Did you think that was a jab at PHP, because comic art is not real art? I'm a cartoonist. We may disagree about that. Still, Garfield is no Sin City, or even Calvin & Hobbes. It's practical, lowest-common-denominator art that's prized for its accessibility rather than for its quality. It brings people into the world of comics. Some people use it to make very cool things. It makes a lot of money. It's fantastically successful, and deservedly so. ANALOGY COMPLETE.

Now read this joke about Django documentation.

What's Wrong With Dill?

Pickled Pythons

So this is a true story.

Automatic binary serialization (pickle, dill) is super convenient and a great way to make a quick proof of concept. I've used it more than my share of times to whack together some kind of serialization for a project I'm working on. But, just like real pickles, these solutions start to go really bad around the 2-year mark.

Dive Into Python3 says, quite sensibly, that the only time it's reasonable to use pickle is when "the data is only meant to be used by the same program that created it, never sent over a network, and never read by anything other than the program that created it." The trick there, I think, is that no program is going to be "the same program that created it" 2 years later unless you've abandoned support for that program entirely.

Text based formats are

  • Human readable.
  • Compressible.
  • Easy to pass between systems.
  • Easy to modify with quick scripts

Dill is a better Pickle, but it has all of the same problems that Pickle has: it's probably not the right tool for the job.

  • If you're messaging, you probably want a well-defined binary messaging format, or a text-based format. (RabbitMQ does support pickle, though - here's someone discovering that this is a problem and switching to JSON)
  • If you're storing lots of data, you probably want a database of one kind or another.
  • If you're storing little bits of data, you probably want a text-based format.

But, all that being said, when you need to crack something together for a hackathon or over a weekend, pickle is a frigging godsend, and having the ability to save and load a session is pretty useful.

Surface Pro 3

Poop Helmet

I bought this tablet as an art tool - I was looking for a lightweight, portable alternative to the Cintiq and the Surface Pro 3 had some pretty good buzz.

My less-than-one-month-old Windows 10 Surface Pro 3 is about as stable as Greece's economy. On a 10 hour flight to France it required 4 restarts to keep it running. It would lose track of the mouse, it couldn't keep straight whether it was supposed to be in Tablet Mode or Laptop Mode, at one point it full-on crashed so badly that I had to consult an online resource to see how to get it to turn back on again.

On top of that, the awkward form factor of the device - heavy tablet portion, light fabric keyboard - renders it a clumsy, tip-over prone laptop as well as an uncomfortably large tablet. It's not so good at any of the things it's supposed to be.

I left it with Tiffany to see if she felt the same way:

"There are still quite a few shockingly shitty things about the Surface, despite being an ok drawing tool. The constant crashing is a real problem. And the camera is total bullshit, from what I can tell. It seems to have no ability to focus. And resting your hand on the tablet while you draw ceaselessly confused it and brings up constant menus. Frustrating. It's almost a functional device, but it's so damn buggy. That's a crazy price tag on an item that basically can't stay stable for more than an hour."

So, okay. I thoroughly regret buying the Surface Pro 3. It is a bad device and it should feel bad. I am unlikely to buy another Microsoft product.

Yes, This is An Actual BBC News Story

Advantage VR

This is a real story that the BBC actually published (except for the Roomba bit)

Videos of the Roxxxy and the True Companion website itself are rich veins of internet comedy. This is, quite possibly, the least compelling robot ever designed.

That Sex Roomba is great. I want a sticker of THAT.

A real, unedited terminal session from a moment when I was frustrated with appium

Say You'll Go

~/.ssh ❯❯❯ say "butts butts butts butts butts butts butts butts butts butts butts" 
~/.ssh ❯❯❯ say "whoop there it is"
~/.ssh ❯❯❯ say "whip it good"
~/.ssh ❯❯❯ say "you can whip it"
~/.ssh ❯❯❯ say "flump"
~/.ssh ❯❯❯ say "floomp"
~/.ssh ❯❯❯ say "floump"
~/.ssh ❯❯❯ say "through"
~/.ssh ❯❯❯ say "rough"
~/.ssh ❯❯❯ say "facebutts"
~/.ssh ❯❯❯ say "the internet"
~/.ssh ❯❯❯ say "interbutts"
~/.ssh ❯❯❯ say "butts ahoy"
~/.ssh ❯❯❯ say "ahoy there butt sailor"
~/.ssh ❯❯❯ say "flumpitudinational"
~/.ssh ❯❯❯ say "groovitational"
~/.ssh ❯❯❯ say "glurg"
~/.ssh ❯❯❯ say "chump"
~/.ssh ❯❯❯ say "hey there, chump"
~/.ssh ❯❯❯ say "champ"
~/.ssh ❯❯❯ say "buttwich"
~/.ssh ❯❯❯ say "dunwich"
~/.ssh ❯❯❯ say "you are eaten by a grue"
~/.ssh ❯❯❯ say "hello there children"
~/.ssh ❯❯❯ say "hey? how? are? you?"
~/.ssh ❯❯❯ say "butts! butts? butts butts. butts."
~/.ssh ❯❯❯ say "butts! butts? butts butts. butts. butts butts!""
~/.ssh ❯❯❯ say "butts! BUTTS!""
~/.ssh ❯❯❯ say "hey"
~/.ssh ❯❯❯ say "butts! butts"
~/.ssh ❯❯❯ say "butts! butts. butts! butts. butts? butts? butts! butts."
~/.ssh ❯❯❯ say "butts! butts. butts! butts. butts? butts? butts! butts."
~/.ssh ❯❯❯ say "butts? butts. butts? butts."
~/.ssh ❯❯❯ say "oonts"
~/.ssh ❯❯❯ say "oonts oonts oonts oonts oonts? oonts. oonts? oonts."

Re: Your Brains

Storm's A Brewin'

JetBrains is changing their payment model across most of their popular products.

Apparently r/programming is real mad about a for-profit company asking for money for their closed-source products in a different way than they were asking for money before.

While I personally don't harbor any ill will towards this particular monetization strategy, the suite of tools that they provide would have to be significantly more compelling before I'd be willing to switch over from my precious Vim and iTerm combo.

That being said, when I worked at a C# shop, in order to quell the constant low-level tide of people bitching about various style decisions in the codebase, we made the automatic output of the ReSharper formatter (configured in a specific way) the Law of the Land, and in this way alone JetBrains earned their keep.

Amazon Ranting

Office LAN Party Planning

This guy has lots of things to say about Amazon.

I am an autodidact (my formal education only tangentially describes what I can do), and a polymath (capable of holding my own amongst PhD-level Operations Researchers, Statisticians, Econometricians, Data Scientists, Computer Scientists, as well as Software Engineers).


I love to solve real world problems, and in many ways am the perfect type of person for Amazon's culture.

Scratch that - in many ways I'm the perfect type of person. Look: birds wherever I go. Also I can toast bread with the heat from my abs.

I started in a level 5 position, but felt from the beginning that I warranted a level 6 position.

Because at Level 6 you get "Improved Fireball" which does 2d6 damage.

My job description could be summarized as: Do whatever the fuck you can to save Amazon lots of money. And I did exactly that. Within my first year, I had created and directly implemented projects that saved Amazon a recurring annualized 7 digits.

I did that at TELUS for $52,000/yr. All you have to do is save lawyers fifteen minutes a day and have lots of them.

In my third year, I had created a project that required direct investment and couldn't be finished within the year, but had been verified through significant simulation on production systems to be worth 9 digits of savings annualized.

Like, nine separate digits? One dollar, nine times? Otherwise I'm finding this somewhat implausible.

So why was I not promoted? There are fair criticisms of my personality that I'm willing to accept as legitimate.

Lots of fair criticisms. Lots of unfair criticisms. Criticisms from random strangers. The Barista had some things to say.

I accomplished my goals, but I didn't gain peer support...partly because in order to accomplish my yearly goals I had to alienate my peers. I had to tear down their pet projects that were inhibiting progress, I had to inform them of misinterpretations of data that they held dear, and I had to make specific types of failures as obvious and clear as possible, whether that was with a bug report or a published analysis.

I was willing, able, and happy to crush my co-workers under my boot-heel to be successful in my own tasks, and yet somehow they don't think I'm a "team player".

What makes this worse is that in order to be up for promotion, your boss has to "put you up" for promotion, which involves him/her writing a document detailing your accomplishments and arguing before his peers as to why you should be promoted in an effort to secure unanimous agreement.

So... you work at Everywhere, Ever.

If he has 3 Carl Sagans on his team, only one of them is getting promoted.

Well, he could write 3 letters. Political capital isn't a physical coin that you spend. It seems like you don't understand office politics AT ALL, but that was pretty clear from the get go. Plus, look on the bright side: 3 Carl Sagans.

I always prioritized my work based on a cost/benefit estimate. Amazon culture always places higher priority on work that direct-line superiors consider higher priority.

Are you the CEO? You are not the CEO? Well then you don't get to choose the strategic direction of the company. Want to choose the strategic direction of the company? Be the CEO.

Even then, I had to directly refuse to work on a VP escalation [1] in order to finish up with hundreds of simulations that I was running.

VP like "Vice President"? No wonder you didn't get that promotion.

It is literally impossible to get clear feedback from your manager as to what you actually have to do to get promoted, because all they are allowed to share with you is this bullshit facade. Unfortunately, it took me 3 years to wisen up to the charade.

This is like r/redpill but for software developers. "I worked all my muscles and tried all the social engineering but the ladies still didn't like me!"

The culture of amazon has evolved. I can still see remnants of a culture inspired by libertarian philosophy...a meritocratic ideal where only the best of the best survived and the company at the time was better for it.

You take your social darwinist bullshit and peddle it elsewhere.

Much like the apocraphal frog in the slowly boiling pot of water...

you're delicious with butter. Er, I mean, "apocryphal".

In my time here, I have made several attempts to make sure I'm not crazy and validate my negative feelings about a coworker by asking other people...

FYI this is one of those things that drains your political capital and causes people to start leveling criticisms at your personality.

You are currently barrelling down the ocean in a TI-class supertanker at full speed...

would you describe 30km/h as barrelling? That's a little faster than the top speed of a Segway or a Rascal mobility scooter.



Two Out Of Three Ain't Bad

I convinced my talented girlfriend-slash-roommate to color this one for me, and it came out rather nicely. I wonder if I'll be able to bribe her to do it again?

Small Classes Big Classes

Conference Call


I was discussing some of the finer points of coding with my boss yesterday, and we're somewhat diametrically opposed on some points. In the end, he brushed aside my suggestions as "style differences" but I think it's more of a maintainability issue, and I was curious what the rest of you thought. I'll try to present both sides neutrally.

When designing a system in an OO environment, is it preferable to have fewer, larger classes with similarly few methods, or many classes and methods, and at what point have you gone too far in one direction?

My Answer

It feels like there's a bit of a hole in the "few classes/few functions" vs "many classes/many functions" dichotomy. In a system with fewer classes, those classes will require many functions as each class will be dealing with more state and performing more tasks. So it's "few classes/many functions" vs "many classes/few functions".

I prefer to keep classes as small as reasonably possible. Imagine a single instance of your class in isolation, as its own application. Each instance variable is functionally a global! The bigger that this unit becomes, the harder it gets to test, maintain, manage, and reason about. Global state needs to be cached in your memory all of the time while you're coding, so if a class has more than about 7+-2 instance variables that need to be reasoned about, you're going to make mistakes. Having many variables also vastly increases the number of potential "error" or "invalid" states your class can be in. Can you reasonably check for all of them?

Martin Odersky, describes "shared mutable state" as the root of all evil, and his language, Scala, focuses really tightly on forcing developers to either treat state as immutable, or keep it tightly under wraps. The mutability checking is statically compiled into the language. Seriously if it weren't for rampant abuse of operator overloading and the ongoing nightmare that is the JVM, I'd be a dyed-in-the-wool Scala advocate. The bigger a class gets, the more shared mutable state that class has.

"As small as reasonably possible" can be hard to manage, though. Code wants to intertwine. How do you keep classes small and minimize shared state?

I seriously distrust deep inheritance trees. Not for C++ programmer reasons like "vtable lookups" - if I cared about performance I wouldn't be a Python programmer. My problem with deep inheritance trees is the widening avalanche of state that gets bigger and uglier as you travel closer and closer to the object that you're actually using. Reasoning about code at the bottom of the tree requires knowledge of every step up the entire chain. A small class in a deep inheritance tree is just a LARGE CLASS.

People who are stuck with Java are forced to favor composition/interfaces over inheritance ( https://en.wikipedia.org/wiki/Composition_over_inheritance ) - whereas C++ and Python offer multiple inheritance, and Scala and Ruby offer mixins and traits - making it possible to build very broad inheritance trees where individual classes only focus on managing small parts of the class.

Scala also borrows from Haskell a focus on allowing programmers to build functions that just take small immutable objects as arguments and produce small immutable objects as output, which is composable as fuck and easy to test and awesome to the power of cool.

okay I'm dithering all over the place here

Lots of small classes! Immutable if possible! Share as little as possible! No deep inheritance trees!

The Complete Drone-Ver Specification

Version Sacrifice

This also lives at drone-ver.org.

Drone-Ver v.1.sleepy.0.0.calamitous.1437363538.7


Given a version number MAJOR.MOOD.ISSUES.SOCIAL.DICTIONARY.UNIXTIME.SEVEN, manage your releases as laid out in this comic :

  1. MAJOR is incremented when you feel like you've added something cool.
  2. MOOD is how you felt when you released this version.
  3. ISSUES is the number of open GitHub issues against your project.
  4. SOCIAL is the number of GitHub forks & favourites of your project.
  5. DICTIONARY is a random dictionary word.
  6. UNIXTIME is the unix time, and
  7. SEVEN is always the number seven (7).


In the world of software management, there exists a dread place called "San Francisco." The bigger your system grows and the more packages you integrate into your software, the more likely you are to find yourself, one day, in this pit of despair.

In systems with many dependencies, releasing new package versions can quickly become a nightmare. If you don't want to end up in San Francisco with the rest of the developers - or worse, in Silicon Valley - you're going to have to do everything that you can to make versioning even harder.

As a solution to this problem, I propose a simple set of rules and requirements that dictate how version numbers are assigned and incremented. These rules are mostly based on what I thought would be most entertaining at the time that I first came up with Drone-ver. For this system to work, you need grim-eyed determination and a madness that seeps out of every pore in your being, affecting both your work and your relationship with others. It is probably best if you not work on a Drone-ver project with other developers, as your respective moods might become horribly entangled.

Once you've decided to use Drone-ver, you mostly communicate changes to your project using Twitter. If people using your library don't catch the update, you will post it again, but later in the day. Do your best to discourage these people. They are trying to steal your libraries to use in their own code. You owe them nothing and honestly wonder if they are stealing your butter knives when you are not watching your utensil drawer.

I call this system "Drone Versioning". Under this scheme, version numbers convey almost no useful information whatsoever.

Drone Versioning Specification (Drone-Ver)


  1. Software using Drone Versioning MUST be AWESOME TO THE POWER OF COOL.
  2. Why are we SHOUTING?
  3. A normal verion number must take the form MAJOR.MOOD.ISSUES.SOCIAL.DICTIONARY.UNIXTIME.SEVEN. If it takes another form, please call an EXORCIST immediately. You are in DANGER.
  4. I don't know what we're YELLING ABOUT.
  5. Major version zero (0) is for initial development. Anything may change at any time. This is also true of life. Take a moment to PONDER this, perhaps over a whisky, while staring out a window.
  6. Build metadata MAY be denoted by appending a plus sign, followed by a short paragraph describing your summer at camp. Your summer at camp SHOULD HAVE been MAGICAL.
  7. Precedence refers to how versions are compared to each other when ordered. When making precedence calculations, ALWAYS discard everything except for the Unix time and sort by THAT. It is NOT RECOMMENDED that you use the random dictionary word instead, but it would probably be MORE EXCITING.
  8. ALWAYS I wanna be with you and make believe with you.

Why Use Drone Versioning?

This is not a new or revolutionary idea. Not even a little bit. In fact, you probably do something close to this already, because you read the SemVer specification and you were like "urgh, standards. Not for me!".

The problem is that "your standard" isn't good enough. Without compliance to some sort of formal specification, your version numbers will never truly be spectacularicento, a word I made up that is a portmanteau of magnificent, spectacular, and the letter 'O'. By giving a name and clear definition to the above ideas, it becomes easy to communicate your intentions to the users of your software. Once these intentions are clear, your users will leave you to your coding in peace, never again e-mailing you at 7AM on a Saturday.

QIIPAM (Questions I Imagined People Asking Me)

This is terrible.

That is really more of a comment than a question.

I hear TenVer is good. Why shouldn't I use that?

TenVer is a different standard for versioning that is incompatible with Drone-Ver and therefore sorely lacking.

What about SemVer? Isn't that a practical, no-nonsense standard?

SemVer? Never heard of it.

Doesn't this discourage rapid development and fast iteration?

You're damn right. Go forth and turn pip into a wasteland.

You can leave npm out if this, it is already a wasteland.

How do I know when to release 1.0.0?

This is an invalid Drone-ver. Why would you even ask me that?

Is it "Drone-Ver" or "Drone-ver"? You seem to use both interchangeably.

I can tell that you are a software developer.

What about "Dronever"?

No. Emphatic no. Do I look like I have the money to register two domains?

What do I do if I accidentally release a backwards incompatible change?

Rejoice. To embrace Drone-Ver is to embrace chaos itself.

How should I handle deprecating functionality?

With gusto.


The Drone-Ver specification was authored by Curtis Lassam, internet cartoonist and internet gadabout.

If you'd like to leave feedback, I'm sure you'll find a way.


This document is a remix of SemVer. Except this standard is way better. Especially better than TenVer, which was authored by a real scoundrel.


Creative Commons No-Commercial Closed-Captioned International Share-Alike

Patty Patty Boom Ba-Latty

Relentless Persistence

After a month of Patreon-ing, I'm starting to really like it as a platform for engaging with people who enjoy the comic. I can toss extra content in there, early content that's not ready for the site yet, and post comics the day before they're actually supposed to get posted. My Patreon-bros actually comment on my comics, too, which is extra nice.

I'm not a real 'reward levels' person, though, so everybody has access to everything at any donation level, and really, people still get 90% of the goodness from just subscribing.

Hey, readers, do one of those things if you haven't already! :3

Divinity: Original Sin Is Not Very Good

Earnest Bloviating

Divinity: Original Sin has a lot of flaws that make it borderline unplayable. And I want to talk about why you should try it anyways.

I picked up Divinity: Original Sin because it reminded me of games that I loved when I was younger, like Baldur's Gate 2, Fallout 2, or Planescape: Torment.

It also supports co-op really well, so Tiffany - who has the same fond memories of the same deep games - joined in. Together we would beat this game.


First of all, the game does very little to introduce new players to its many mechanics.

The way we started the game was at the character creation screen, with a bunch of 'suggested' character builds and the complete set of character customization options.

Whatever characters we picked, we were going to have to spend at least 40 hours with, and yet at this stage we had no idea what any of the customizations meant!

I really like it when a game gives me diplomatic options, so I took the default "Rogue" character, took away his backstab ability, and replaced it with a perk that gave him significant bonuses to character interactions. In case you are wondering, this was a huge mistake - I just didn't know it yet.

Tiffany wisely chose a fire/earth mage.

A white-haired mage named Espyr and a talkative but useless rogue with a blonde handlebar moustache named Hup-Hup just sort of washed up on an island and started fighting with some local baddies.

Then: a tutorial dungeon, which did an okay job of explaining most of the basic mechanics of the game. This is how a mage casts a spell! This is what an item looks like! Things were looking up - the game didn't have much depth yet, but it seemed like it was building to something good.

It Wasn't

Instead, the game dropped us in Cyseal, a gigantic city filled with hordes of useless NPC's named "citizen", and dozens of talkative cheesemongers, fish-havers, and bar-whatevers.

Let's Get To The Action

Nope, leaving Cyseal resulted in instant, messy death at the hands of Orcs way above our level and explosive traps way above our level on an otherwise very nice beach.

Let's Try That Again.

Nope again, leaving Cyseal in a different direction quickly ended in our small party getting consumed by a pack of ravenous wolves.

What the Hell?

At this point, we've been playing for a couple of hours and it's been far too long since we've had a good, satisfying fight. I like games that don't hold my hand, but it could at least bother to give us an idea where we should be going or what we should be doing.

It seemed like what we needed to be doing was wandering around the city, talking to all of the stupid civilians.

Bad Writing

In lieu of any satisfying forward progress, the game has seen fit to drop an entire barrel of exposition in our laps. The writing of this game is just a smidge above "fanfiction" in quality. The game's story is every cliche in the book - the little town is surrounded by nasty undeads! There's a great evil on the horizon that threatens everybody! Cheesemongers be cheesemongerin'! There's a guy named "citizen" and he has hundreds of clones and none of them have anything even remotely interesting to say or steal!

If it were just me playing the game, I would have given up right here - but because it was me and Tiffany, we could work through it.

And by 'we could work through it', I mean Tiffany could talk to everybody in the city and give me a broad strokes summary of what she'd heard, and I could spend the next hour and a half carefully liberating every loose painting, wedge of cheese, and utensil in the city.

With all that said and done, we still had no idea how or where to continue. We'd tried a few more of the exits to the city and they still lead us to quick and messy deaths.

I Hate This

This wasn't fun.

But I remember going through this same trouble with Baldur's Gate 2 and Planescape: Torment.

I never finished Baldur's Gate 2. I owned the game before the internet was as common and cheap as it is now, and the game was really quite hard to deal with without a walk-through to tell me where to go and what to do.

When I started playing Baldur's Gate 2, I didn't even know about the pause button - I mean, the game had introduced the 'pause' button but I hadn't realized how important it was to constantly be pausing, so instead of playing the game like a strategic, thinky RPG, I was clicking frantically and wondering why everything was so hard. Eventually I figured out that one crucial detail - how the 'pause' button turned Baldur's Gate 2 into a proper RPG - and started to slog my way through the main campaign, and I loved it! The depth was refreshing and fun, even if the game would frequently leave me hanging with no idea how to move forward.

When I started playing Planescape: Torment, I wasn't willing to put as much love into it. Despite Planescape: Torment's wonderful writing, it was even more opaque than Baldur's Gate 2 - no, this time I was going to use a detailed walkthrough and extract every last iota of fun from the game. With Planescape: Torment, though, this made the game way, way too easy. Knowing the solution ruined the fun.

Guide Dang It

It was time to go to the dreaded walkthrough for Divinity: Original Sin.

I wanted some help, but I didn't want to ruin the game for myself like I did with Planescape: Torment.

Modern games shouldn't need walkthroughs, right? That's what tutorials and affordances and self-explanatory game mechanics are for! No, Divinity is a game that definitely needs a walkthrough, and needs one badly. There are so many things that this game didn't tell us, things that we absolutely needed to know in order to get the most out of the game.

Things like:

  • In order to keep your characters from getting over-leveled, there is approximately one correct path through all of the game's battles. You can skip some of the battles, but if you try to do quests out of their intended order, you're going to get stomped.
  • An encounter full of monsters 2 levels higher than your characters is probably impossible, if not very, very difficult.
  • There are lots of ways to build your characters wrong. A rogue who can't backstab is useless. A mage with low intelligence is useless.
  • After getting the Weird Pyramids from the End of Time, you should give one of them to each of your co-op players. That way, you can always teleport to the location of your beau.
  • Every encounter in the game is designed to be tackled by 4 characters. Going solo is going to get you stomped.
  • Trying to piece the game's complicated crafting system together out of the little snippets of scrolls in books like "The Bachelor's Guide To Medieval Cookery" is not even a tiny bit fun. It's much more satisfying to just read a crafting guide online.
  • If you're not stealing paintings, you should absolutely be stealing paintings. Constantly.
  • You're going to meet a powerful Fighter and an Air/Water mage in the city pretty much right away, so choosing a Fighter or an Air/Water mage as your character builds would rapidly feel awfully redundant.
  • The game gives you access to a tonne of arrows, potions, scrolls, and miscellaneous. Use them! I know you want to hoard objects, because it's an RPG, but in this game you have to use the objects.
  • The solutions to half of the game's puzzles are somewhat ridiculous.

I mean, these were things we might be able to solve by carefully listening to the game's assortment of peasants and cheesemongers, but wading through the game's mountain of exposition wasn't for us.

So we started using a walkthrough to help us get through the game. Carefully, though - not reading every last detail, just using it to get an idea where we should be going and what we should be doing.

It was like having a wise old sage whispering secrets at us. "If you seek the answer to the weresheep's mystery, go to the tree of Kickstarter names and put starflower on the ground."

The difference between Planescape: Torment and Divinity: Original Sin is that Planescape: Torment was a mediocre RPG with excellent writing, so having a walkthrough spoil all of the story while I had to still slog through the gameplay? No fun. Divinity: Original Sin is, at its core, a pretty good RPG with terrible writing, so having a walkthrough to help out was pretty much only win-win.

Here's Why We Played it Anyways

All that being said, there are a few reasons that Divinity: Original Sin was worth it for us once we worked our way through some of the initial slog.

  1. The Co-op is really good. I can't think of a lot of games where I've had an opportunity to play a 40+-hour long adventure entirely with the same person. The list is pretty much "Divinity: Original Sin" and "Borderlands 2" and then nothing else.
  2. The combat is really good. The game is careful about not allowing players to power-level - there are only so many monsters on the map and once they're defeated, they stay defeated. This railroads players into going through the game in a pretty fixed order - it might have been wise for the designers to consider a more linear run through the game to accomodate this - but if players are willing to play ball, it keeps every battle in the game tense, dangerous, and interesting.
  3. The peripheral systems of the game - items, crafting, equipment, and spells - are rich and deep, like a summer cheese.
  4. Skeletons and the undead are extra subsceptible to fire. Light them on fire! They also like to throw poison at you. Light the poison on fire! Light everything on fire!

Ultimately, we had a lot of fun - although a big part of that might have been because there were two of us.

I Hated "Into The Woods"

Team Portrait

I know, it got 3 Oscar nominations, but that's part of what made it such a piece of shit - I love musicals, I was expecting a good movie, and what I got instead was this hot turd.

None of the movie's songs are catchy, or memorable, or constructed around a chorus. Everyone just belts out their lines in singsong-ish. You leave the theater humming songs from better musicals.

The film is a complex tangle of storylines that are either unnecessary, left hanging, or laid out in such a way as the interesting part has happened off-screen. (Spoilers) A prince is dead for 5 seconds. At some point Cinderella and her prince are just not together anymore but they don't bother to go on very long about that break-up or why it happened. A middle-aged woman is pushed over TO DEATH. At one point a cow dies for no reason so that later it can be resurrected rendering the improbable death meaningless anyways. Emily Blunt falls off a cliff because she's particularly bad at walking.

There's narration, even though everybody constantly narrates what they're doing (in singsong) anyways.

Johnny Depp plays Johnny Depp.

The "Cinderella" story makes 100% less sense if Cinderella shows up to the ball THREE NIGHTS IN A ROW and doesn't wear a mask for any of it - unless the prince has a really, really serious foot fetish he should be able to identify the princess by her face and voice, and once he's chased her for two solid nights you'd think the next day at the ball he'd just shake her and go "WHO ARE YOU AND WHY DO YOU KEEP RUNNING AWAY?".

A couple of times, they stop time to let a character sing a song. As far as I can tell, one of these characters takes advantage of the time stop to escape - not in a winky "ha ha I'm taking advantage of the fourth wall" way, just in a way where she's in trouble at the beginning of the song and she's not in trouble at the end of the song and at no point is it explained how the transition occurred.

Cinderella is totes cool just cleaning up for a different family at the end of the story.

I would rather watch The Room than this trainwreck.

Chinese Watercolour

Art of War

So, while I was working on this comic I spent a lot of time looking up chinese watercolour-and-ink art online. Looking at it from the perspective of a cartoonist, many of the compositions have clean, smooth, perfect brushstrokes, not a single unnecessary line - the sort of gorgeous minimalism you also see from talented animators, or master cartoonists. When someone is in a position where they must make every brush stroke thousands of times, they often learn to make a beautiful composition out of very little.

I want to imagine a programming analogue for this. Maybe a talented programmer looking at a powerful and expensive Hadoop cluster and writing an equivalent, faster service as a short shell command.

Can you think of more examples of minimalistic mastery? Tweet them at me, @classam!

Amazon launched the Echo!

Github Red Flags

Utils Considered Harmful

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!

Food Trends 2015

Unfair Assumptions

In this Details article, chefs have predicted a set of new food trends in 2015.

Here are my predictions:

  • Even more ridiculous things piled on top of poutine. You thought SHORT RIB was silly? wait until you see POUTINE AVEC AN ENTIRE FRIGGING COUNTRY HAM.
  • Micro-distillery will continue to prove that "it's not moonshine if you have an art degree".
  • Top brunch scientists will do their best to find a four-dimensional superposition of eggs benedict that manages to include even more rich ingredients. Avocado will be stretched to its very limits. Somebody will propose proscuitto, only to be slapped by a grizzled old man with a deep scar across one eye. One man will prepare a tiny, adorable eggs benedict with quail eggs, and nobody will care.
  • There will be a literal, actual wheat revolution. Farmers have had it too hard for too long.
  • Chefs, having realized that they can get away with charging $18 for a handful of deli meats handsomely arranged on a plank, will continue to offer charcuterie.
  • Hard liquor and soup: together at last? Will 2015 be the year?
  • Ramen will go mainstream for like 6 months. Then everybody will realize that Pho is a way better noodle soup, and what were they even thinking?

Problem Solving Terminator

The Real Issues

  • eqj^w^: boy I love being given someone else's half-done project and told to finish it :|
  • eqj^w^: gosh jolly
  • eqj^w^: and if that wasn't enough it sure is even better when I'm the one that
  • eqj^w^: has to tell them I'm taking over
  • eqj^w^: hey buddy pal that thing you've been doing for a week? yeah just stop.
  • cube_drone_: That's not the right way to do it.
  • eqj^w^: it sucks so bad they're making me finish it
  • eqj^w^: k thx
  • cube_drone_: 1. Buy combat boots
  • eqj^w^: ok I like it already, go on
  • tooth: implying she doesn't have them already
  • cube_drone_: 2. Kick down their door. If they don't have one, because they're at a cubicle,
  • cube_drone_: go to a hardware store,
  • cube_drone_: buy one, and prop it up on their cubicle, then kick it down
  • eqj^w^: what if they're in ontario?
  • eqj^w^: AND in a cubicle
  • eqj^w^: ain't no one wants to go there
  • eqj^w^: but tooth is closest
  • cube_drone_: Buy the door, then record yourself kicking it down with a webcam,
  • cube_drone_: then convert the movie into an animated gif, then print out the animated gif
  • cube_drone_: frame by frame on individual sheets of paper
  • cube_drone_: and mail it to them using high priority overnight mail.
  • eqj^w^: hahahaha
  • cube_drone_: On the last page, scrawl "YOUR PROJECT IS MINE. ALSO I NEED YOUR CLOTHES."
  • eqj^w^: \o/
  • cube_drone_: Then include, as the last picture, Arnold Schwarzenegger as the Terminator, naked.

Is Anybody Else Tired of the Constant Negativity About PHP?

Ingeniuty of Sorts

Not me! It's a great way to generate a comic when I don't have any better ideas.

Some people will say that PHP is not bad. Some people will say that they are too busy making bank to notice how bad PHP is. Some people will say that PHP is bad, but it pays the bills. Some people will say that modern PHP is much better than ancient PHP. I have been, at one point in my career or another, all of these people. I defended PHP! I argued in its favor! I fought the good fight!

And then I didn't work with PHP for like five years. I worked in Java, and Python, and Ruby. I did some configuration management and experimented with build tools. I did some shell coding in bash. I built a legitimate honest-to-god Windows desktop product using C# and XAML. I didn't even know that people still BUILT Windows desktop products. I spoke to the holy men on the mountain, put on the monadic robes, and smoked the pipe of the Haskell people. I think I'd still rather program in PHP than Haskell.

I guess I would work with PHP again, reluctantly. I don't think I'd ever intentionally greenfield a project in it again. Why would I? I don't write software for overcrowded shared-server hosting environments anymore. Even Javascript with it's asinine prototypal inheritance and constant needless evolution has got some selling points that would make me consider it for a new project.

PHP is my first car. I'll always have a fond place for it in my heart - it got me where I needed to go when I needed to get there - but I'm past the point in my life where I want to drive it on purpose.


Imbruglia Imbroglio

  • belam: classam|work: any more cube drone?
  • classam|work: belam: There's a new video out yesterday
  • belam: ah
  • belam: I require more cube drone
  • belam: would be nice if it's something on the predicament that I'm in. I'm in meeting hell.
  • classam|work: https://www.youtube.com/watch?v=31bwKk2mpI0&index=19&list=PLmVb1OknmNJuC5POdcDv5oCS7_OUkDgpj
  • classam|work: belam: Tell me more about your meeting hell
  • belam: Straddling projects - need to keep an eye on the old projects when coworker are trying to take over that work (babysitting required0w
  • belam: new project is really keen to have meetings
  • belam: I basically end up running around between the two.
  • belam: In the morning, I thought I had 2 conflicting meetings and attempted to dial into both
  • belam: (turns out I was wrong)
  • belam: new project is suffering from this:
  • belam: http://i.imgur.com/yIt0t5R.jpg
  • classam|work: ^_^
  • belam: classam|work: tl;dr I'm going insane
  • classam|work: "going", yeah, sure :P
  • belam: hah
  • belam: think you've got enough on it?
  • classam|work: I'm not sure. It's tough to do stuff on meetings.
  • classam|work: I've written yards on meetings and it's hard to come up with stuff that's funny.
  • belam: nah, just being torn between 2 projects
  • classam|work: partially because the first ever appearance of Cube Drone was a huge long-form rant about meetings
  • classam|work: http://cube-drone.com/2011_01_08-Dont_Cry_Cube_Drone.html
  • classam|work: Torn between 2 projects is an interesting topic, but I need a joke around that
  • belam: Judgement of Solomon? :P
  • belam: I'm not a jokester :p
  • classam|work: I was thinking of going with a Natalie Imbruglia joke
  • belam: I like that
  • classam|work: I'M ALREADY TOOOOOORN
  • classam|work: COLD AND I'M ASHAMED
  • belam: haha. 90s kids
  • classam|work: LYING NAKED ON THE FLOOR
  • classam|work: INTO SOMETHING REAL
  • classam|work: it's funnier if Cube Drone doesn't know the song very well
  • belam: heh
  • classam|work: But fitting all of that into a three-panel strip that makes sense could be hard
    • classam|work thinks
  • classam|work: Ooop, I've got it
  • classam|work: where's my note pad, I have to write this down
  • belam: Excellent
  • krichter|work: classam|work: how about... i'm working on this diet, and all my co-workers start bringing in candy due to the season
  • lumy: classam|work: Pumpkin Keg!

Yes, This is Actually A Thing That Exists



  • pfak: rofl
  • pfak: I can grow a neckbeard in like a day.
  • lassam_: He's at work
  • lassam_: checking slashdot
  • lassam_: eating a Pizza Pocket
  • lassam_: and then FOOOMP
  • lassam_: neckbearded
  • pfak: I actually have slashdot open
  • pfak: and we do have pizza pockets
  • lassam_: heh. STEREOTYPES, AMIRITE?

Scrum Presentations

Scrum Presentations

  • polkadot: Dear Lord, I'm undergoing training in Scrum methodology over the waterfall method. It's a work process that basically addresses many stages of development at once instead of the traditional Gantt approach of implementing one complete step before moving on to another.
  • classam: Yes, I am intimately familiar. Week-long sprints?
  • polkadot: Is dull training. Yes. Sprints.
  • classam: So dull. But significantly better than the GANTT-chart and Waterfall hullaballoo.
  • polkadot: I already work like this. But interesting to watch someone try to teach a team how to do it.
  • classam: I could talk about it at length, but you're coming to your computer to AVOID scrum talk.
  • polkadot: "It takes courage and commitment. Rules and meetings and artifacts."
  • classam: It's a little more formalized than just "OKAY, SO YOU GIVE ME WORK AND THEN I DO THE WORK AND THEN THE WORK IS DONE", which is most common organization strategy
  • polkadot: I like how in this Scrum meeting, the artist is thinking about cake. That's usually what we are thinking about. Cake. Scrum 1
  • classam: I like that you work with a biplane pilot for some reason
  • classam: "Oh, that's just Greg. Pay no attention to his shenanigans."
  • classam: Just another day at the bakery-science-piloting-art-factory.
  • polkadot: hehe. We are apparently building unicycles? Buuuuut... the stakeholders would like us to build bicycles. Good thing we have the pilot working on that. Scrum 2
  • classam: Also, I wasn't sure about creepy silhouette team
  • classam: even less sure now
  • classam: they appear to have some sort of medieval torture device
  • classam: Have they eaten the artist?
  • classam: Was it her insatiable cake-lust that did her in?
  • polkadot: Ultimately, it was decided that in building a bicycle, a cake-lusting artist was not as important as a baker, pilot, and let's say ... um... a pharmacist?
  • classam: She designed it and then left it to do her own thing. "One wheel is more aesthetically pleasing. Here's the PSD." Now they're all vigorously blaming her for the setback in the project.
  • classam: Well, except for Confusion Brownpants.
  • classam: He just walked in from another meeting.
  • classam: He has no idea what's going on
  • classam: he was just sort of hoping there would be cake
  • polkadot: This is the guy teaching the course. It's like the Crocodile Dundee version of Terrance and Philip. Scrum 3
  • classam: He takes his dress cues from Confusion Brownpants, but he's clearly a different guy.
  • classam: You know what they say: never trust a man who tucks his pants around his shoes.
  • polkadot: I'm pretty sure the ginger here is supposed to be a developer. So just so we're clear, they're pretty sure artists are messy, turtle-necked cake-eaters and developers are skinny, ginger dweebs with no fingers. And Scrum Masters are enormous female gym teachers. Scrum 4
  • polkadot: is best training
  • classam: The Pilot has high priority coming out of his buns
  • classam: Also, we meet BLACK HAIR BLACKSHIRT, the villain of the piece. He's no artist - The Artist is already there, covered in cake spoor and regret. You shouldn't make fun of Lady Gym Teacher Scrum-master, though. She's the master because she can talk out the top of her head. Like the C'thonian beast that she likely is. Under that layer of sternness.
  • polkadot: The pharmacist is getting totes lippy with you. Smack that bitch up. Scrum 5
  • polkadot: she has a lovely British accent too. Kind of a Mary Poppins voice that in no way matcher her butch gym teacher appearance.
  • polkadot: Pharmacist sounds like a surfer.
  • classam: Dudes. Dudes. Chill. You're not the boss of me.
  • classam: The only boss of me? The tides, man.
  • polkadot: And Black Hair McGee is the Product Owner.
  • polkadot: Is boss man.
  • polkadot: Business business. Numbers.
  • classam: Why was he standing with the team, then? He should be standing on a GOLDEN PEDESTAL, being showered by offerings of roasted goat rubbed with garlic and virgins.
  • polkadot: You really shouldn't rub goats with virgins. Neither party really enjoys that.
  • classam: However, you should definitely pelt your project manager with roast goat.
  • polkadot: Scrum 6
  • classam: ...
  • classam: I like him.
  • polkadot: speaks in infographics... wants pony... is a simple man with simple needs
  • polkadot: a simple pilot who wants a pony demonstrated in illustration
  • classam: He seems simple but he has a complex inner monologue.
  • polkadot: OK, from what I can gather... the baker is the UI person? Scrum 7
  • polkadot: Thanks for your input, Jill. Now shut up and finish that muffin batter you've been holding for the last 45 minutes.
  • classam: Why aren't they asking the Pharmacist why he thinks the UI Design isn't quite so easy? Maybe he knows something the team doesn't.
  • classam: Our team made it a policy to single out the outliers and make them defend their score.
  • polkadot: Oh ho! Jabs at Explorer! Way to make some commentary, guys! Scrum 8
  • classam: And the whole team is just
  • classam: crushed
  • classam: you can see it in their faces
  • classam: "we thought you were cool, man"
  • polkadot: devastated
  • polkadot: Everyone is tired. The developer is the only one who is working. Scrum 9
  • polkadot: he is using a drafting table for some reason
  • classam: Hey, maybe this job would be less stressful if you had more than one person DOING IT you guys
  • polkadot: and, like, a computer
  • classam: Greg the Simple Pilot is wearing a deflated life vest
  • classam: he is concerned
  • classam: that he might drown
  • polkadot: Ahhhhhh, I am only HALF way through this training.
  • classam: Soon you're going to find out what happens to their bicycle project! It's going to come in overbudget, and they're going to end up eating Greg for sustenance.
  • polkadot: Fuck yeah, now we have a minstrel. Scrum 10
  • polkadot: for morale
  • polkadot: and a rainbow
  • classam: She brought it from home
  • classam: This team makes terrible hiring decisions
  • classam: But the morale girl seems to be working well
  • polkadot: I don't know. The pilot and the pharmacist seem just as pissy as usual.
  • classam: The pharmacist only has the one face.
  • classam: Greg is pissy because he lost his deflated life vest.
  • classam: What will save him from drowning now?
  • classam: Nothing.
  • polkadot: He's pretty happy here, but only because he is questioning the abilities of the coder. He gets to feel superior because no one ever asks, "what about the pilot?" in a product development meeting. Scrum 11
  • classam: Hey, they're designing a bicycle. There shouldn't BE a lot of code involved. You know what we do need?
  • classam: Someone to TEST PILOT the bicycle
  • classam: A scientist, to design the bicycle aerodynamics!
  • classam: But a coder? Not bloody likely
  • classam: Also we're still not sure what the roles of the baker and the artiste are
  • classam: heist heist heist
  • classam: I am very excited about this heist theory
  • polkadot: Do wolves somehow factor in to this theory? Scrum 12
  • polkadot: As long as you protect the developer from wolves, he will design your bicycle with the pilot and baker. But only then. Scrum 13
  • classam: He wasn't going to commit otherwise?
  • classam: I have this word for people who refuse to do their jobs:
  • classam: Software develop... I mean, "people who are fired"
  • polkadot: wolf-cowards
  • classam: What, you don't want to do your job, JUST because your office is full of hungry timberwolves that walk like men and howl for your blood?
  • polkadot: with lightning bolts over their heads
  • classam: "But boss, they command storms with their mighty paws."
  • classam: "Don't worry, two stormwolves are no match for a stout, sexually confused middle-aged woman."
  • polkadot: they prefer to be called gym teachers
  • classam: This heist is really shaping up.
  • classam: They have their muscle, their escape unicycle, their pilot, their disguise artist, their hacker, the obligatory science dude, craft services, a douche in glasses, it's all coming together
  • polkadot: And the pharmacist inexplicably casts no shadow... or at least, no second shadow? that's got to be somehow useful. Scrum 14
  • classam: "Isn't a unicycle a terrible escape vehicle?"
  • classam: "Look, Scrum is about getting to a minimum viable heist, you guys."
  • classam: What's worse is the ginger, who casts a shadow even when he isn't THERE
  • classam: I KNEW it
  • classam: Soulless
  • polkadot: And check out this guy. he definitely looks like he could be Heist appropriate. Scrum 15
  • classam: He looks like he walked straight out of a con movie
  • polkadot: Scrum 16
  • classam: He's the brains behind the whole operation, see
  • classam: myeah, see
  • classam: myeah
  • polkadot: "special favors, see"
  • polkadot: wink wink
  • classam: Look, I gots you all out of prisons and jobs at this company. The least you could do is robs me a bank, see. Myeah.
  • polkadot: the gym teachers discuss this at a convention Scrum 17
  • classam: #8: Sammy Seagull (that rat bastard)
  • polkadot: the artist and the gym teacher play catch. Scrum 18
  • polkadot: the artist has an elbow in a drastically anatomically incorrect position
  • classam: Don't make fun of her deformity
  • classam: that's why she became an artist in the first place
  • polkadot: is rude
  • classam: She wanted to share her pain with the world
  • polkadot: Scrum 19
  • classam: Tell us your tale of woe, artwoman
  • polkadot: The baker makes a valid point. Better than Sammy Seagull. Scrum 20
  • classam: You know
  • classam: I'm really curious who hired those two in the first place
  • classam: I mean, Clueless Clyde has 'clueless' right there in his name
  • classam: don't they screen for that sort of thing?
  • classam: Also, if your only choices are your Product Owner, or two men chosen based on the fact that they are clearly the two least fit men in the company to lead anything (aside from Simple Greg the Pilot) ... that doesn't say a lot of positive things about the Product Owner
  • classam: "At least he's not one of the two worst employees in the company!" Glowing praise.
  • polkadot: Looks like Simple Greg the Pilot, also a coder. And coder #2, named Andy. How bout that? Scrum 21
  • polkadot: Open-Source Pilot Greg would rather be at the beach though, with surfer pharmacist shadowless science-man.
  • polkadot: Hahaha. Don't worry, Greg. The BAKER will help you code. Scrum 22
  • classam: They're still cleaning up the mess from the last time she tried to code
  • classam: "Will DOUGH work on it?"
  • classam: "STOP IT"
  • classam: "Try rubbing it with flour"
  • classam: "SHOO, SHOO"
  • polkadot: i think I'll order a tab
  • classam: All this hacking is thirsty work
  • polkadot: Then... big team make-out party. Scrum 23
  • classam: :O
  • classam: Is that how the tale ends?
  • classam: "We work hard. We play hard."
  • classam: "EVERYBODY DANCE NOW"
  • polkadot: nothing particularly humorous has occurred since then. Though the minstrel was never heard from again.
  • polkadot: "And they ate the minstrel. There was much rejoicing. Yay!"
  • classam: Seems legit
  • polkadot: we are defining the definition of "done."
  • polkadot: Done is defined as done. Not partially done or sort of done. And there you have it.
  • classam: So is this lesson done, or just partially sorta done?
  • polkadot: Are you using Scrum methodology at home on your whiteboard then? Sort of? Are you the wierd ginger dweeb or the weird infographic pilot that wants a pony? Scrum 24
  • classam: My home whiteboard is its own thing
  • classam: although admittedly it is partially inspired by my time in a scrum-heavy shop.
  • classam: I make no commitments
  • classam: There are no stand-ups
  • classam: or planning pokers
  • classam: I never pair program
  • classam: And done is when I damn well feel like it.
  • polkadot: Pair programming sounds annoying. I mean, I can understand passing it off to someone else and having them review it, but I would not want to have someone watch over my shoulder.
  • polkadot: Oh no! The gym teacher has sprouted monkey ears! Scrum 25
  • polkadot: oh good, the minstrel is back. I was worried about her.
  • polkadot: And you should definitely be watching out for your boss's invisible pants gun. Scrum 26
  • classam: what is the DEAL with the invisible pants gun?
  • polkadot: Oh. That just made me laugh so hard I cried a little.
  • polkadot: It was more or less an analogy for the intimidation one feels when one's boss enters the room is like that of a gun being held to an employees head, I guess?
  • polkadot: So he has an invisible gun and that's why everyone in the room goes silent when he walks in, even if he's a "nice guy", because he is holding them at invisible gunpoint.
  • classam: So, the invisible gun is that HE'S THEIR BOSS and HE CAN FIRE THEM ALL ANY TIME HE WANTS RAR RAR BOSS
  • classam: ... how in the world did they propose to resolve that?
  • classam: Was it with the power of song?
  • classam: The minstrel was the hero of the piece all along!
  • polkadot: No. That's why they said there was no project manager role in a Scrum team. It held each team member personally accountable.
  • classam: Ah, so there's the scrum-master, who is a powerless peon who mostly just reminds people to hand in their homework and schedules meetings, the "client", who's there to provide vital feedback, and the team members, who do... work things.
  • classam: I find that, in practice, this is rarely the actual case.
  • classam: ... oh, and, of course, the minstrel, the baker, the chemist, the ginger ...
  • polkadot: And used open and visible goal-markers to drive progress as well as constant communication and meetings, er, except I very clearly still have bosses.
  • classam: Heh. "So... what would you say it is that you DO here?"

Authentication for Single Page Applications


So, I wrote a Stack Overflow answer that I'm almost proud of, and I thought I'd keep it here.

The question? I'm going to paraphrase, here:

"Is there a best-practices for authentication of single-page Javascript applications? Should I keep my own token, or use the session-management built in to my framework?"

My answer?

This question has been addressed, in a slightly different form, at length, in this StackOverflow answer about RESTful authentication.

But this addresses it from the server-side. Let's look at this from the client-side. Before we do that, though, there's an important prelude:

Javascript Crypto is Hopeless

Matasano's article on this is famous, but the lessons contained therein are pretty important:

To summarize:

  • A man-in-the-middle attack can trivially replace your crypto code with <script> function hash_algorithm(password){ lol_nope_send_it_to_me_instead(password); }</script>
  • A man-in-the-middle attack is trivial against a page that serves any resource over a non-SSL connection.
  • Once you have SSL, you're using real crypto anyways.

And to add a corollary of my own:

  • A successful XSS attack can result in an attacker executing code on your client's browser, even if you're using SSL - so even if you've got every hatch battened down, your browser crypto can still fail if your attacker finds a way to execute any javascript code on someone else's browser.

This renders a lot of RESTful authentication schemes impossible or silly if you're intending to use a JavaScript client. Let's look!

HTTP Basic Auth

First and foremost, HTTP Basic Auth. The simplest of schemes: simply pass a name and password with every request.

This, of course, absolutely requires SSL, because you're passing a Base64 (reversibly) encoded name and password with every request. Anybody listening on the line could extract username and password trivially. Most of the "Basic Auth is insecure" arguments come from a place of "Basic Auth over HTTP" which is an awful idea.

The browser provides baked-in HTTP Basic Auth support, but it is ugly as sin and you probably shouldn't use it for your app. The alternative, though, is to stash username and password in JavaScript.

This is the most RESTful solution. The server requires no knowledge of state whatsoever and authenticates every individual interaction with the user. Some REST enthusiasts (mostly strawmen) insist that maintaining any sort of state is heresy and will froth at the mouth if you think of any other authentication method. There are theoretical benefits to this sort of standards-compliance - it's supported by Apache out of the box - you could store your objects as files in folders protected by .htaccess files if your heart desired!

The problem? You are caching on the client-side a username and password. This gives evil.ru a better crack at it - even the most basic of XSS vulnerabilities could result in the client beaming his username and password to an evil server. You could try to alleviate this risk by hashing and salting the password, but remember: JavaScript Crypto is Hopeless. You could alleviate this risk by leaving it up to the Browser's Basic Auth support, but.. ugly as sin, as mentioned earlier.

HTTP Digest Auth


A more "secure" auth, this is a request/response hash challenge. Except JavaScript Crypto is Hopeless, so it only works over SSL and you still have to cache the username and password on the client side, making it more complicated than HTTP Basic Auth but no more secure.

Query Authentication with Additional Signature Parameters.

Another more "secure" auth, where you encrypt your parameters with nonce and timing data (to protect against repeat and timing attacks) and send the. One of the best examples of this is the OAuth 1.0 protocol, which is, as far as I know, a pretty stonking way to implement authentication on a REST server.

RFC 5849: OAuth 1.0

Oh, but there aren't any OAuth 1.0 clients for JavaScript. Why?

JavaScript Crypto is Hopeless, remember. JavaScript can't participate in OAuth 1.0 without SSL, and you still have to store the client's username and password locally - which puts this in the same category as Digest Auth - it's more complicated than HTTP Basic Auth but it's no more secure.


The user sends a username and password, and in exchange gets a token that can be used to authenticate requests.

This is marginally more secure than HTTP Basic Auth, because as soon as the username/password transaction is complete you can discard the sensitive data. It's also less RESTful, as tokens constitute "state" and make the server implementation more complicated.

SSL Still

The rub though, is that you still have to send that initial username and password to get a token. Sensitive information still touches your compromisable JavaScript.

To protect your user's credentials, you still need to keep attackers out of your JavaScript, and you still need to send a username and password over the wire. SSL Required.

Token Expiry

It's common to enforce token policies like "hey, when this token has been around too long, discard it and make the user authenticate again." or "I'm pretty sure that the only IP address allowed to use this token is XXX.XXX.XXX.XXX". Many of these policies are pretty good ideas.


However, using a token Without SSL is still vulnerable to an attack called 'sidejacking': http://codebutler.com/firesheep/

The attacker doesn't get your user's credentials, but they can still pretend to be your user, which can be pretty bad.

tl;dr: Sending unencrypted tokens over the wire means that attackers can easily nab those tokens and pretend to be your user. FireSheep is a program that makes this very easy.

A Separate, More Secure Zone

The larger the application that you're running, the harder it is to absolutely ensure that they won't be able to inject some code that changes how you process sensitive data. Do you absolutely trust your CDN? Your advertisers? Your own code base?

Common for credit card details and less common for username and password - some implementers keep 'sensitive data entry' on a separate page from the rest of their application, a page that can be tightly controlled and locked down as best as possible, preferably one that is difficult to phish users with.

Cookie (just means Token)

It is possible (and common) to put the authentication token in a cookie. This doesn't change any of the properties of auth with the token, it's more of a convenience thing. All of the previous arguments still apply.

Session (still just means Token)

Session Auth is just Token authentication, but with a few differences that make it seem like a slightly different thing:

  • Users start with an unauthenticated token.
  • The backend maintains a 'state' object that is tied to a user's token.
  • The token is provided in a cookie.
  • The application environment abstracts the details away from you.

Aside from that, though, it's no different from Token Auth, really.

This wanders even further from a RESTful implementation - with state objects you're going further and further down the path of plain ol' RPC on a stateful server.

OAuth 2.0

OAuth 2.0 looks at the problem of "How does Software A give Software B access to User X's data without Software B having access to User X's login credentials."

The implementation is very much just a standard way for a user to get a token, and then for a third party service to go "yep, this user and this token match, and you can get some of their data from us now."

Fundamentally, though, OAuth 2.0 is just a token protocol. It exhibits the same properties as other token protocols - you still need SSL to protect those tokens - it just changes up how those tokens are generated.

There are two ways that OAuth 2.0 can help you:

  • Providing Authentication/Information to Others
  • Getting Authentication/Information from Others

But when it comes down to it, you're just... using tokens.

Back to your question

So, the question that you're asking is "should I store my token in a cookie and have my environment's automatic session management take care of the details, or should I store my token in Javascript and handle those details myself?"

And the answer is: do whatever makes you happy.

The thing about automatic session management, though, is that there's a lot of magic happening behind the scenes for you. Often it's nicer to be in control of those details yourself.

I am 21 so SSL is yes

The other answer is: Use https for everything or brigands will steal your users' passwords and tokens.

2014 Resolution Roundup

Prone to Distraction

It's January, and that marks Year 3 of writing down my resolutions and measuring how I stood up to them.

Let's look at last year's resolutions.

  • 1000 Pushups - Do 1000 non-consecutive pushups - FAIL - I got to a surprising 300-or-so before my wrists started to give out. As it turns out, combining programming and art and exercises that strain the wrists combine in an awkward way to make for sad times. I tried switching to knuckle-pushups, but urrrrgh.
  • Rhyme - Create a not-particularly-intelligent artificial intelligence. - PASS I built "By Graham", a bi-gram chatbot, and "Meep Moop", the world's dumbest robot.
  • Tempo-Tantrum - Become a permanent employee. - FAIL - Nope, I'm still stuck in contract-employee town. I aim to resolve this before March.
  • Return to Cabin - Return to Travis' Cabin. Revel. - PASS - This was an easy one. Went to the cabin twice. Had a great time twice.
  • Vacation, All I Ever Wanted - Leave the Country for Fun Times - PASS - I went to Florida to learn about Robots. Solid!
  • Indie Street Cred - Work on an indie game with Dan. - FAIL - This sort of fell through the cracks. Video game libraries are unimaginably awful to work with, as it would turn out.
  • Monthly Resolutions - New Resolutions Every Month. - FAIL - This caused my mind to break down entirely by March.

So, out of 7 goals, that's 3 PASSes and 4 fails. Way to go, me.

Okay, extra credit time:

55 New Comics

I wrote 55 Cube Drone comics, significantly upgrading my comic-production skills.

cube-drone.com launched and got about 50,000 hits in 2013. Most of that came from a comic that fell right out of the comic's target demographic into the laps of some gamers, this one about Armored Core.

Around about October I started getting distracted by .. that other thing I do, actually building software, and Cube Drone started to taper off. On top of that, my Laptop died and took with it all of my working artisty configurations that now have to be resurrected. Next time: better backups. Now it's January and I'm pretty much back to square one.

Pierc Contributors

Remember last year when I turned pierc into a full on GitHub project with "documentation" and such? Well, it gathered some contributors and a teeny community!

SuperVanJS Talk

I did my first ever tech talk, at SuperVanJS.

I did okay in 2013, I guess!

New Resolutions!

I don't actually have a lot of resolutions for 2013. I have a lot of projects, but projects and resolutions are different things. Maybe I'll do more work on Cube Drone. Maybe I'll finish one of my code projects. Maybe I'll finish a board game. I like to learn new things and try new things. At the moment I'm just sort of content to let things be the way that they are. Things are pretty awesome.

  • Career. Seriously - Figure out what's going to become of your career. Contracts are bad.
  • Meepmoop 2.0 - Rebuild your robo-buddy. Teach him many things.
  • Vacation - Go on a cool vacation to somewhere.

Okay, that's done.

Vim Learnings

Cabin Ternet

  • classam: if I'm in vim and go
  • classam: :! complicated shell command
  • classam: ... and I want to run that complicated shell command again without having to retype it, is there a keystroke for that?
  • yangman: : up arrow:
  • classam: oh, hey, nice
  • yangman: it's actually context sensitive, to a degree
  • classam: I have to scroll through all of my compulsive :w's, though : _: :P
  • yangman: if you go :! then up-arrow, it'll only show those
  • classam: Nice

Classic Humour

Author Existence Failure

  • belam: Any of the vancouverites are hiring? I know someone how's looking to go from Victoria -**: Vancouver. Game / Film is preferred, but what the heck.
  • n0ob: hiring for what?
  • n0ob: my company is hiring for top software developers
  • belam: dev
  • belam: n0ob: I do have a feeling she might not prefer kernel devs
  • belam: n0ob: but shoot anyways
  • n0ob: we have things other than kernel dev
  • belam: n0ob: got a link?
  • n0ob: aristanetworks.com
  • n0ob: is she capable of linux dev?
  • belam: dunno
    • n0ob wonders how employee bonus works for friends of a friend of a friend
  • belam: I have a feeling that might depend on how badly she wants to leave Victoria :p
  • belam: anyways, I'll let her figure that out
  • n0ob: I ask because there is a screening test which kinda requires it
  • belam: ah I see
  • n0ob: so if she doesn't know c and linux dev then it's likely not worth her time since she won't get past the screening
  • classam: "The New Standard in Software Defined Cloud Networks" wow what an awful tagline
  • n0ob: don't ask me, I'm not in marketing
  • plypkie: they put their marketing in the cloud
  • classam: ... "THE ARISTA CAT-5"
  • plypkie: ...
  • n0ob: that's pretty funny
  • n0ob: makes me wish I had watched The Aristocrats
  • vlad|job: ... wow
  • vlad|job: that's... pretty good



  • jeikobu: quoth: lassam
  • quoth: jeikobu: Your random map generator has to be REALLY GOOD for that to be even a little worthwhile
  • jeikobu: True
  • lassam: He speaks wisdom
  • lassam: quoth: lassam
  • quoth: lassam: NAME: Your tokenizer works like a charm, but de-tokenizing the sentences afterward is hard.
  • lassam: wow, he makes me sound way smarter than I am
  • lassam: give me something stupid this time
  • lassam: quoth: lassam
  • lassam: :D
  • jeikobu: Therrrrrrrrrrrrre we go

Race to the Bottom Outtakes

Race to the Bottom

  • n0ob: so back to cube drone
  • lassam: Yeah
  • n0ob: I liked the bull dozer one
  • lassam: :D
  • lassam: I hate Dressed to the Nines
  • n0ob: if you want to be news relevent you can make a home datacentre joke
  • lassam: hate it
  • lassam: SO MUCH
  • lassam: http://curtis.lassam.net/post/2013_05_24-Cube_Drone_30_Dressed_to_the_Nines.html
  • lassam: I didn't see that story
  • lassam: Home data centre?
  • n0ob: the guy who used 77tb in a month
  • n0ob: jeikobu: linked it above
  • n0ob: just before you started complaining about it being quiet in here
  • lassam: Okay, read the article
  • lassam: Home data centre
  • lassam: 77TB bandwidth at peak
  • lassam: ugh
  • lassam: the only joke that comes to mind immediately is "looks like pfak's got family down south"
    • pfak eyes lassam
  • lassam: Which is not comic-ready : _:
  • pfak: joke has already been used.
  • n0ob: heh, I'm less talking about the bandwidth than the full rack of equipment
  • pfak: I think that's a ridiculous amount of bandwidth and rack for a house.
  • lassam: It's not even original!
  • pfak: If I was a millionaire I would have that much rack.
  • pfak: Actually, if I was a millionaire I wouldn't because it's fucking pointless.
  • lassam: that's what she said?
  • lassam: I'm coming up blank on this home data thing
  • pfak: I'd get a midget to design a midget rack.
  • n0ob: lassam: not that funny then
  • lassam: Explore it a bit. What kind of person builds a rack like that? (A dedicated hobbyist. Not funny.) How did it take them so long to notice? (It's not like they watch all the traffic all the time)
  • lassam: A home rack must suck down a lot of electricity
  • n0ob: Mr Drone did build a massive array of old laptops
  • lassam: Especially in BC or California, if you're sucking back that much power, people are going to think you're running a grow op
  • lassam: Oh
  • lassam: Way funnier than the sort of guy who runs a full operational rack out of his home with FiOS?
  • n0ob: Yeah, I'm just thinking the home datacenter idea
  • n0ob: not anything specific to that article
  • lassam: The sort of moron who would run the rack that's in my apartment with no clear goal, just because
  • n0ob: it just tipped me off
  • lassam: "Why do you even have this?" "I don't know. It seemed like a good idea at the time."
  • n0ob: maybe a couple racks of historically obsolete gear
  • n0ob: for no real good reason
  • lassam: "Why are you running all of these?" "Furnace broke."
    • n0ob recalls that hjohnson once heated his apartment that way
  • pfak: lassam: Did you hear about that guy that got raided because he had too many computers on in BC?
  • lassam: pfak: I did not
  • pfak: They didn't find any pot so they found something wrong wtih his electrical setup and fined him for that.
  • pfak: Asshat.s
  • n0ob: yeah that happened a few months ago
  • lassam: In other fresh news, XBox One, new Daft Punk album, controversy about 3D-printed guns
  • lassam: Google is becoming more insular
  • lassam: There was some meat to that thing that Yang posted
  • lassam: https://kkinder.com/2013/05/21/leaving-googles-silo-alternatives-to-gmail-talk-calendar-and-more/
  • n0ob: oh yeah, not what I'd call comic content though
  • lassam: I thought that "OwnCloud looked like an ace in the hole for contact/calendar synchronization, until I tried using it. Astonishingly, if I added an event at 8:00 AM in Denver time, OwnCloud stores it as 8:00am UTC. Then if I add an event for 10 AM CDT, OwnCloud stores it as 10:00 AM UTC. OwnCloud�s CalDav implementation literally pretends that timezones do not exist, which is of course a show-stopper."
  • lassam: was pretty funny
  • n0ob: yeah, for calendaring software
  • lassam: Maybe a three-panel about a software developer who refuses to believe that timezones exist
  • n0ob: could work
  • n0ob: I don't know what the joke would be though
  • lassam: Yeah, I'm not getting anything either
  • n0ob: maybe a plot comic?
  • lassam: Gasp
  • lassam: No, I'm out on plot comics. I don't want to be a PVP.
  • lassam: The characters are here, now just Use Them To Further Comics. :P
  • lassam: ... everybody's racing to be the king of the set-top world, but the best set-top box for the past 5 years has just been ANY TOWER WITH HDMI OUT
  • lassam: : _:
  • lassam: A wireless keyboard and mouse, too, I guess
  • lassam: It supports all of the streaming services, plays hundreds of games, handles music, has in-depth social integration
  • lassam: Can be used to sort your photos...
  • lassam: All Microsoft needs to win this war is the ability to set the default font size WAY UP
  • n0ob: and you don't have to fight with a terrible TV remote interface
  • lassam: Yeah
  • Ralith: haha
  • lassam: In Windows, some of the font-sizes are configurable (for things like "name of the window") and some of them are fixed (for things like "filenames")
  • lassam: And the only way to crank up the fixed-size fonts is to futz with the DPI settings, which breaks a lot of layouts
  • lassam: I strongly believe that Best Set-Top Box would just be Windows 7 (not Windows 8, fuck you, Metro), but with bigger fonts
  • n0ob: you could get a comic out of that
  • lassam: "For the past few years, every tech giant has been waging a war to see who can build the best set top box."
  • n0ob: I might start with how the Xbox One is supposed to be the next great settop bot
  • n0ob: then go to "MS has been really close for years"
  • n0ob: then "I just use a windows box with a hack to up the dpi. blows everything out of the water"
  • n0ob: or maybe "chat about setting up the best set top box ever with all the cool stuff" / "asking what it is" / "Windows 7 desktop with a dpi hack"
  • lassam: "The PS4, the Apple TV, the OUYA, the Google TV, the Steam Box, the Wii U, and now the XBox One are all competing to be the king of set-top boxes"
  • lassam: leave out the Steam Box (unfinished) and the OUYA (too obscure)
  • lassam: maybe put in the Slingbox?
  • n0ob: that leaves out actually popular ones like the roku
  • lassam: Oh, forgot about the Roku
  • lassam: "They've all ignored the single best competitor, offering all of the streaming services, a strong gaming option, support for a wide variety of media formats... "
  • lassam: " Any PC. "
  • lassam: ta daa
  • n0ob: best set top box in the world? cheap generic all-in-one atom box
  • pfak: D:
  • pfak: seems expensive.
  • pfak: Does it have a 320GB or a 32GB drive
  • jeikobu: My remote peripheries are just my laptop on wifi (and x2x)

Dressed to the Nines Outtakes

Dressed to the Nines

  • zzSleeper: rhetzler_work, plyp_home, plypkie, yangman, vlad|job: mumble is back up, sorry for the interruption
  • rhetzler_work: ohai
  • rhetzler_work: are you back?
  • plypkie: zzSleeper: jeez, I'm paying for 5 9s service here. I demand to be compensated for downtime.
  • classam: alternatively, "mmb mrrm blrbl flrp"
  • yangman: heh
  • plypkie: zzSleeper: but actually we've just been using yangman's server
  • zzSleeper: bank changed my address while I was gone, resulted in payment failure :P
  • zzSleeper: yangman also has a server?
  • yangman: yeah, I set up a mumble server ages ago
  • yangman: vlad and I used for SC2 for a bit
  • yangman: it's running off of my home connection
  • classam: plypkie: You're getting 5 9 service. That's about how tall zzSleeper is, if I remember correctly : _:
  • classam: shit, there might be a cube drone in that
  • classam: Phone: "Our server is down." Warbeard: "I know it's down." / Phone: "It can't be down, you promised us five nines support." / Warbeard: "No, we promised you 5'9" uptime. I'm your support guy, and I'm about 5'9", so you're good. "
  • classam: unh
  • classam: I immediately do not like that comic anymore
  • classam: Am I spelling it out too much maybe?
  • classam: Maybe there's a joke in offering 50.0099999% uptime (five nines!)
  • rhetzler_work: "our support guys are playing ping pong, they're been stuck in the same rally for over an hour." "what about my 5 9's support?" "well yeah.. you see, that's the score�" "what?" "5 - 9"
  • classam: Or a joke in offering 99.999% support. ("Oh, yeah, the server goes down pretty often. But our support guys are available 99.999% of the time")
  • rhetzler_work: "if they both get 2 more points, they hit the sev."
  • classam: Maybe "Our server is down" "Yeah, scheduled maintenance." / "But you promised us five nines uptime." "Read your contract" / last panel : * 50.099999% uptime
  • classam: Still kinda mediocre joke, though
  • classam: eh, they can't all be clever

Hotel Alfa Tango Outtakes

Hotel Alfa Tango

  • Curtis: I need to write a comic! Quickly, make a witty, insightful observation about the technology industry that I can steal and pass off as my own!
  • Angelina: Well
  • Angelina: It's not about the tech industry
  • Angelina: I'm at a hotel right now
  • Angelina: by myself
  • Angelina: and I opened the drawer beside the bed
  • Angelina: because whenever I go into a hotel room, for whatever reason I just need to open ALL the drawers
  • Curtis: Teeny tiny dead prostitute?
  • Angelina: discover ALL the amenities
  • Angelina: no
  • Angelina: There was a bible
  • Curtis: Bible stuffed with another bible?
  • Angelina: the gideon one
  • Curtis: "Doubible"
  • Angelina: red cover, gold inlay
  • Angelina: and...
  • Angelina: a single, unopened glowstick.
  • Angelina: so I mean.
  • Angelina: Why is it there?
  • Angelina: Christian rave sex party?
  • Curtis: "This has been the single worst rave"
  • Angelina: I told Jacky about it earlier
  • Curtis: Well, I'm pretty sure the bible is always there
  • Angelina: and she's convinced me to find a dollar store and leave a similarly ridiculous item in another drawer before leaving
  • Curtis: That doesn't sound like a hard sell
  • Angelina: that's all I got for you I'm afraid
  • Curtis: I always wonder why they leave bibles in hotel rooms
  • Angelina: about to go to bed
  • Angelina: and now I'll wonder about this glowstick
  • Angelina: like
  • Angelina: if I take it home
  • Angelina: will it appear on my bill?
  • Angelina: i read the little book by the phone
  • Angelina: it wasn't listed as a mini-bar item
  • Curtis: GLOW STICK: $12
  • Angelina: if I bring it to the desk, will I look ridiculous?
  • Angelina: "Who is this girl.. why did she bring us a glow stick?"
  • Angelina: "No ma'am, we don't put glow sticks in our hotel rooms."
  • Curtis: I worked at a hotel front desk for a while
  • Curtis: If someone said they found a glow-stick in a drawer, I'd ..
  • Curtis: probably talk to management (cleaning staff never listened to me) and tell them to tell the cleaning staff to make sure to check the drawers for detritus during the cleanings
  • Curtis: ...

Tux in Space Outtakes

Tux in Space

  • lassam: I'm trying to think of a good three panel "The ISS has switched to Linux" joke
  • lassam: Whenever I listen to the Penny Arcade podcast, I think "I need a comics partner to make comic writing easier" but then I realize that I'm not particularly good at the writing or the art, so what the hell would I do in the comics team
  • lassam: fetch drinks?
  • n0ob: heh
    • n0ob thinks about a falling out of the sky joke
  • n0ob: but since it switched to Linux it stops falling out of the sky and flys away towards the outer solar system
  • pfak: :|
  • n0ob: of course, this depends on people knowing that being in orbit is just falling to earth and constantly missing
  • lassam: "We're accellerating uncontrollably towards Jupiter" "Were you fiddling with xorg.conf again?" "yes"
  • lassam: "I just wanted to get dual screens working properly"
  • lassam: "We're accellerating uncontrollably towards the sun" / "What did you DO?" / "There was a forum post in Brazilian that had instructions on how to get Flash working"
    • eqj (~eqj@d23-16-26-4.bchsia.telus.net) has joined
  • lassam: eqj: What's funnier, uncontrollably accellerating towards the sun, or uncontrollably accellerating towards Jupiter?
  • eqj: Jupiter
    • lassam scribbles in a notepad (Jupiter)
  • plyp_home: sun is overdone
  • lassam: I want to do a three-panel about the ISS switching over to Linux, but it's hard to think of a Linux joke that doesn't feel trite and overdone.
  • lassam: My current best candidate is: "We're accellerating uncontrollably towards Jupiter" "Were you fiddling with xorg.conf again?" "yes" "I just wanted to get dual screens working properly"
  • ffff: hmm
  • lassam: Oh, with the obligatory "In recent news, the International Space Station has switched to Linux"
  • lassam: ...
  • lassam: "Unfortunately, they switched to Gentoo" / blank panel / comet headed towards earth
  • lassam: man, that feels lazy
  • lassam: But cheap shots at Gentoo are always funny
  • lassam: ..
  • lassam: maybe the ISS cosmonauts start fighting over Gnome vs. KDE
  • lassam: "The first thing they did was switch from Gnome to KDE" / "Somehow, they found it more comforting than Gnome" / a shot of an obscenely complicated set of gauges and dials :
    • eqj has quit (Quit: Bai!)
  • ffff: lassam: "in recent news..." -: ubuntu upgrade -: flaming death?
    • ffff is kinda drawing a blank
  • lassam: I think I'm going to put the kybosh on a three-panel ending in a comet
  • lassam: It's funny, but it feels too easy
  • lassam: You could build an arbitrary set of comics out of
  • lassam: "In recent news, Group X has adopted Technology Y" / beat / Picture of Group X failing dramatically
  • ffff: true
  • ffff: in the same vein I think it's probably kinda hard to make a non-formulaic linux comic.
  • ffff: ... well, other than maybe Everybody Loves Eric Raymond
  • lassam: It's true, there's sort of the standard set of Linux jokes
  • lassam: BOHO, KDE AND GNOME
  • lassam: BOHO, XORG.CONF
  • lassam: BOHO, BEARDS
  • lassam: ...
  • lassam: "Mission control, in the past three days we've all grown full beards and we don't understand why"
  • n0ob: not bad
  • lassam: And then the last frame is just a picture of the ISS with a beard

Use More Gun

Use More Gun

Gun control is a complex and multifaceted issue without an easy solution!

As far as I can tell, there are a variety of reasons why someone might own a gun.

Hunting, for example, is a totally legit reason to own a rifle. I find hunting distasteful, but I totally understand and embrace the hypocrisy in being a devoted carnivore who is squeamish about killing his own food. I think that anybody who can't muster up the chutzpah to murder a woodland creature should seriously consider becoming a vegetarian - it's a much more tenable moral position. Hunting rifles, though, are a specific flavor of rifle, and it is entirely reasonable to mandate a raft of home-safety controls for these rifles; separate ammunition, trigger-locks, and the like. I mean, if you're only going to use this weapon for hunting...

Then there's the 'democracy' argument - on the off chance that the government happens to overstep its bounds and armed revolution is required, it would be best not to be without weaponry. It's a check against the power of government! A powerful, wildly impractical symbol of democracy! A guerilla measure of last resort! I'm, not really sure what I think about this argument - but regardless, the trigger-locks and separate ammunition could still be in place for the purpose of last-minute democracy. I mean, in a time of revolution, breaking the law would be your last concern, yeah?

So, then, there's the argument from 'safety'. "I have the right to protect my family.". This has kind of a prisoner's dilemma feel to it. If you buy a gun in order to feel safe, you have added a gun to this closed system, marginally decreasing total safety for everyone. If one person buys a gun to feel safe, everybody needs to buy a gun in order to feel safe. Now everybody has a gun and the system on-the-whole has become much less safe.

Well, at least, I think that universal armament would probably be a terrible idea. I imagine that some people see it as a libertarian utopia where law enforcement wouldn't even be necessary because responsible, well-armed citizens would keep everything neatly in order on their own. I'm not sure if I share that level of faith in humanity - one Black Friday sale and the whole thing would come crumbling down on its ears.

I believe that universal disarmament would probably make everybody safer, to no real detriment.

But people who work in particularly dangerous fields (cops, robbers) and people who live in particularly dangerous areas (Detroit, cardboard boxes) are unlikely to participate in such an agreement. Hunters and freedom nutjobs still have a valid claim to guns. In systems where people feel that they need a gun to feel safe, either prohibition will be contravened (the "gun control only gets guns out of the hands of law-abiding citizens" argument) or the concept of prohibition will seem so antithetical that it will never be implemented. So, universal disarmament is likely nothing more than a pipe dream.

Anyhow, people on both sides of the debate point out that the most effective form of gun control is .. dealing with social inequality and reducing media sensationalism. Treating poverty treats crime at the source; Public health programs allow for vital mental health treatments; Getting crime out of the constant 6:00 and 11:00 news cycle helps people feel safer, and people who feel safe don't seek out guns in the first place. (Then, we can quietly add more bureacracy when nobody's watching.)

Okay, so, long, boring ruminations aside, the only real conclusion that I can come to is that ... gun control is a complex and multifaceted issue without an easy solution!

Minimum Viable Kitchen

Warbeard The Frothy

Recently, Priceonomics posted this, the "Minimum Viable Kitchen", laying out the supplies that Matt Maroon found necessary to make a viable kitchen for under $1000.

His supplies, though, seem entirely too fancy. I mean, I'm sure that some people can get by on nothing but a microwave and some forks, but I still think that this Minimum Viable Kitchen is too.. maximum.

  • The Thomas Keller cookbook, Ad Hoc at Home; is a favourite cookbook of my younger brother, who has finished a culinary school degree. For persons looking to seriously upgrade their cooking skills, it's an excellent book. But it's not a part of my kitchen - because the recipes have prep-times that rove from 'days' at the slowest to 'hours' at the fastest.

    Ain't nobody got time for that.. The recipes contain sub-recipes. The meats require brining. You are to prepare and use your own stock. As much as I respect persons willing to spend 8 hours on a cooking project - and I do - I'm usually looking for things that can be prepared in 15 minutes to an hour. Think Stone Soup or Just Bento.

  • The KitchenAid stand mixer. It is a godsend for people making doughs, baking, or preparing cheesecakes. For pastry-chefs, it's a good get. I'm not a pastry chef. There are also loads and loads of kitschy single-use attachments for kitchen projects that you will try once and then never again, like pasta-making, sausage-extruding, and iced-cream churning.
  • Scale. If you're a baker, or you're running a commercial kitchen, you must invest in a scale. I am neither of those things.
  • Ice Cream Maker? Seriously?

I thought I'd put together a much simpler list for Bachelor Cookin'.

  • Pots. 2 sauce-pots, and a stock pot. Don't go too cheap - nice, thick ones are actually a lot less likely to burn your food. The sauce-pots are good for just about anything - boiling eggs, Kraft dinner, actual sauces - and the stock pot is useful for lots and lots of noodles, bigger projects (Chili, Bolognese)- and actual stock.
  • Non-Stick Pan. You should go cheap on this one, because the teflon coating will wear off after a year, no matter how expensive the pan is. Remember the Rules of Teflon:
  • No metal in the pan. No forks, no steel wool, no scraping.
  • Never heat a Teflon pan past 5/6 on your stove, unless you like clouds of invisible toxic gas.
  • Knives. French knife, paring knife. I like a little sharp serrated knife for tomatoes, but that's pretty optional.
  • Cutting Boards. A plastic one should do. I like to maintain separate boards for veggies and meats, to limit cross-contamination potential.
  • Spatula. A silicone spatula, one single unit (rather than two bits stuck together) can be cleaned in SECONDS. Which makes it one of my favourite kitchen tools.
  • Dutch Oven and Baking Pan. For putting things in the oven and leaving them there for a while.
  • Mixing Bowls. For mixing things. I also eat out of these when I'm lazy, because they're super easy to clean.
  • Ramekins. It's nice to have small bowls around for.. dipping things in. Ramekins are great for this, plus they're oven-safe.
  • Measuring Tools. You know, tsp, 1/2 tsp, tbsp, cup, those things. Also, a liquid measure - one of those Pyrex glass liquid measuring cups.
  • Spoons. For serving and stirring. Ladle. Slotted spoon. Wooden spoon.
  • Colander. For draining pasta.
  • Box Grater. For grating things to a variety of different widths.
  • Tongs. Tongs are great for everything. They're like long fingers that are impervious to heat.

That seems like just about everything. What do you think is required kitchen equipment? What would you add? What would you leave out?

What The Hell, Cat Stevens

Warbeard The Frothy

Some songs I listen to in the car make me think, "what the hell, song-writer?".

Like Cat Stevens' "Here Comes My Baby", where, as soon as the song hits "you never walk alone; and you're forever talking on the phone", I start to think that this woman is (and should be) genuinely terrified of Cat Stevens. This is a stalker's anthem. She is not your baby. Leave her alone. The only reason I can listen to this song? Horns!,

Or the Steve Miller Band's "Take the Money and Run". Okay, it's catchy, but the song clearly wants you to take the side of the thieving murderers, Billy-Joe and Bobby-Sue. Why else would you tell us that Billy-Joe shot a man while robbing his castle? Do people who live in nice houses deserve to get shot more than the general population? Why do you need to tell us that Billy-Mack makes his livin' off other people's taxes? GRR. TAXES BAD. The man is a public servant. We should be rooting for him! The song should be called "put the murderers in jail". Whoo whoo hoo.

Oh, well, at least Dee-Lite has the right idea. Scientists have spent many years attempting to triangulate the precise location of Groove, and it's good to know that we have musicians building solid, testable hypotheses.

Yo Mama

Warbeard The Frothy

  • classam: oh snap
  • yangman: yo mama so fat, calling her API causes stack overflows
  • cdemwell: yo mama so far she makes jumbo frames a must-have
  • cdemwell: *fat
  • cdemwell: oops
  • cdemwell: I know :(
  • cdemwell: typing: it matters
  • vlad|job: yo mama
  • classam: yo mama so fat, she allocate her file systems using tables
  • vlad|job: yo mama so fat, she tipped over a self-balancing tree
  • classam: crickets
  • classam: yo mama so fat, when you select * from mama, the server explodes
  • yangman: yo mama so far, they don't make hardware with enough RAM to encapsulate her
  • classam: you mama so far, when people ask where she is, you go "WAAAY OVER THEEEERE" and point, like, WAY off into the distance
  • cdemwell: yeah well yo mama so fat we had to patch the kernel to keep her alive
  • cdemwell: yo mama so far we only know what she looked like before you were born
  • classam: yo mama so fat that Oracle looked at her binaries and they were like 'whoooaah'
  • yangman: yo mama so far her image is noticibly red shifted
  • lumy: yangman: lol
  • classam: yo mama so far it takes like 17 minutes to get from her to Earth
  • classam: ... light.
  • classam: fuck.
  • cdemwell: you mama so far she outside even yangman's mama light cone
  • plypkie: ok, yangman has voted two of you off. the rest of you have to shape up, or you'll be in trouble next week. Work on your designs, and learn to sew faster.
  • lumy: ...
  • lumy: oh god why do I get that joke!?

Hell is Other People's Code

Warbeard The Frothy

  • classam: ...
  • classam: not True and False, you're passing "yes" and "no".
    • classam cries softly
  • vlad|job: Wait... Which language?
  • lumy: classam: checkboxes?
  • classam: Javascript=**: Python
  • classam: Checkboxes, yes, but it looks like the reason this code is failing is because the Javascript side is passing "property":"yes" or "no" and the Python side is just setting the flag to true if the "property" exists at all in the POST data
  • classam: "property":"no" ==**: yes, the property exists! :D
  • PhilB: OK...to buy a micro-SIM, or cut my own...Hmmm...
  • classam: Cut your own, and then, when you fail, buy one! :P
  • yangman: buy one, then cut it anyway
    • calyth seconds
    • calyth clarifies, he seconds both classam and yangman's suggestion
  • classam: http://www.youtube.com/watch?v=_OemNp6hgX4
  • PhilB: Yeah, I was going to go with classam's model...
  • PhilB: Cut mine, and if I fuck it up, buy one!
  • classam: Also, there's this variable called 'act'
  • classam: what the hell does 'act' do?
  • classam: It's either 1 or -1
  • classam: is it another flag?
  • classam: If it's set, will the code start EMOTING

The First Ever Cube Drone Strip


  • classam|work: Just listening to them plan out the strips for PA makes me jealous of their damn talent, and how funny they are.
  • classam|work: Just... casually.
  • classam|work: They sit there, and they shoot the shit for 45 minutes, and toss out more good comic ideas than I have in a week.
  • cdemwel1: to be fair, you tend to sit in an office most of the time
  • cdemwel1: I still think we should make that comic that's totally not about SAP at all
  • krichter|work: heh
  • krichter|work: It'll end up like Dilbert
  • classam|work: Yeah.
  • cdemwel1: naw
  • cdemwel1: we could put a spin on it
  • classam|work: As much as I want to create a rollicking fantasy world of adventure and magic
  • classam|work: I always just end up with more Cube Drone comics.
  • cdemwel1: why is that?
  • classam|work: ...
  • classam|work: looks around
  • classam|work: They say 'write what you know', I suppose
  • lumy: .. I just noticed... I'm completly surrounded by women.
  • classam|work: but, still, Dilbert has it's own thing. It's a very generic daily strip about dumb management and lost engineers. Everything will be compared to Dilbert because it dominates that bleak office fugue so well.
  • lumy: there isn't another male worker for atleast 40'
  • classam|work: There are a hundred thousand comics about video games, I'm sure there's room for at least two about offices.
  • krichter|work: perhaps large software-dev offices, like SAP/IBM/etc
  • classam|work: Honestly, I think it could just be about Software Developers
  • classam|work: Hipster-douchy web-startup developers. Chubby, downtrodden large-company Java developers.
  • classam|work: Bearded, battle-worn system administrators.
  • krichter|work: a play on all the languages in use... the tech that comes and goes
  • classam|work: The EVER-PRESENT push to replace the last hot new thing with the next hot new thing.
  • hjohnson: heh, unixbeards
  • classam|work: XML-RPC is out!
  • classam|work: SOAP is in!
  • classam|work: SOAP is out!
  • classam|work: REST is in!
  • classam|work: REST is out!
  • classam|work: OData is in!
  • lumy: OData is out, JSON is in!
  • classam|work: (okay, technically, OData is a standardized expression of REST principles, but you know what I'm talkin' bout)
  • krichter|work: OData is getting popular here
  • krichter|work: and apparently javascript as a server-side language
  • classam|work: Yeah, that's totally hot.
  • classam|work: Right now.
  • classam|work: For now.
  • yangman: javascript as server-side language still make no sense to me
  • classam|work: Y U DO THAT, JS?
  • yangman: ... until I made the connection with "The valley is really hurting for engineers"
  • yangman: now it makes ALL THE SENSE
  • lumy: "Apple captured 73% of phone industry profits and Samsung captured 26%. HTC took 1%. Everybody else lost money."
  • classam|work: Heh.
  • lumy: (talking about the last quater)
  • yangman: To get started learning OData, begin by readin the OData Overview document..
  • yangman: =**: 404
  • yangman: gj
  • classam|work: Heh.
  • classam|work: So..
  • classam|work: To hell with work, I'm going to spend the rest of my day daydreaming about Cube Drone comics.
  • krichter|work: I can feed you story/punch-lines all day
  • krichter|work: Billion dollar company... skimping on a $20 item because we can't afford it
  • krichter|work: well, "not in the budget"
  • hjohnson: krichter|work: oh, I can do better...
  • xore: lumy, i have the opposite problem
  • xore: there isn't a female coworker for at least 40' from me
  • krichter|work: there are a few that sit near me
  • krichter|work: xore, Angie the closest?
  • lumy: soo... #sfucsss sourced comic ideas?
  • lumy: "send classam|work all the funny / silly / retarded things that happen at your work"
  • yangman: twiddles thumb
  • lumy: classam|work picks something interesting each week and draws :
  • lumy: yangman: WORKING ON IT.
  • yangman: lol
  • yangma: n actually, waiting for phonecall
  • yangman: so, thumbtwiddling
  • lumy: heh.
  • yangman: also, TInyVille has somehow sucked me in...
  • yangman: but I'm mostly trying to find a way to break the game
  • classam|work: :)
  • classam|work: I WILL DRAW ZEM
  • lumy: classam|work: really?
  • lumy: makes a list.
  • classam|work: ... GRADUALLY.
  • classam|work: :P
  • lumy: lumy pushing a glacier : "yangman: SOOON"
  • krichter|work: you could pull a "Wasted Talent", and make it specifically in Vancouver?
  • lumy: meh. I'd go with "in software development"
  • lumy: maybe add occasional "in a west coast rainy city" references.
  • classam|work: Standard character archetypes.
  • cdemwel1: Alternately, rollicking magic in the office
  • classam|work: .. So, on a .team with Lain, a hipster web-startup developer who wants to start up her own company, Cube Drone, a chubby, downtrodden large-company Java developer who is so cynical that he constantly expects the worst and is surprised when it doesn't happen, Miloslav, who is clearly intelligent and working on his fourth or fifth language, but nobody quite understands because he garbles concepts between all of them...
  • krichter|work: looking for characters? You need the uber-smart, but socially inept person
  • krichter|work: the socially popular, but technically inept person?
  • classam|work: Warbeard The Mighty, dev-ops-slash-DM...
  • lumy: classam|work: Warbeard must carry a viking hammer around.
  • classam|work: Walt, the project manager, who exudes a sense of friendly greasiness, hasn't a clue how to code, and often signs the team up for projects completely out of their experience with ridiculous timelines.
  • classam|work: Walt wears nice clothing and a tie, and seems like the sort of person who goes home to wear a full leather body-suit.
  • krichter|work: you need separate people for: project manager, character's manager, and team lead... all which think they own the person
  • classam|work: Yeah, so, Walt is the project manager, and Miloslav is the Lead Dev.
  • classam|work: The character's line manager will be a Charlie Brown Parent.
  • classam|work: Often mentioned, never seen.
  • classam|work: Just the source of mysterious directives from the void.
  • cdemwel1: what's wrong with leather bodysuits? :(
  • classam|work: Er, when I say 'the main character'
  • cdemwel1: http://www.topgearleather.com/
  • classam|work: ... it's an ensemble comedy.
  • plypkie: learns new things about cdemwel1's private life
  • cdemwel1: extra points for douchetastic duckface picture
  • cdemwel1: plypkie, you knew I motorcycle
  • plypkie: yes, motorcycle
  • plypkie: _
  • plypkie: : _:
  • classam|work: cdemwel1: I meant this kind of leather bodysuit ( http://cdn100.iofferphoto.com/img/item/150/494/955/very-crue... )
  • cdemwel1: not clicking
  • classam|work: That's SFW, but .. uh..
  • classam|work: Well
  • cdemwel1: not clicking
  • classam|work: Might be some strange discussions .
  • classam|work: Then, to round out the cast, Sparky, the energetic, intelligent, inexperienced Co-op who refactors everything when nobody is looking...
  • krichter|work: well, 2 co-ops
  • krichter|work: one spunky, the other that slacks off
  • xore: i accidentally clicked before i read the url
  • xore: it was sfw
  • xore: ...sort of
  • plypkie: xore: we call that nsfkw
  • plypkie: wait, you are kw
  • xore: i am @ kw
  • xore: yes
  • classam|work: Maybe Sparky is alternatingly spunky and a slacker.
  • classam|work: A spunker. Wait. No. That doesn't sound good.
  • ffff: lol kw
  • classam|work: Honestly, I think that that link is pretty tame considering how the sentence started "I meant this kind of leather bodysuit"
  • plypkie: and cdemwel1 mentioned his involved leather bodysuits and duckface
  • cdemwel1: oh, I guess my URL doesn't seem like a motorcycle link
  • cdemwel1: but it is
  • plypkie: seems like you'd get bugs in your teeth if duckfacing while motorcycling
  • cdemwel1: he was just posing
  • yangman: welp. I guess that could have gone smoother, but considering I haven't actually done this in a few years and uber short notice, GOOD ENOUGH
  • yangman: and now it's lunch time
  • plypkie: what was that for?
  • yangman: TinyCo
  • yangman: maker of those farmville type games for mobile that are transparently psychologically manipulative but OH GOD WHY CAN'T I STOP TAPPING ON COINS
  • yangman: but, whatever. people are willing to pay for it
  • plypkie: heh
  • yangman: their tech is kinda cool. apparently they have an engine where you write C++ and it turns out iOS and Android versions automagically
  • yangman: and whole buncha neat stuff happening on the backend with analytics
  • yangman: otherwise, fairly typical SF deal, I guess. funded by some big names
  • yangman: they're trying to open a vancouver office
  • yangman: looking at the pace things are going, they wanted the office open a month ago
  • lumy: heh.
  • yangman: so, near as I can tell, TinyVillage is about slavery
  • yangman: slavery for arbitrary capital gains, even
  • yangman: you have these guys, working farms and mines and lumber mills
  • yangman: generating resources, paying taxes
  • yangman: there are stores where you can turn said resources into money and "EXP"
  • yangman: (and, everything is designed such that you have to baby sit it to actually work, because everybody hates automation)
  • yangman: and the EXP, in turn, unlocks more structures you can build using money and resources
  • lumy: yangman: well.. they guys wanting you to spend as much time in game as possible certinly do.
  • yangman: except, everything just kinda vaporizes into thin air
  • yangman: I mean, you can build ropes and hammers and fancy stone clubs
  • yangman: but none of it actually increases the productivity of your dwellers
  • yangman: the taxes each dwelling generates is so small in comparison to its cost and maintenance that you have no incentive to increase population unless those people can be put to work
  • yangman: afaict, the player isn't so much an architect and planner but more the janitor
  • yangman: because everything poops coins, apparently
  • yangman: that flower bush over there? generates coins every 30 minutes
  • yangman: the fountain? fills up with coins every 2 hours
  • yangman: that rock? coins
  • yangman: palm tree? coins
  • yangman: if you don't sweep up all the coins, you get these unsightly "OMG I'M FULL OF COINS" popup everywhere
  • yangman: of course, once you do clean the, they just go poop more coins
  • yangman: it's madness I tells ya
  • yangman: madness
  • yangman: oh, and there's dinosaurs involved, somehow
  • yangman: and a magic glowing rock that hungers for resoruces and coins and EXP so that it may GROW EVER BIGGER
  • yangman: I guess what I'm saying is ALL HAIL THE MAGIC ROCK
  • classam|work: "We made a game. It's exactly like Dwarf Fortress, except we took the robust simulation engine out and replaced it with clicking on coins."
  • gtz: pax hotels are live
  • yangman: LIVE
  • ffff: (and by "live" she means "ALREADY TEEMING WITH AVIAN EBOLA HERPES")
  • yangman: all the viruses
  • gtz: they're aliiiiiive
  • jeikobu: With the sounds of...
  • yangman: mucus?
  • ffff: applauds
  • plypkie: pox prime
  • gtz: I just checked the group booking stuf
  • gtz: there's no difference in price
  • gtz: it just allows you to book blocks of up to 25 rooms at once
  • gtz: so, welp now we know
  • ffff: ha
  • classam|work: LIVE LIVE LIVITY LIVE :P
  • classam|work: gtz: Thanks for the heads up
  • gtz: woo


This is how Deus Ex : Human Revolution ended, in my head.

God, I loved Deus Ex: Human Revolution - even more than the original, really, which is saying a lot.

This is literally how it ends, though. You're in a room with four different buttons and each button triggers a different ending. I learned later that there's a "goodness" modifier that affects all four endings, so if you're an assbag during the game, you get Evil Ending 1-4, whereas I got Good Endings 1-4.

But at the end, in a bunch of the different endings,, Adam Jensen lives, but the story doesn't give him any closure. I know it's more about the sociopolitical effects of his decision, but... does he just... go home and watch daytime television? What happens to Adam? What happens to Pritchard? What happens to any of the characters involved in the game?