CheckType parameters for processing XUnit test results

A Jenkins pipeline can publish XUnit test results as a step in a Jenkinsfile. Being unable to find any online documentation for the XUnitBuilder CheckType parameters, I dug into the code myself to find the answers.

Here’s a full XUnitBuilder stanza like that generated from the Jenkins Pipeline Snippet Generator (with the lines wrapped):

step([$class: 'XUnitBuilder',
     testTimeMargin: '3000',
     thresholdMode: 1,
     thresholds: [
       [$class: 'FailedThreshold',
         failureNewThreshold: '',
         failureThreshold: '',
         unstableNewThreshold: '',
         unstableThreshold: ''],
       [$class: 'SkippedThreshold',
         failureNewThreshold: '',
         failureThreshold: '',
         unstableNewThreshold: '',
         unstableThreshold: '']
     ],
     tools: [
       [$class: 'CheckType',
         deleteOutputFiles: false,
         failIfNotNew: false,
         pattern: '**/unittests.xml',
         skipNoTestFiles: false,
         stopProcessingIfError: true]
     ]
])

Here are the CheckType parameters and what they mean:

  • deleteOutputFiles – If true, the output files are deleted after being processed. If false they are left in-place. Default: false.
  • failIfNotNew – If true and files match the pattern but were not updated in the last build, the check fails. This helps ensure that all tests were run. Default: false.
  • pattern – File pattern that identifies XUnit-formatted output.
  • skipNoTestFiles – If true and no test files matching pattern are found, the check is skipped. If false and no tests are found the check fails. Default: false.
  • stopProcessingIfError – If true, any error (such as an empty result file) will stop any further processing. If false, errors will be reported but processing will continue. Default: true.

Note that you can get by with a much smaller step stanza by just including values that differ from the defaults, eg:

step([$class: 'XUnitBuilder',
     tools: [
       [$class: 'CheckType',
         pattern: '**/unittests.xml',
         skipNoTestFiles: true]
     ]
])

 

Becoming disconnected

I just got back from a much-needed vacation to Buenos Aires. Time with Jonobie (my wonderful friend and travel companion), sunshine, and new adventures were all in order. Also in order was becoming almost completely disconnected from my day-to-day life.

I removed Slack and my personal email account from my phone (work email is never accessed from my phone), the two most prevalent distractions from living in the now. I removed easy access to NPR and the New York Times from my phone’s home screen and succeeded in not looking at them once. I tried to limit my time on Facebook (already accessed only from the mobile web interface) to posting photos into our shared Argentina! album. Ditto Instagram. That was mostly, but not entirely, successful.

And you know, it was excellent.

I received a small handful of texts from people that I love and a few emails to my travel-only email account from the very few people that have the address. Through those and friends commenting on the Facebook and Instagram photos I felt somewhat connected with my tribe.

I didn’t feel overwhelmed by all the things piling up while I was away – things that likely don’t warrant worrying about anyway and none of which needed an immediate response from me (and they certainly didn’t get one!). I wasn’t tied to checking my personal email and Slack messages. I was free to live in the now, mostly guilt-free.

The challenge is to pull this level of disconnectedness into my daily life while still being connected to people. I’ve decided to stop having my personal email open at work. I’m going to squash all kinds of Slack notifications, perhaps not even reinstalling it on my phone. I’m going to continue ramping down reading the news to mitigate the stress that results from reading about the shit-show that is our new president.

That said, how can I retain connectivity with my tribe? More game nights? More lunches with friends? More texts? More old-school long-form emails? Therein lies the real challenge: how to stay connected to people and yet disconnected from the electronic distractions.

Your tech resume needs help

After slogging through yet another dozen resumes for my two open SDET positions, it’s clear techies need help writing better resumes that convey their expertise and differentiate them from others.

Tweaking a resume

One of my resume tips for folks applying for SDET jobs was to make friends with a technical writer and offer to take them out to lunch in exchange for looking over your resume.1 Having a wordsmith look over your resume with a critical eye is great for tightening up wording, ensuring consistency in tone and verb tenses, and just making sure that the whole thing is coherent to another technically-inclined individual who isn’t you. That advice is just as true now as it was 6 months ago.

But while technical writers are miracle workers when it comes to translating obtuse technical details into prose for the masses, it’s unreasonable to ask one to essentially rewrite your resume from scratch in exchange for lunch. And based on many of the resumes that I’ve been seeing over the past four months, many techie resumes need a rewrite, not just a tweak.

Resume rewrites

In cases where you need more help than just some tweaks, I encourage you to hire a professional resume writer. A resume writer will sit down with you to learn about your technical expertise and accomplishments, then help convey that information on your resume. They can often help strengthen your LinkedIn profile as well, something that I and other hiring managers often look at.

Good resume writers aren’t cheap. It costs anywhere from $500 to $1000 to work with a resume writer, but depending on the state of your resume that could be money very well spent. Given that tech salaries easily run into six digits a year, spending <1% of one year’s salary on an investment in your career should be a no-brainer.

IT Resume Service

Frustrated with the quality of the resumes I’ve been getting as a hiring manager, I did some research to see if there were resume writers specifically for techies. Surely someone was capitalizing on this fertile field of poor tech resumes. And there are!

After reviewing several websites I ran across Jennifer Hay‘s IT Resume Service. I was impressed with her overall approach, list of sample resumes, and articles. After a few emails and a phone conversation with her I feel very comfortable recommending her services.2 We’re even discussing possible future collaborations on articles and other collateral to help tech folks write better resumes.

Contact her to discuss leveling-up your resume.

Even if you don’t use Jennifer, I strongly encourage you to take an honest look at your resume and consider if it could benefit from the expertise of a professional resume writer.

Do it for yourself, but also do it for me and every other hiring manager out there.


1 I also said that technical writers are amazing people and knowing them will enrich your career and your life. That’s still true. I’m good friends with 6 tech writers, or former tech writers, and you simply can’t find better people. Some of them even agree with me on the Oxford comma.

2 I’m not getting any financial compensation from her whatsoever. I just selfishly want to start getting better resumes.

Body-image struggles

I’ve always struggled with body-image issues and been unhappy with how I looked. It’s only been in the past decade that I’ve had moments, rare but wonderful moments, when I liked what I saw in the mirror or in a photo. Despite quickly approaching 40, those moments are occurring more frequently now.

I’ve worked on this blog post off and on for many months now, unsure of how to approach the topic. It wasn’t until I read my friend Scott McGlothlen’s post Posing Naked: The Good Kind of Awkward (link is safe for work) that I realized what I needed to do was just be honest and vulnerable.

It starts early and follows us forever

Like many of us, my body-image issues started very young. I remember in middle school my dad took my brother and I to an after-school basketball program. I had so much shame taking my shirt off for the “skins” team that I refused to go back after the first night. I’m uncertain my Dad had any idea the real reason why I refused to go back, but to his credit he didn’t force me.

I am very fortunate that I didn’t grow up in a hyper-masculine household. I was never shamed by my family for how I looked, yet shame I had nonetheless.

In college I once went on a bike ride without a shirt and was ridiculed waiting at a stop sign by guys in a pickup truck telling me to stop embarrassing myself and put a shirt on.

In 2012 while I was riding a bus to work someone took a photo of me, posted it on Facebook, and their friends proceeded to comment on how disproportionate I looked.

Neither of those incidents did anything to make me feel better about how I looked.

Physical and mental workouts

Over the years I’ve put a lot of effort into how I look and how I think about myself.

Shortly after I started working for IBM in 2000 I got a gym membership and began working out in the mornings before work. Every workday lifting weights or running. 16 years later and I still go to the gym every weekday morning before work. On the weekends I run with friends and sometimes run half-marathons.

I have undoubtably made progress on how I look physically, progress I am very happy about. I have also made noticeable strides in how I feel about myself and that’s the progress that I’m happiest with. I’ve finally accepted that I will never look like the models we’re marketed with and that’s OK. I don’t always love what I see in the mirror, but I am at least content with the image I see. That’s huge strides from two decades ago.

Take more, not fewer, pictures

Because of my body-image issues, I’ve almost always hated pictures of myself. My mental critiques run something like:

That photo has the profile of the nose that I hate.

I’m smiling like a dork in that one.

Oh god, all you can see is how skinny I am.

Yet in some ways pictures are one of the best things to show us that we change over time. That those hours at the gym are actually doing something, something we don’t see day-to-day in the mirror. That concerted effort of eating better really has shrunk those love-handles. That maybe, just maybe, we’ve grown into that nose that we hate1.

Pictures provide a great opportunity for some mental growth too although posting them on social media is a double-edged sword. It’s hard being vulnerable, and strangers can be real assholes sometimes, but nothing gives you a shot of confidence than having friends like and comment on a picture of you.

If the social-media hive-mind thinks I look good, maybe I do.

Maybe the internal record I play for myself is a broken reflection of the reality, a reality that others see differently.

Recently a friend who dislikes pictures of herself showed me a photo of her taken at a work party that she adored. In the photo she is beaming and beautiful — just as she appears to me every time we’re together. In that photo she was finally able to see what the rest of see daily.

Maybe we need to take more pictures of ourselves to finally capture those moments for us that others see all the time.

Photoshoot

For my birthday in 2016 I gave myself a rather interesting birthday present: a photoshoot. Those moments when I liked what I see in the mirror had come more frequently and I wanted to memorialize it, for fear it might never happen again.

I asked my friend and photographer Ryan Pennington if he were willing, and he agreed. I knew Ryan would make me feel at ease and that at the end of the process if I didn’t like any of the photos, he would know it was due to my own issues and not his skills as a photographer.

Sometime during the middle of the shoot Ryan took a picture and showed me the camera. Without really thinking I exclaimed: “Damn, he’s hot. Oh wait that’s me!“. That’s the sign of a good photographer, folks.

The shoot was 7 hours and produced 800 photos. That set got culled to a final set of 70 that I love. Let me say that again a little louder: I have 70 photos of me that I love. I didn’t think I would ever be able to say that.

I shared several of them with friends on Facebook and guess what: they loved them too. My friend Jason Silzer commented on a photo with this pearl of wisdom that I am still trying to integrate into my reality:

Now you see what we all already see.

That’s so incredibly hard to believe, but I keep trying.

All of us struggle

Why am I writing all of this? My hope, my vain hope, is that knowing I have body-image issues helps someone else realize that they are not alone in theirs. That everyone has body-image issues. Old, young, men, women, boys, girls, straight, gay, cis, trans.

That good looking guy walking down the street? He probably has some body-image issues. And that cute girl always posting pictures of herself on Facebook may be dealing with some of the same self-esteem issues you are. We always present our best selves to the world, particularly on social media, but that doesn’t mean we alway believe the image we’re presenting.

It’s incredibly hard, but I encourage you to try and see yourself as others see you. None of us are as ugly as we think.


1 Ok, that will never happen.

DP code release with modern PHP goodness

Today I’m proud to announce a new release of the software that runs pgdp.net: R201701. The last release was a year ago and I’m trying to hold us to a yearly release cadence (compared to the 9 years in the last one).

This version contains a slew of small bug fixes and enhancements. The most notable two changes that I want to highlight are support for PHP versions > 5.3 and the new Format Preview feature.

This is the first DP release to not depend on PHP’s Magic Quotes allowing the code to run on PHP versions > 5.3 up to, but not including, PHP 7.x. This means that the DP code can run on modern operating systems such as Ubuntu 14.041 and RHEL/CentOS 7. This is a behind-the-scenes change that end users should never notice.

The most exciting user-visible change in this release is the new Format Preview functionality that assists proofreaders in formatting rounds. The new tool renders formatting via a simple toggle allowing the user to see what the formatted page would look like and alerting if it detects markup problems.

What’s next for the DP code base? We have a smattering of smaller changes coming in over the next few months. The biggest change on the horizon is moving from the deprecated mysql extension to mysqli, which will allow the code to run on PHP 7.x, and moving to phpBB 3.2.

Many thanks to all of the DP volunteers who made this release possible, including developers, squirrels, and the multitude of people who assisted in testing!


1 Ubuntu 16.04 uses PHP 7.0, but can be configured to use PHP 5.6.

#WhyIMarch: For visibility

Saturday, the day after Trump’s inauguration, I am joining the Women’s March in Seattle, a sister march to the one happening in Washington, DC. I am marching for visibility. Visibility for myself, my partner, my female friends, my friends of color, my LGBT friends, my Muslim friends, and others.

I have zero confidence that the incoming administration seeks to represent or benefit anyone who isn’t an affluent old white straight cis male. Look at how Trump’s top 4 cabinet positions are all white males, the first time in 28 years. Or how all of his cabinet is anti-LGBT. Or his intent to deport illegal immigrants and build a wall between the US and Mexico. Or create a Muslim registry here in the US. Or how he personally treats women, as exhibited by his treatment of Fox news anchor Megyn Kelly and his comment to “grab them by the pussy”.

I hate to break it to Trump, but straight cis white males are in the minority in this country. Hell, males alone are in the minority in this country.1

So I’m marching to make sure Trump and the rest of his administration know that we are here and we are not going away. We will stand up for each other and actively resist any efforts to erode our civil liberties. We are angry and we are motivated.

March with me.

Not in Seattle or Washington DC: find a march near you.


1 In 2010, 50.8% of the people in the US were women according to the census.

Death to magic quotes

Magic quotes is a misguided feature of PHP that modifies user input to PHP pages so that the input can be used directly in SQL statements. This violates the programing principle of only escaping data when it is necessary and results in all kinds of weird edge cases.

This feature was deemed so misguided that it was deprecated in PHP 5.3 and removed entirely from PHP 5.4. The DP code base has relied on magic quotes to function from the beginning of the project in 2000.

I’m very happy to report that after much development and validation effort, we’ve removed the dependency on magic quotes from the DP code base! The work was done over the course of a year, primarily by myself with help from jmdyck, and validated by a team of squirrels (shout-out to wfarrell and srjfoo) and other volunteers. It was rolled out in production on November 5th and has been almost 100% bug-free – quite an accomplishment given how much of the code was impacted. A huge thank you to the team who helped make this possible!

The biggest win is our ability to run the DP code on much more recent versions of PHP all the way up to, and including 5.6.1

RIP magic quotes.


1 It won’t work on PHP 7.0 or later because the code still relies on the deprecated mysql extension, although I fixed that on a branch last night!