Cross pollinating blurblog and thefempire.org
676 stories
·
37 followers

Saturday Morning Breakfast Cereal - Frigid

1 Comment and 16 Shares


Click here to go see the bonus panel!

Hovertext:
I want a Disney movie about a British princess circa 1776 having to deal with an overseas rebellion.


Today's News:
Read the whole story
srsly
22 days ago
reply
Hovertext: I want a Disney movie about a British princess circa 1776 having to deal with an overseas rebellion.
Atlanta, Georgia
acdha
21 days ago
reply
Washington, DC
Share this story
Delete

inspirational messages... for TEENS

2 Comments and 4 Shares
archive - contact - sexy exciting merchandise - search - about
June 25th, 2018next

June 25th, 2018: Portcon was great - thank you to everyone who came by! I ate: all the seafood and drank: all the Moxie.

– Ryan

Read the whole story
srsly
26 days ago
reply
Atlanta, Georgia
Share this story
Delete
2 public comments
jepler
25 days ago
reply
oh my
Earth, Sol system, Western spiral arm
daanzu_alt_text_bot
26 days ago
reply
[rss title] inspirational messages... for TEENS

[img title] sorry teens, and *star fox 64 voice* good luck

[mailto subject] imagine getting sad. for some sadpeeps, this is no mere hypothetical

A Hard SQL Error

1 Comment and 5 Shares

Prim Maze

Padma was the new guy on the team, and that sucked. When you're the new guy, but you're not new to the field, there's this maddening combination of factors that can make onboarding rough: a combination of not knowing the product well enough to be efficient, but knowing your craft well enough to expect efficiency. After all, if you're a new intern, you can throw back general-purpose tutorials and feel like you're learning new things at least. When you're a senior trying to make sense of your new company's dizzying array of under-documented products? The only way to get that knowledge is by dragging people who are already efficient away from what they're doing to ask.

By the start of week 2, however, Padma knew enough to get his hands dirty with some smaller bug-fixes. By the end of it, he'd begun browsing the company bug tracker looking for more work on his own. That's when he came across this bug report that seemed rather urgent:

Error: Can't connect to local MySQL server

It had been in the tracker for a month. That could mean a lot of things, all of them opaque when you're new enough not to know anyone. Was it impossible to reproduce? Was it one of those reports thrown in by someone who liked to tamper with their test environment and blame things breaking on the coders? Was their survey product just low priority enough that they hadn't gotten around to fixing it? Which client was this for?

It took Padma a few hours to dig into it enough to get to the root of the problem. The repository for their survey product was stored in their private github, one of dozens of repositories with opaque names. He found the codename of the product, "Santiago," by reading older tickets filed against the same product, before someone had renamed the tag to "Survey Deluxe." There was a branch for every client, an empty Master branch, and a Development branch as the default; he reached back out to the reporter for the name of the client so he could pull up their branch. Of course they had a "clientname" branch, a "clientname-new," and a "clientname3.0," but after comparing merge histories, he eventually discovered the production code: in a totally different branch, after they had merged two clients' environments together for a joint venture. Of course.

But finally, he had the problem reproduced in his local dev environment. After an hour of digging through folders, he found the responsible code:


<h2 id="survey">Surveys</h2>
        <div style="margin-left:10px;">
        <ul class="submenu">
                <li><a href="survey1.php">Survey #1</a></li>
                <li><a href="survey2.php">Survey #2</a><span style="color:red">Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)</span></li>
        </ul>
</div>

"But ... why?!" Padma growled at the screen.

"Oh, is that Santiago?" asked his neighbor, leaning over to see his screen. "Yeah, they requested a one-for-one conversion from their previous product. Warts and all. Seems they thought that was the name of the survey, and it was important that it be in red so they could find it easily enough."

Padma stared at the code in disbelief. After a long moment, he closed the editor and the browser, deleted the code from his hard drive, and closed the ticket "won't fix."

[Advertisement] Continuously monitor your servers for configuration changes, and report when there's configuration drift. Get started with Otter today!
Read the whole story
srsly
26 days ago
reply
;_;
Atlanta, Georgia
diannemharris
25 days ago
reply
Share this story
Delete

CodeSOD: A/F Testing

1 Comment

A/B testing is a strange beast, to me. I understand the motivations, but to me, it smacks of "I don't know what the requirements should be, so I'll just randomly show users different versions of my software until something 'sticks'". Still, it's a standard practice in modern UI design.

What isn't standard is this little blob of code sent to us anonymously. It was found in a bit of code responsible for A/B testing.

    var getModalGreen = function() {
      d = Math.random() * 100;
      if ((d -= 99.5) < 0) return 1;
      return 2;
    };

You might suspect that this code controls the color of a modal dialog on the page. You'd be wrong. It controls which state of the A/B test this run should use, which has nothing to do with the color green or modal dialogs. Perhaps it started that way, but it isn't used that way. Documentation in code can quickly become outdated as the code changes, and this apparently extends to self documenting code.

The key logic of this is that 0.5% of the time, we want to go down the 2 path. You or I might do a check like Math.random() < 0.005. Perhaps, for "clarity" we might multiply the values by 100, maybe. What we wouldn't do is subtract 99.5. What we definitely wouldn't do is subtract using the assignment operator.

You'll note that d isn't declared with a var or let keyword. JavaScript doesn't particularly care, but it does mean that if the containing scope declared a d variable, this would be touching that variable.

In fact, there did just so happen to be a global variable d, and many functions dropped values there, for no reason.

This A/B test gets a solid D-.

[Advertisement] Forget logs. Next time you're struggling to replicate error, crash and performance issues in your apps - Think Raygun! Installs in minutes. Learn more.
Read the whole story
srsly
47 days ago
reply
It's hard to guess the infrastructure from the snippet, but also: You Don't Show The User The Other Test On Refresh. This looks like it does.

At the very least you should keep the test consistent during the session. This can be done with Javascript, but that would involve persisting data between page loads, which is really the job of the backend.
Atlanta, Georgia
Share this story
Delete

What Biased Policing Can Do

10 Shares

It upended Matthew’s life — just because he was trying to see a movie while homeless and black

by Katie Wheeler


What Biased Policing Can Do was originally published in The Nib on Medium, where people are continuing the conversation by highlighting and responding to this story.

Read the whole story
Technicalleigh
46 days ago
reply
SF Bay area, CA (formerly ATL)
srsly
50 days ago
reply
Atlanta, Georgia
diannemharris
58 days ago
reply
sirshannon
58 days ago
reply
Share this story
Delete

Saturday Morning Breakfast Cereal - Coffee

1 Comment and 11 Shares


Click here to go see the bonus panel!

Hovertext:
I feel like I'm in a regular habit of straight-up insulting a majority of my readers.

New comic!
Today's News:
Read the whole story
popular
68 days ago
reply
srsly
68 days ago
reply
Atlanta, Georgia
Share this story
Delete
1 public comment
lrwrp
68 days ago
reply
How I feel about my wife's coffee habit.
??, NC
Next Page of Stories