Last minute geek

last minute tech news from around the net

You are here: English WTF


Error'd: Meats or Exceeds My Expectations

"Sure, it's a bit expensive, but hey, where else can you find a place with a huge outside baloney?" Keith S. wrote.


"People think that nobody plays Candy Crush any more," writes Maddie, "It seems their testers agree."


Alex writes, "Well, looks like Facebook is testing in production again."


"These empty groups in Facebook Workplace are definitely where things take off...any minute now..." Björn E. wrote.


Janez writes, "Seeing a stack trace while driving hits you a little differently than when you're at your desk."


"Ok, name parsing can be tricky, but sometimes it's best to just not to try so hard," wrote Geoff G.


Peter K. writes, "Now we know that XP is hiding out in the French Alps."


[Advertisement] Incrementally adopt DevOps best practices with BuildMaster, ProGet and Otter, creating a robust, secure, scalable, and reliable DevOps toolchain.

Read all

Editor's Soapbox: The Billable Hour

For every line of code that ends up in software the general public sees or interacts with, for every line in your Snapchats and Battlezone: Call of Honor Duty Warfare, there are a thousand lines of code written to handle a supply chain processing rule that only applies to one warehouse on alternating Thursdays, but changes next month thanks to a union negotiation. Or it’s a software package that keeps track of every scale owned by a company and reminds people to calibrate them. Or a data-pump that pulls records out of one off-the-shelf silo and pushes them into another.

That’s the “iceberg” of software development. In terms of sheer quantity, most software is written below the waterline, deep in the bowels of companies that don’t sell software, but need it anyway. That’s the world of internal software development.

And internal software development, in-house software shops, have a problem. Well, they have lots of problems, but we’re going to focus on one today: Internal Billing and the Billable Hour.

At a first pass, internal billing makes sense. If you are a widget manufacturer, then you want the entire company aligned with that goal. If you buy raw materials, those raw materials are going into widgets. If you pay laborers, their labor should be going into making widgets. If you buy capital assets, they should be things like widget-stamping machines.

A person using a computer and a calculator at the same time for some insane, stock-photo related reason

But you can’t just build widgets. Your workers need to organize via email. The new Widget-Stamper 9000 needs network connectivity, so you need network drops and routers and switches, which in turn need regular maintenance. This is, in pointy-haired-boss speak, “overhead”. You need it, but it doesn’t directly make widgets. It’s a cost center.

So what do large companies do? Well, they take all those “non-productive” activities and shuffle them off into their own departments, usually in a “corporate SBU”. Then all the departments doing “real” work get a budget to spend on those “cost centers”. And thus, internal billing is born.

Each employee needs an email account. Let’s assign that a cost, a rough—sometimes very rough—estimate of the total cost of managing the email account. Our corporate IT department will charge $20/yr per employee to cover the storage, configuration, management, and helpdesk support associated with their email account—and so on through the list of IT-related goods and services. Now the idea is that individual departments know their IT needs better than anyone else. By putting them in control of their IT budgets, they can spend their money wisely.

If you’re a widget-making company, you view software and IT support as an overhead cost, and recognize that you only have the capacity to pursue a certain number of IT projects, this makes perfect sense. Budgets and billing create a supply/demand relationship, and they give corporate the ability to cut overhead costs by controlling budgets. (Of course, this is all founded on the faulty assumption that in-house software development is simply overhead, but let’s set that aside for now.)

The problems start when internal billing meets software development, usually through the interface of the “billable hour”. The combination of these factors creates a situation where people who are ostensibly co-workers are locked into a toxic client/vendor relationship. The IT department is usually in a disadvantageous negotiating position, often competing against external vendors for a business department’s IT budget. Treating corporate IT as the preferred vendor isn’t all sunshine and roses for the business, either. There are definitely cases where external vendors are better suited to solve certain problems.

Putting IT resources on a billable hours system introduces a slew of bizarre side effects. For one thing, hours have to be tracked. That overhead might be relatively small, but it’s a cost. “Idling” becomes a serious concern. If developers aren’t assigned to billable projects, the IT department as a whole starts looking like it’s being non-productive. Practices like refactoring have to be carefully concealed, because business units aren’t going to pay for that.

Spending more billable hours on a project than estimated throws budgets out of whack. This forces developers into “adaptive strategies”. For example: padding estimates. If you can get an extremely padded estimate, or can get a long-running project into a steady-state where no one’s looking too closely at the charges, you can treat these as “banks”. A project starts running over your estimate? Start charging that work against a project that has some spare time.

Of course, that makes it impossible to know how much time was actually spent on a project, so forget about using that for process improvement later. It also makes every project more expensive, driving up the costs of internal development. This drives business users to seek external solutions, spending their IT budget outside of the company, or worse: to find workarounds. Workarounds like maybe just building a big complicated Excel spreadsheet with macros in it.

This isn’t even always restricted to hourly charges, either. I saw one organization that had a charge-back rate of $10,000/yr for a SQL Server database. That wasn’t licensing or hardware, that was just to create a new database on an existing instance of SQL Server. The result? Pretty much no business unit had a working test environment, and they’d often stack four or five different applications into the same database. Rarely, they’d use schemas to organize their tables, but usually you’d have tables like: Users, Users_1, UsersNew, UsersWidgetsoft, ___Users.

Forget about upgrades, even if they’re required. Short of making organization-wide modernization a capital project, no department or business unit is going to blow their IT budget on upgrading software that already works. For example, Microsoft still supports the VB6 runtime, but hasn’t supported the VB6 development environment since 2008. So, when the users say, “We need to add $X to the application,” IT has to respond, “We can’t add $X unless we do a complete rewrite, because we can’t support it in the state it’s in.” Either the business ends up doing without the feature or they make it a demand: “We need $X and we need it without a complete rewrite.” Then your developers end up trying to breathe life into a Windows 2000 VM without connecting it to the network in hopes that they can get something to build.

Billable hours turn work into a clock-punching exercise. Billing time is how you’re judged, and whether or not that time is spent effectively becomes less relevant. Often, by the end of the week, employees are looking for ways to fill up their hours. This is a task that should be easy, but I’ve watched developers agonize over how much they’re going to lie to make their timesheet look good, and hit their “85% billable” targets. This gets especially bizarre since you’re not self-assigning tasks, but you have to have 85% of your time billable, and thus you need to take the tasks you’ve been assigned and spend a lot of time on the billable ones to make sure you hit your targets, turning five-minute jobs into ten-hour slogs.

We could go on dissecting the problems with billable hours, and these problems exist even when we assume that you can just view your in-house software as a cost center. Some of these problems can get managed around, but the one that can’t is this harsh reality: software isn’t a cost center.

I’ve heard a million variations on the phrase, “we make widgets, not software!” Twenty years ago, perhaps even ten years ago, this may have been true. Today, if you are running a business of any scale, it simply is not. It’s trite to say, but these days, every business is an IT business.

One project I worked on was little more than a datapump application with a twist: the data source was a flow meter attached to a pipe delivering raw materials to a manufacturing process. The driver for reading the data was an out-of-date mess, and so I basically had to roll my own. The result was that, as raw material flowed through the pipe, the ERP system was updated in real-ish time with that material consumption, allowing up-to-the-minute forecasts of consumption, output, and loss.

How valuable was that? It’s not simply an efficiency gain, but having that sort of data introduces new ways of managing the production process. From allowing management to have a better picture of the actual state of the process, to helping supply chain plan out a just-in-time inventory strategy, this sort of thing could have a huge change on the way the business works. That wasn’t a skunkworks idea, that wasn’t IT just going off and doing its own thing. That was a real hook for business process improvement.

Smart companies are starting to figure this out. I’ve been doing some work for a financial services company that just hired a new CTO, and he’s turned around the “We make $X, not software,” and started his tenure by saying, “We are a software company that provides financial services.” Instead of viewing IT as a sink, he’s pushing the company to view IT as a tool for opening up new markets and new business models.

So, yes, IT is a cost of doing business. You’ll need certain IT services no matter what, often fulfilled with off-the-shelf solutions, but configured and modeled to your needs. IT can also be a cost savings. Automation can free up employees to focus on value-added tasks.

But the one that’s underestimated in a lot of companies is IT’s ability to create value-added situations. If you make widgets, sure, it’s unlikely that your software is going to directly change the process of making widgets, so it’s unlikely that your software is itself technically “value added”. But a just-in-time supply chain system is more than just a cost savings or an efficiency booster. It can completely change how you manage your production process.

By placing the wall of billable hours between IT and the business, you’re discouraging the business from leveraging IT. So here are a few ways that corporations and management could possibly fix this problem.

First, as much as possible, integrate the IT staff into the business-unit staff. This might mean moving some corporate IT functionality out into individual departments or business units (if they’re large enough to support it), or dedicating corporate staff to a relationship with specific business units. Turn IT workers into a steady flat cost, not a per-hour cost. When trying to handle priorities and deciding how to spend this limited resource to get new software developed, business-unit management can set priorities.

If an organization absolutely must use internal billing to set priorities and control demand for IT resources, move as much work as possible into fixed-rate, flat-fee type operations. If a business unit requests a new piece of software, build a fixed-bid cost for that project, not an hourly cost.

While a “20% time” approach, where employees are allowed to spend 20% of their time on their own projects, doesn’t work in these kinds of environments, an organizational variation where some IT budget is used on speculative projects that simply might not work—a carefully managed skunkworks approach—can yield great benefits. It’s also an opportunity to keep your internal IT staff’s skills up to date. When you’re simply clocking billable hours, it’s hard to do any self-training, and unless your organization really invests in a training program, it’s easy to ossify. This can also involve real training, not “I sent my drones to a class, why don’t they know $X by now?” but actual hands-on experimentation, the only way to actually learn new IT skills.

All in all: billable hours are poison. It doesn’t matter that they’re a standard practice, they drag your IT department down and make your entire organization less effective. If you’re in a position to put a stop to it, I’m asking you, stop this. If you can’t stop it, find someone who can. Corporate IT is one of the most important yet under-prioritized sectors of our industry, and we need to keep it effective.

[Advertisement] Release! is a light card game about software and the people who make it. Play with 2-5 people, or up to 10 with two copies - only $9.95 shipped!

Read all

CodeSOD: Well Padded

We don’t receive many CSS-based submissions, possibly because CSS is already pretty horrible. There are real-world, practical things that you simply need to take a hacky, awkward approach with.

Matthew found this code, however, which isn’t a clever hack to work around a limitation, and instead just leaves me scratching my head.

    @media (min-width: $screen-lg-min) {
      padding: 1rem 1rem 9999px;
      margin-bottom: -9999px;

I liked this approach so much I went ahead and used it on this article. It's a brillant way to control page layout.

[Advertisement] BuildMaster integrates with an ever-growing list of tools to automate and facilitate everything from continuous integration to database change scripts to production deployments. Interested? Learn more about BuildMaster!

Read all

Blind Obedience

Murray F. took a position as an HPC at a large firm that had rules for everything. One of the more prescient rules specified that for purposes of budgeting, consultants were only allowed to bill for 8 hours of work per day, no exceptions. The other interesting rule was that only certain employees were allowed to connect to the VPN to work from home; consultants had to physically be in the office.

The project to which Murray was assigned had an international staff of more than 100 developers; about 35 of them were located locally. All of the local development staff were HPCs.

With that much staff, as you would expect, there was a substantial MS Project plan detailing units of work at all levels, and assorted roll-ups into the master time line.

A soccer ref holding up a red card

The managers that had created this plan took all sorts of things into account. For example, if you attended three hours of meetings two days a week, then you only had 34 hours available for work; if you had to leave early one day to pick up your kid, it set those hours aside as non-work, and so on. The level of detail even took into account the time it takes to mentally put down one complex task and pick up another one. It was awful to look at but it was reasonably accurate.


Weather forecasters are wrong as often as they are right. However, the spiraling pin-wheel of snowstorms was getting bigger and barreling down on the local office, and was so imminent that even the forecasters were issuing absolute warnings. Not "It looks like we might get six inches"; but more along the lines of "Get groceries and plan to be shut in for a while".

The storm hit at night and by first light, anyone who looked out the window immediately realized that the forecasters were right and that they weren't going anywhere. In an attempt to be good team players, the consultants called their managers, pointed out that they were snowed in and unable to travel, and given the special circumstances, could they use the VPN and work from home?

The managers all responded that the rules were very specific and that the consultants could only work from the office. Since the consultants were powerless to do anything about the weather or the mountain of snow that had to be shoveled, they took snow days and no work was done.

That's 35 consultants for 2 days or 70 days of (loaded) work, or about 2 ½ months of work that vaporized. Needless to say, this turned the otherwise green time line quite red.

The managers called a meeting to discuss how to make up the time. Their first suggestion was that the consultants put in more time, to which they responded The rules specify that we cannot bill more than 8 hours each day. The managers then asked the consultants if they would work without pay - to get it done. Wisely, the consultants said that they were required to play by the rules set forth by the company, and could not falsify the billing sheets with the wrong number of hours worked.

The sponsoring agencies of the consultants all agreed on that one (free labor means no commissions on said labor).

This went back and forth for a while until it came time for scheduled demos. Only the work was about ten person-weeks behind schedule and the features to be demo'd had not yet been built.

At this point, the senior people who could not see their expected features in action had no choice but to address the snow delay. After much discussion, they decreed that the budgets had to be adhered to (e.g.: billing was limited to 8 hours per day), but the line development managers could hire additional consultants to make up the missed work. The managers got to work adjusting the master project plan.

The existing consultants pointed out that it would take a substantial amount of time to find new consultants, get computers, set up development environments, do general on-boarding and get new developers up to speed; and that it didn't make sense to hire new developers for something like this.

It was decreed that rules had to be followed, and it didn't matter if it wasn't cost efficient to follow those rules.

So they spent about a month interviewing (new project task for existing senior consultants and managers), bringing new consultants on board (getting them equipment, access, etc. - a new project task for managers) , and giving them architecture and code walk-throughs (new project task for existing senior consultants). This necessitated increasing the expense to the project to cover all the additional overhead.

All to save a few bucks in additional billing by already-trained-and-equipped developers, which would have been completely unnecessary if they had just let them work from home in the first place.

But hey, those were the rules.

[Advertisement] Application Release Automation – build complex release pipelines all managed from one central dashboard, accessibility for the whole team. Download and learn more today!

Read all

CodeSOD: A Date With a Parser

PastorGL inherited some front-end code. This front-end code only talks to a single, in-house developed back-end. Unfortunately, that single backend wasn’t developed with any sort of consistency in mind. So, for example, depending on the end-point, sometimes you need to pass fields back and forth as productID, sometimes it’s id, productId, or even _id.

Annoying, but even worse is dealing with the dreaded date datatype. JSON, of course, doesn’t have a concept of date datatypes, which leaves the web-service developer needing to make a choice about how to pass the date back. As a Unix timestamp? As a string? What kind of string? With no consistency on their web-service design, the date could be passed back and forth in a number of formats.

Now, if you’re familiar with the JavaScript Date datatype, you’d know that it can take most date formats as an input and convert them into a Date object, which gives you all the lovely convenience methods you might need. So, if for example, you wanted to convert a date string into a Unix timestamp, you might do something like this:

    var d = new Date(someDataThatProbablyIsADateStringButCouldAlsoBeANumber); //Could also use Date.parse
    return d.getTime();

That would cover 99% of cases, but PastorGL’s co-worker didn’t want to cover just those cases, and they certainly didn’t want to try and build any sort of consistency into the web service. Not only that, since they knew that the web service was inconsistent, they even protected against date formats that it doesn’t currently send back, just in case it starts doing so in the future. This is their solution:

 * Converts a string into seconds since epoch, e.g. tp.str2timestamp('December 12, 2015 04:00:00');
 * @param str The string to convert to seconds since epoch
 * @returns {*}
function str2timestamp(str) {
    if (typeof(str) == "undefined" || str.length == 0) {

    if (typeof(str) != "string") {
        str = "" + str;

    str = str.trim();

    // already a unix timestamp
    if (str.match(/^[0-9]{0,10}$/)) {
        // TODO: fix this before january 19th, 2038 at 03:14:08 UTC
        return parseInt(str);

    // most likely a javascript Date timestamp that is in milliseconds
    if (str.match(/^[0-9]{13,}$/)) {
        return parseInt(str) / 1000;

    var ts = Date.parse(str);
    if (ts) {
        return ts / 1000;

    // fix 00:XX AM|PM & 00:XX:XX AM|PM
    str = str.replace(/00:([0-9]{2}(:[0-9]{2})?s*[AP]M)/i, "12:$1").replace(/([0-9]{2})([AP|M])/i, "$1 $2");

    // remove any "on, at, @, or -" from the date
    str = str.replace(/s*(at|@|-|on||)s*/gi, " ");

    str = str.replace(/s*(mon(day)?|tue(s?day)?|wed(nesday)?|thu((rs)?day)?|fri(day)?|sat(urday)?|sun(day)?)s*/gi, "");

    str = str.replace(/([0-9]{1,2})(st|nd|rd|th)/, "$1");

    // replace bad time zone
    if (str.match(/s+ET$/)) {
        if (d.getTimezoneOffset() == 240) {
            str = str.replace(/s+ET$/, " EDT");
        } else {
            str = str.replace(/s+ET$/, " EST");

    str = str.trim();

    var ts;

    ts = Date.parse(str);
    if (ts) {
        return ts / 1000;

    // jan/3/2001
    if (m = str.match(/!^([a-z]+)[-/ ]([0-9]+)[-/ ]([0-9]+)(.*)$!i/)) {
        str = m[2] + " " + m[1] + " " + m[3] + m[4];
    } else if (m = str.match(/!^([0-9]+)[-/ ]([a-z]+)[-/ ]([0-9]+)(.*)$!i/)) {
        // 3/jan/2008
        str = m[1] + " " + m[2] + " " + m[3] + m[4];

    ts = Date.parse(str);
    if (ts) {
        return ts / 1000;

I particularly like that, if it’s not a string already, they turn it into one, because regexes are the best way to count the digits in a string, apparently.

In the end, is TRWTF this code, or the inconsistent representations of the web service endpoints?

The Mexican girl from the taco commercial who says, 'Why not both?'

[Advertisement] Otter enables DevOps best practices by providing a visual, dynamic, and intuitive UI that shows, at-a-glance, the configuration state of all your servers. Find out more and download today!

Read all

Error'd: Taking Things a Little Too Literally

"Web design pro-tip: If it takes a while to load data, just put an 'Animated loading spinner' on the screen," wrote Stuart L.


Jeremy W. writes, "Not what you'd expect to see on Microsoft's site and especially not what you want to see when trying to install an IIS extension."


"I think someone needs to fidget with their calculator instead," writes Al.


"Yeah, I logged into Credit Karma Tax's site around that time, but I'm pretty sure that it wasn't with the computer I had back in 1998," Shawn A. writes.


Jay C. wrote, "Apparently the special ingredient is HTML."


"When you change your logoff sound to 'Bohemian Rhapsody', you and your computer are going to wait a while to shut down," Geoff O. wrote.


"Gosh, I could play it safe and get the this drawer in the color 'small' to match my decor, or throw caution to the wind, live a little and order a 'medium' color instead!" writes Mike S.


[Advertisement] Release! is a light card game about software and the people who make it. Play with 2-5 people, or up to 10 with two copies - only $9.95 shipped!

Read all

Software on the Rocks: Rolling for Dollars

Today, we present our second installment of Software on the Rocks, complete with new features, like an actually readable transcript done by a professional transcriber. Isn’t that amazing?

In today’s episode, Alex and Remy host a special guest, Justin Reese, founder of Code & Supply, one of the largest developer community organizations out there, with a nearly constant stream of events. In this episode, we discuss what building a community is like, when is it fair to really tear into bad code, and that time Alex made 10,000 people late for work.

This episode of Software on the Rocks is brought to you by Atalasoft.


Web Player

Tune in two weeks, when we’ll have Jane Bailey, one of our writers, to discuss working for the site and the perils of “Programmer Anarchy”. Follow future episodes here on the site, or subscribe to our podcast.


Alex: I guess this is another podcast we’re doing.

Remy: We are doing this again, and you know what? Not only are we doing this again, Alex, but we have brought a friend. This is Remy Porter, editor of The Daily WTF. We’ve got Alex.

Alex: Hello, everyone. Hello, Remy.

Remy: And we have with us Justin Reese. So, uh, Justin, why don’t you tell us a little bit about yourself?

Justin: Oh. Oh, no. Remy met me through Code & Supply, which is an organization that I started to kind of foster a strong software community here in Pittsburgh.

Alex: What sort of things do you do?

Justin: Well, so, Code & Supply started because there were lots of disparate meet-ups around the city and just holding events. And there were some really small ones that had great ideas and great people involved but they were really small and they were susceptible to one person failing to do something. And the whole community around a language would die in the city. So, I wanted to make a stronger organization, bring on sponsorship money, and pay to do really cool things, and it just kind of –

Alex: And so, this is all Pittsburgh-based, all Pittsburgh local. It sounds like a pretty interesting idea.

Justin: Yeah, along with something like 8 to 12 events every month, we held Abstractions this year. You know, it was a very, very large conference.

Alex: Oh, that was your conference?

Remy: That was his conference. I was an attendee. I just showed up. This was an amazing conference.

Justin: What’s really amazing is, like, we had a lot of people there. We’re really focused on creating connections between people, so we – The whole focus was building a bridge between, like, a design community, the ops community, the development community into one thing. But we ended up doing some really amazing things, like Larry Wall, the inventor of Perl, for the first time ever, meeting Joe Armstrong, the inventor of Erlang.

Alex: Now, Justin, is Abstractions a not-for-profit or – This whole Code & Supply thing, like, is this someone’s full-time job? I mean, it sounds almost hobby-like, but then, you know, a conference – that’s, like, gone beyond a hobby. You know, there’s some real risks you have to take on to do that.

Justin: That’s kind of the reason behind Code & Supply, though, is so that the risk is minimized a little bit. I signed contracts with venues and things that would have financially ruined me if something went wrong, but, you know, having Code & Supply as an organization at least protects me, personally, a little bit.

Alex: And just to be clear, when you say, “huge financial risks and liabilities,” you know, this is the thing with conferences that always amazes me, right, is that, you know, we’re talking, like, hundreds of thousands of dollars. And why take on all that liability for, effectively, a hobby?

Justin: Alex, you have a pretty good point. It is –You know, I mean, it is, to a point, fun, and I’d love to get to a point where I can make it my full-time job. It’s not quite there yet, but, you know, all the money we’ve made so far has been re-invested into our community. So, we took that Abstractions money that we made and we signed up for a really long lease for a community center so that we can have a place to hold events in perpetuity. And most of the time, I’m making decisions based on how to make the community more welcoming, ‘cause growth is kind of what makes Code & Supply awesome, is its incredible size to do really fantastic events. To grow, you got to be welcoming and get all the people involved.

Alex: Now, Justin, I’m actually in the midst of organizing my own conference here. Well, I shouldn’t say “my own.” It’s DevOpsDays Tokyo. And this is one of the same issues that we’re facing is this whole notion of being open and being welcoming. The things that I see a lot are the elitism.

Justin: Alex, I think that combating that feeling of elitism is kind of important. You know, we’re a polyglot community, and that means a lot of language, so people make choices for different reasons, and that “best tool for the job” mentality really goes a long way.

Remy: And so, Justin, what would you say to the – there’s this one kind of tribe of elitists I see. They’ll grab code samples from other people’s codebases, usually offered by a disgruntled co-worker, and then they’ll post these code samples on a website. They, like, have this “Code Sample of the Day,” and they do these very critical code reviews. I don’t know. I feel like these people could be part of the problem.

Justin: Remy, are you talking about something specific?

Remy: I’m talking about The Daily WTF.

Justin: Yeah, yeah, yeah, yeah. That’s –

Alex: Oh, hey. That’s –
[All laughing ]
That’s the podcast we’re doing today, isn’t it?

Remy: Yeah. Wow, yeah.

Alex: The pieces come together. Well, I guess –

Justin: I know it’s a podcast, but I’m pulling my collar nervously.

Alex: Well, well, um, there really is a difference between this hobbyist code – you know, the stuff you’re gonna go – now, obviously, it’ll be the stuff you post on GitHub or things like that, right? Code that you’re doing either for a hobby or trying to learn versus “This is your job and you are failing so bad at it that you should not be accepting money to do this.”

Justin: When you work at a company of a certain size, you kind of lose these excuses. I’ve seen shaming of open-source code, and that’s sad and never – never right. But I’ve seen production products from companies that are gigantic and have huge software teams on really simple ideas and core features to their product, and I have no problem calling that out, because if FedEx has a help link that leads to a 404 page, that’s a problem.

Remy: That’s actually a good segue into one of the things I wanted to bring up. This may come as a shock to everyone, but I am a bit of a giant nerd, and as a giant nerd, that does mean I play D&D-type campaigns, right, role-playing games of all the different stripes. And one of the groups I play with, we meet weekly online using a service called Roll20. Roll20 was a big Kickstarter success story. They wanted to build an online tabletop. They did a Kickstarter. They got umpty-ump millions of dollars to do this, and this is where, kind of, the wheels sort of come off, because it is an incredibly small team, from what I understand, and the team that they’ve built doesn’t really have the talent to do what they need to do. Just today, they actually did an announcement, and this is partially a piece of good news. They’ve enabled a new feature. They call it QuantumRoll.

Alex: Ooh, that sounds cool.

Remy: Ooh, isn’t that fancy? They now utilize a, quote, “true random” source of entropy. But it’s the thing that goes before that announcement that really got my attention, ‘cause we’re talking about certain things you don’t do and certain signs of bad software quality. And their announcement actually starts off, quote, “Rather than relying on client-side pseudo-random number generation,” client, in this case, being your web browser –

Alex: Oh, actually, that’s a nice system, because, now, what if you want to roll a natural 20?

Remy: That’s right.

Alex: What if you want to roll a 14? This is perfect. So, you know, and I think that’s a good differentiator. If this was just some hobby website where we can excuse it because it’s just, you know, their fun little side thing and who cares, right? This is literally their job. And, yeah, I think this is absolutely a case where you should call them out on it. Yeah, absolutely. That is – I don’t think, at all, it’s elitist to call that, you know, what it is – just crap software.

Justin: The moment you start to take money for something is the moment that someone has the right to start complaining about that thing.

Alex: Now, Justin, that’s a great point. Now, just, I got to ask, though – garage-sale rule. When does that apply?

Justin: Hmm.

Remy: What’s the software equivalent of that, though? ‘Cause there’s no garage sale of software, except maybe Good Old Games, right?

Justin: I would say that open source is kind of the garage sale software.

Remy: Well, you could always go and, uh, start open-sourcing BuildMaster.

Alex: You know, so, that’s a great point, Remy. So, Inedo’s products – we have open-sourced all of our extensions. But our core product code is not open source, and there’s actually a very, very good reason for it that I don’t think is that obvious. When we started, there was no GitHub. There was no community portal. We have everything inside of this ancient, source-control tool called SourceGear Vault. SourceGear Vault, I believe, still today is marketed as a better replacement for SourceSafe.

Remy: That’s what I wanted – I was gonna ask that. I was like, “How does this compare to SourceSafe? ‘Cause it sounds like it’s similar.”

Alex: Yeah. Yeah. It is, but better, so…

Remy: Well, that’s not hard.

Alex: No, no. And to be fair, it really is a lot better than SourceSafe. That’s actually all I can say about it. But, you know, for what it was, it’s fine. But now just picture – We’ve got this giant legacy of code. We’re a small team. What week do we spend completely getting all of the code outside of SourceGear? It would be nice to do, but it just – Everything that we’re doing right now works, and there just hasn’t been enough of a demand to do it.

Justin: Uh, guys, I just Googled SourceSafe, so that shows you how much –

Remy: Oh, no! Oh, he’s so young, so naïve. Oh, my goodness.

Justin: The last stable release happened when I was in high school, so…

Remy: When I left PPG, my last job – I left them in 2014 – they had just, just gotten their last SourceSafes migrated into TFS.

Justin: You know what, Remy? Interesting fact about me – I am probably one of the few people that has been paid to do both COBOL and Ruby. So, you know, just talking about, you know, dead languages, some of these languages will never die.

Remy: COBOL will outlive everyone listening to this podcast, hands down.

Alex: That’s a really scary thought. But true. So, you might find this particularly interesting, Justin. So, currently, I’m in Japan, and COBOL is a surprising part of I.T. A lot of this not-wanting-to-change is endemic in their culture because the change has nothing to do with driving business requirements.

Remy: And that segues, really, into an interesting topic, because one of the things – There’s not just a cost of changing, right? There’s also a risk, because that change might fail.

Alex: Yeah, really, it comes down to an unknown amount of work. It’s a significant risk. And it would be awfully nice if there was an easier way for us to identify or sort of manage these sorts of risks.

Remy: We brought up, and the end of our last episode, that we wanted to talk about, you know, risk management, risk mitigation, and how that impacts working in I.T. in ways that I don’t think a lot of developers think about, and we had some homework to come up with some buzz words.

Justin: How about YoloOps?

Alex: Oh, my God. I love it.

Remy: Ooh.

Alex: Are we talking, like – Did you say YOLO or yellow?

Justin: Yeah, YOLO. YOLO.

Alex: Oh, my God. Those are actually both really good, because neither of them makes sense, kind of a lot like, you know, uh, DevOps, but I like it.

Remy: Yeah, ‘cause over –like, the first time you said it, I honestly thought you said YellowOps, and I actually was kind of excited about YellowOps, ‘cause, you know, you think about what does every manager want to see, right? They want that dashboard with a stop light on it that’s red, yellow, or green. Right? YellowOps, man. “We want to get out of the yellow and into the green. How do we do that? That’s what we need.”

Alex: Well, Justin, I think we may actually have a term now, and that could be YellowOps. Either “Yellow” or “YOLO.” Say it fast enough, doesn’t really matter. But I really like where you were going with it, Remy, of the red, yellow, green stop light. How could we work YOLO into Ops?

Justin: So, YoloOps – Hold on, hold on. YoloOps – There are three circles in YoloOps, and turn it sideways, boom.

Remy: Oh, my gosh. It’s the stoplight!

Alex: Whoa, whoa.

Remy: Oh, that is so good.

Justin: I just made a logo on a podcast.

Alex: And, you know, Remy, please tell me more about what YOLOPS or YoloOps is and how it can help my organization.

Remy: All right. So, you know how you’ve got an organization with a legacy project and they just can’t change it? Or when there’s a new process that you could employ, like, say, DevOps, and management just can’t get behind it? YoloOps understands that the reason these things happen isn’t because management is just hidebound. It isn’t because people are just lazy. It isn’t because people are afraid of new things. It’s because they’re trying to estimate how much risk they’re taking on and reacting based on that risk. Let’s say you’re working at a company with a craptacular process, right? It’s just awful. They’re changing code in production, and they got all of these problems. But they’ve been delivering software that way for the past five years. Well, folks, you shouldn’t be writing changes into production. You’re now proposing a change, and there is risk. There’s risk to making the change. There’s risk that it is the wrong change. And they have to now measure this against the process that they’re already doing, which, while it’s got its flaws, it works.

Alex: Okay. I’m starting to see this. I’m gonna rate that as a solid 6.5 out of 10 on the “It Made Me Excited About Learning About This Topic,” but what I feel is missing from the explanation is tying it back together to the absurd name.

Justin: So, Alex, I’m gonna cut straight to the point here. Um, you know, people really just drive fastest through the yellow lights anyway, so we’re really just trying to always live in the yellow lights. So, do you want your business to live on a red light, when everyone’s stopped, on a green light, when everyone’s just taking their time moseying around, or do you want to live on a yellow light, where everyone’s dashing through the intersection, trying not to die?

Alex: This is brilliant. No, I think YellowOps, YOLOPS, YoloOps – I still am not clear on what the term is, but you know what? As a manager, I generally don’t understand most of the terms you developers are throwing at me, so I like it. What I want to know is when is this gonna be the keynote speech at Abstractions, and how many developers do I send there to learn about this topic so we can implement it in our organization?

Justin: I mean, I still don’t really know what it is, but I am already selling consulting on it, so, um, I would say by the end of the month I will have a full conference on it, and you should send your entire team.
[ Laughter ]

Alex: You know, so it’s not quite traffic/driving related, but, you know, you might appreciate this thing. So, Remy, I don’t know if you’ve been to Japan. Justin, have you been to Japan before?

Justin: I have not.

Alex: Oh. Anyway, I strongly recommend it. Wonderful place. You know, everything you’ve seen about it, all the stereotypes, everything you’ve seen on TV – completely true. You know, I was out cycling the other day, and, you know, there’s, of course, railroads. You know railroad crossings where the little hand comes – not the hand. What the hell is that thing? A railroad crossing where the divider thing comes down and it’s like, “Oh, a train is coming.” I cycled up. The thing came down. “Oh, now it’s time to just take a quick break.” I lean my bike against the arm that’s sitting there. I notice a train is slowing down ahead of the intersection. Okay. Fine. “Oh, this train – Why is it slowing? I don’t get it.” So, then the train stops. Dude runs out of the train, in his uniform, right, apologizes to me, and then tells me to please take the bike off of the little arm, and then runs back to the train and starts it again. I – Mortified is not exactly a strong enough word. Traffic was lined up. I literally caused a train delay because I leaned my –

Remy: You made, like, 10,000 people late for work. I want to, first off, thank Justin for coming along with us on this little podcast adventure. Before we wrap up, you mentioned this community center.

Justin: Our events have gotten a bit too focused on lecture-style content over the past year, and I felt that there was a really strong need to make things a bit more social again, and what better way to do that than get space above a bar with 70 beers on tap? I’m really excited because it’s going to be something that we can really optimize for what we do. We can, you know, put a camera in the ceiling so we can have better live-streaming. We can keep programming books on hand, have lounges that are optimized for people showing off their code to some other people. You know, the permanency of it is just really its main advantage, and I’m really excited for being able to create this home. And, you know, during the day, we’re gonna actually rent out desk space to all the people that work remotely in the city and…

Alex: So, Justin, that sounds really interesting. So, basically, you know, if I had to sum up the Code & Supply space, right, it is like a co-working space, but primarily for coders, that happens to be above a really cool bar.

Justin: During the daytime.

Alex: During the daytime, of course.

Justin: During the daytime, yeah, yeah. But, you know, once it’s night, we’re gonna be this super awesome place for people to come learn for free with our community events.

Alex: Yeah, by and large, that sounds like a pretty interesting place. I mean, I’ve certainly seen the co-working spaces. I’ve certainly seen, you know, the companies that try to put on events here and there, but I really like the combination of the two. And, you know, based on all the stuff that you’re trying to do with getting this community built, I think it’s a step in the right direction.

Remy: I do want to give a shout-out to our sponsors – Atalasoft. Again, Atalasoft is sponsoring this podcast. They make an SDK for doing document management, document scanning, and things like that. You can go check them out. We’ve mentioned that this co-working space is above a bar. The bar in question is a Pittsburgh chain called the Sharp Edge. They specialize in Belgian beers. They have a huge draft list. We are not sponsored by Sharp Edge, but if they wanted to sponsor us by donating beer to Software on the Rocks, I would love that. I’m 100% in favor of that.

Justin: Or even just, you know, take a little bit off of my rent or something this month.

Remy: Well…

Alex: I would actually prefer the beer, to be perfectly honest.

Remy: Yeah.

Alex: Yeah, I think that would be a better system for all involved.

Automated Machine Transcription

Welcome to software on the rocks and a leader you to has brought you buy a possible.
So i guess what this is another part of gas we’re doing.
We are doing this again and you know that not only are we doing this again.
It’s but we have brought a friend this is room border at to the daily desert we’ve got alex and load every won’t.
So ready and we have with a just in reach so just in one it tells a little bit about yourself.
For me that to me through caused by which is an organization that i started to kind of foster strong software commanding here in pittsburgh he’ll sort of things to do.
So while kids by started because there were on onto.
The spread me no choice around the city and just holding the advanced there some really small ones that had great ideas and great people nepal.
But they are really small on it they were susceptible to one person failing to do some.
[BREATH] and then the whole commuting around a language but die in the cities i wanted to.
So stronger organization i’m in sponsorship me.
[UM] and paved to do really cool things and at risk.
So this is all hit surveys style expert local it sounds a pretty interesting idea.
You know along with hosting something like a the toilet months every month we have.
This options this share it was a very very large coffee and.
This was this so that was discovered this was as an attendee i know i just showed up this was an amazing calm rock and that.
And once what’s really amazing as we have a lot of people there but we are really folks.
They started creating connections between people and so the whole focus was getting.
For between one day desire to me the opposite community that development meaning to one thing but we ended up doing some really amazing things like.
Larry well the mineral for the first time ever meeting i’m showing the into her low.
Now just in his abstractions.
Not for profit this whole code and supply thing because this is like someone’s.
Before can child i mean how do you it sounds almost have.
[UM] then at a conference that that’s like on beyond how you have is something cross to take on view.
That’s kind of the reasons behind coins pie though is so that the risk is minimized a little bit by side.
Contracts with then use and things that would have fun actually reminded me of something that wrong.
But you to having to inspire as an organization at least protects me personally in a little bit and just interest to declare you know we use.
A huge financial risks and liabilities you know this is a thing with conference is that always amazes me right is that we’re talking like.
Hundreds of thousands of dollars white taken all that i ability for effectively a hot.
So to have a pretty good point is i mean [BREATH] two points on and i’d like to [SMACK] and make it my fault and that’s not quite but all the mind we’ve made so far it and reinvested into.
Our community so that a facts and find that we made and we signed up for a but on these for our communities and [COUGH] so that we can do have a place the whole.
But events for ink opportunity and most that’s i don’t making decisions based on how to make that can be more work.
Human because growth these kind of me scans for awesome is it’s incredible size the do really fantastic events to grow you’ve got to be welcoming and get all the people of.
Now just an actually in the midst of organizing my own conference here well i shouldn’t said my old it’s death upstages tokyo.
And this is one of the same issues that we’re facing is this whole notion.
And of being opened the welcoming the things that i see a or the disease.
And so i think the combating that feeling believers i’m is the of.
For the polyglot.
The community and that means a lot of language has so people make choices for different reasons and that this talk for the job mentality really goes along.
Coming and so just in what would you say so there’s this one kind of tribe of a leaders i see a failed grab.
The code samples from other people’s code bases usually offered by a disgruntled coworker and the post.
These code samples on a website they have this code sample of the day and they.
These these very critical code reviews i don’t know i feel that these people could be part of the problem.
I’m talking about the daily and know.
[SMACK] that’s the palm cast reducing to be.
The [BREATH] just cutting well i guess this is a point cast but themba my color deliriously [BREATH] well.
You know there are really is that the difference between you know this hobbyist.
So you know the stuff that you’re going to go now obviously it’ll be this eighty percent cape higher were things.
Very called that you’re doing by her for a hobby are trying to learn verses.
This is your job and your failing silk.
By that is that this you should not accepting money to do this when you working a company.
Of a certain site he can’t use these excuses.
I’ve seen shaming of open source code and that said.
Who never never rain.
I’ve seen production products.
From companies that are gigantic can have huge software teams on the really simple idea core cores.
The features to the product and i look becoming the because if fenix has a health.
The work that leads to for four page that is a problem.
That that’s actually get segue into one of the things that i wanted to bring up this make it was shocked everyone but i am a bit of a joint.
I heard and as a giant heard that does mean.
[SMACK] did detroit role play games of all the difference.
Sites and one of the groups i play with we meet weekly online using.
The third is called role twenty group twenty was a big kickstarter success story.
They want to build an online tabletop they did a picture or they the millions of dollars to do this and this is where kind of.
The wheel sort of come off because it is an incredibly small team from.
I understand and the team that they’ve built doesn’t really have the talent to do what they need to do just today they actually.
Get an announcement and this is partly a piece of good news.
People the new feature they call it quantum rowlands hulu does that can see they now utilize equals true random source of entropy but it’s the thing that goes both.
For to that an announcement that really got my attention is we’re talking about.
Things you don’t do and sort of signs of bad software quality and their announcement actually starts off quote rather than.
Relying on clients side pseudo random number generation client in this case being your web browser.
I’ll actually that’s that’s a nice system because.
Now what if you want to roll a national twenty had re want to roll fourteen this is perfect.
And i think that’s a good differentiate if this was just some hobby website.
An excuse it because it’s just you know they’re there fund little side thing and who cares right this is a little their shop and yeah i think this is absolutely.
Is where you should call them or not.
Absolutely that is i don’t think at all his leaders to call that.
You know what it is just crap software the moment he stood.
To take money for something [BREATH] case is the moment that someone has the right to start complaining about that they just and that’s a great point not just.
[UM] flu.
On sale rule wind is at a fire.
What’s the software equivalent of that those because you’re not going to and there’s no garage sail of software it’s that may be good old games rate.
I would say that i hope and so it’s kind of grow growth still song.
Well you can always go and start open source and built master.
You know so that’s a great point randy so it needs products we’ve open source all.
Over extensions but take your product how does not open source.
And there’s actually a very very good reason for.
That i don’t think is that obvious when we started there was no how there was no community coral we have everything inside of this ancients.
He was controlled to is called source years old source years old.
Really still today is marketed as a better replacement for source is.
And here i am but when i was not a ask that i was how does this compared to source it because it sounds like it.
[BREATH] as it is but better so well that’s not hard.
I know to be.
They’re really is a lot better can source safe.
That’s actually all we can say about that.
You know for what it was it’s fine but not just picture we’ve got this giant legacy of.
So we’re a small team what we do we spend.
Completely getting all the code outside of.
For hear it would be nice to do but in just.
Everything that we’re doing right now it works and that hasn’t been enough of a demand.
To you.
Ok i just saw safe to show how much.
And he so young so not eve oh my goodness the lines.
They were really happened when i was in high school so life.
As my last by [BREATH] thousand fourteen they had.
But you’re still lost.
Map in there are lost source saves migrated into.
And what worries teaching fact about me i probably one of the few people those been paid to do both coal.
And grubby so you know just talking about languages some of these like just never.
And coal outlive everyone listening to this spot gas hands down that’s a really scary thought but.
So this is my friend this really an interesting just.
Heart in an inch and coal is a surprising part of it.
A lot of this not one thing to changes.
Endemic in their culture because the change has nothing to do a driving business acquirers and that.
No raises segues is really into an interesting topic because one of the things there’s not just a cost of change.
And right there’s also a risk because that changed might fail.
Only it comes down to a unknown and unknown.
I’m work it’s it’s a significant risk and it would be awfully and if there was an easier way for us to identify sort of manage these sorts of risks and we.
Brought up at the end of our last episode that we want to talk about you know.
Risks management risk mitigation and how that impacts working in it in ways that i don’t think a lot of developers think about and we had some home.
Mark to come up with some buzzwords.
[UH] yell it looks and you’re little i go home.
Why are we talking [BREATH] she said you’re lol word.
I had no lol you go home.
Those are actually both really good because neither to make sense kind.
You won’t lee you know designs board [UH].
[UH] because the first time he said i am mostly but you said yellow ups and to is kind of excited about yellow because you know you think about.
What does it reminded you want to see right they want that dashboard with a stop way on it that’s.
Red yellow were green right yell alarm and we want to get out of the yellow and into the green how do we do that that’s what we need.
Well is that i think we may actually have a time.
And that could be yo when other yellow yellow.
The state fast enough doesn’t really matter that i really are going to me of the red yellow.
So green stoplight how could be work.
Joel going into into.
So so that yellow ops on put on your whole arms there are three circles in your little ops and turn out ways do.
Actually my gosh it’s this stop the world.
That i just made a little gone.
His ready please tell me more about what you up is or yellow ups and and how it you hoped my organs.
It’s so you know how you’ve got an organization with a legacy.
The product and they just can’t change it.
Bl or when there’s a new process that you could employed like say deaf ups and management just can’t get behind it you’ll go up.
From her stands that the reason these things happen isn’t because management is you as high bad.
This is because people are just all easy it is because people.
You’re afraid of new things it’s because they’re trying to estimate how much risk they’re taking on and reacting.
Based on that risk and let’s say you’re working at a company with a crap tack you’ll or process it’s just off.
People they are changing code and production and it got all of these problems but they’ve been delivering software that way for the past.
Five years well folks these should be right in changes into production you’re now propose.
You take a chain and there is rips there’s was to making the change there’s risk.
That it is the wrong change and they have to know measure.
[SMACK] this against the process and that they’re already doing which while it’s got it’s flaws it works ok i’m.
Learning to see this i think i’m going to rate that as a solid sixpoint fire about ten on the it made me excited about learning about this topic but what i feel is missing from the excellent.
Nation is time it back together to year certain name.
So how it’s on the can straight to the point here you know people.
Really just dr fast as through the elites anyway so we really just.
And to always live in the other leads so you want your business.
A live on a red light when everyone’s stopped on a green light when i was just take it in their time amazing around put one live on that a yellow late where it ones to actually through the intersection try and of today this is really now.
Yellow ops you’ll lots you as i still them not clear what the term as but you know as a manager i generally don’t understand in most of the terms you develop presenter and i get me so.
I like what i said what is is going to be the keynote speech at abstractions and.
How many developers do i send her to learn about this topic so we can incremental in our musician.
I mean i still don’t really know what it is but i’m already selling consulting on it so.
I would say by the end of the month i will help full conference on it and you should send your entire team.
No it’s not quite traffic.
Rising related but you might have.
We this things so sorry i don’t know if you’ve been the japan.
From the recommended wonderful place all everything you’ve seen about are all the serious.
[SMACK] everything you’ve seen on tv completely true you know i was out cycling the other day and you know.
Now there’s of course railroad gene of real with crossing that the little little hand comes at the hand of the hell’s i think but we’re element crossing where this.
The divider thing comes down is like a chinese coming.
Michael up the thinking down known now time to just take a quick great i leave might buy against the or that that’s sitting there.
I know this trained as rolling down the head of the.
Russian find this trained wise is swelling i don’t get it so then the prince stops do runs.
[SMACK] out of the train then you uniform i apologize is to me and then tells me to please take the by.
And off of the little arm runs to the train and starts in again i mortified.
Is not an artist drug worth traffic was lined up and literally cause a train dull because it you a.
As people later i want to first thank just.
And for for coming along with us on this little podcast of.
Nature before we wrap up to mention this community center.
Once have gotten to focused on let you style content over the past year and.
Now that there was a really strong need to make things a bit more.
Social again and better way to the then.
Kids space of a borrow with seventy peers on top i’m really excited because it’s going to something that we can.
And really optimize for what we do can.
And play.
I have the same one so we can have a better lives streaming we can keep.
Our booming books on hands have lounges that have been or optimized.
For people showing off their coat to some other people.
You know the prominent so that was just we’re really it’s a man advantage and.
Really excited for being able to create this has been during that.
They were going to actually when you’re in out for as space to all the people that work remotely in the city and so.
Just in the essentially the interesting so basically if the some of the code and supplies.
This space right it is a black coworking facebook primary for colors that happens to be above a really cool bar.
From the daytime [SMACK] showing the daytime.
Here but you know when once.
This like we’re going to be this super and place for people to come and learned for free from both are can you.
That [BREATH] that something.
On the interesting place of enough starting the seen the cotton spaces i certainly scenes.
You know the companies that try to put on events here and there but i really like the combination of the two and.
You know based on all the stuff that you’re trying to do with getting this community build i think it’s a step in the right direction.
How do you want to get to shed out to our sponsors a tablet soft again until a soft is sponsoring this podcasts.
They make a a for doing document management document scanning and things like that the them how we’ve mentioned.
This coworking spaces above labor the bar question is is a pittsburgh chain called the sharp as these special.
Lies in melting beers they have a huge tracked list we are not sponsored by a sharp edge but they wanted to sponsor us by dominating beer to software of the rocks.
I would love that [UH] hundred percent in favor of that.
For you ingesting take a little bit off my iran or something that’s found team.
We actually prefer appear to be perfectly on and i think that you’d better system for all would fall.
The british has been cloud [UH] uses for some give commonplace [UH].
The problem.

[Advertisement] Infrastructure as Code built from the start with first-class Windows functionality and an intuitive, visual user interface. Download Otter today!

Read all