Programming sucks: at its best

The only reason coders’ computers work better than non-coders’ computers is coders know computers are schizophrenic little children with auto-immune diseases and we don’t beat them when they’re bad.

Every single paragraph is amazing. This one cracked me up:

“Double you tee eff?” you say, and start hunting for the problem. You discover that one day, some idiot decided that since another idiot decided that 1/0 should equal infinity, they could just use that as a shorthand for “Infinity” when simplifying their code. Then a non-idiot rightly decided that this was idiotic, which is what the original idiot should have decided, but since he didn’t, the non-idiot decided to be a dick and make this a failing error in his new compiler. Then he decided he wasn’t going to tell anyone that this was an error, because he’s a dick, and now all your snowflakes are urine and you can’t even find the cat.

Management inside Automattic

Great article on how Automattic handles most of the managerial routines, and keep things running:

The great irony in this, of course, is Mullenweg himself. In the jazz ensemble, Mullenweg’s notes overrode everything. “I’m married to WordPress,” he told me. All the high-stakes decisions for all three organizations were made by him–and often low-stakes ones as well. Employees jokingly referred to the following common occurrence as “Matt bombing,”

Travis and Circle: test automation and reality of CI

Why u do this?
Why u do this?

I guess it’s time to do some sort of benchmarking and evaluation on test automation we started to use recently in the company.

*Captain Obvious mode on*

For those companies/developers that still haven’t figured out what’s test automation (front-end/back-end, TDD, BDD, etc) and continuous integration –  guys, you’re doing it wrong. Yeah, I know, I know that “everything works fine for us and there’s no need to waste more money for things we don’t use”.  By the end of the day it’s your time you’re spending on doing things we stopped doing at all focusing on more important things.

Here, I should’ve started explaining you that CI is a money saver in complex projects, when you can iterate faster with production systems increasing the responsiveness of your product/service. Setting up CI infrastructure and pipelining the project/task management is closing down the topic of “D-days” for the projects and all that pressure on the team once you release.

But, I’m pretty sure that you all know about that!

*Captain Obvious mode off*

Coming back to some basic comparisons on Travis and Circle, you won’t find in this post a massive judgement on what’s better. Working with WHMCS-API gem I’ve used Travis-CI for test automation.

Stating that Travis and Circle are interconnected with Coverall, GitHub, Zapier, Asana, and other great services – out of comparison list. It’s just there – live with it and be happy!

Speed performance fully depends on the type of tests you have and level of their complexity. Comparing Ruby gems we test on Circle and Travis – I’d recommend Travis – config file is few lines shorter. Comparing the list of supported languages, platforms – definitely Travis, but I guess it’s the matter of time when Circle gets there.

What was chosen for the next few quarters:

  1. Travis-CI remains for now a a service where we release our open-source projects to do the tests and CI in the company
  2. Technology we use is fully supported by both – thus services can be swapped any time.
  3. Task management is streamlined from “Task given” to “Task deployed, tests ran, check the diff and deploy once feel like it”.

Next time I’ll grumble about something less tech’y.

How bad is your Change Risk Anti-Pattern index?

Measures the C.R.A.P. (Change Risk Anti-Patterns) score. It is designed to analyze and predict the amount of effort, pain, and time required to maintain an existing body of code.

A method with a CRAP score over 30 is considered CRAPpy (i.e., unacceptableoffensive, etc.).

 C.R.A.P.(m) = comp(m)^2 * (1 – cov(m)/100)^3 + comp(m)

Where comp(m) is the cyclomatic complexity of method m, and cov(m) is the test code coverage provided by automated tests.

Slack: team communication

Slack: communication tools
Slack: communication tools

This is just a perfect example of B2B communication tools. Free to 8USD/mo+ is more than enough to setup a standard communication tool in a small company (i.e. startup, or SMB) just to cut the never ending story on xmpp/skype/email/etc.

And as any geek, they got me on “integration” section:

  • GitHub
  • Asana
  • Dropbox
  • Nagios

For those who’s got a missing bit of team communication in their shipping/communication chain for product delivery. This one’s for you folks!

Friday pint talks with fellow inhouse developers

X:- Hey, we’ve recently launched a cool piece of NDA in our proprietary NDA.
Y:- Sounds great. How did you manage to prototype it?
X:- Well, we took some NDA, with NDA, cuz the first one had some problems with caching, and with some NDA, we got this NDA to work!
Y:- Why did you use this NDA, when NDA we use in the company does NDA better, it’s more NDA, NDA and NDA that this!

Open-source helps people socialize! 😉

Basically, and obviously it’s about me

Recent post from Wynn made me cry, because I’ve realized that I haven’t been updating some of the API documentations for quiet some time!

Whether I’m working on docsguides, or books, Vim is my jam. In order to curb my use of these weasel words, I added some formatting rules to mydotfiles.

Forked, added. Doc files are sparkling with these parasite words.