Close
Glad You're Ready. Let's Get Started!

Let us know how we can contact you.

Thank you!

We'll respond shortly.

Mark Rushakoff

Posts By

LABS
Barriers to deterministic, reproducible zip files

Despite all my Google searching for an existing tool that would build an identical zip file every time for the same inputs, I came up empty-handed. I decided to dig as deep as necessary to figure out what prevents us from creating the same zip file every time for the same inputs.

Read more »

PIVOTAL CLOUD FOUNDRY
Domains and IP Addresses Reserved for Documentation – and Why You Should Use Them

Earlier in my programming days, my go-to example would have been foo.com. Well, not always. If we had any inside jokes on the team, I might put something clever in there for fun. On the Cloud Foundry backend team, one of our current inside jokes includes a picture of Bob Ross in the free space on one of our CI boards, so maybe in that case I would have gone with bobross.com or paintingclouds.com, just for fun, if I needed a fake URL for a test.

Read more »

LABS
git rebase vs. git merge: an agile perspective

At Pivotal Labs, we’ve been using Quandora for about 6 months as an easier way to archive and discover discussions about the hows and whys of consulting and software engineering here. Earlier this week, I asked my colleagues:

There are some git workflows that would have you regularly work in feature branches and then merge back into master only when the feature is ready for acceptance.

Read more »

LABS
An attitude shift as we approach production

I had the good fortune of attending a workshop about responding to production incidents, led by the folks behind Blackrock 3.  I plan to share, over several posts, what I learned with the community at-large and to apply what I learned within the Cloud Foundry team — we’re going live in the very near future, and we are taking incident management and response very seriously.

Read more »

LABS
Use fold to wrap long lines for an easier diff

We had two versions of a not-really-intended-to-be-human-readable file that were only slightly different, and we wanted to know how they were different. The lines were several hundred characters long, so when we diffed the files, we saw a basically useless output of

@@ -1 +1 @@ - bf659d7a2e0e45223095367c561526f8a10311459433adf322f2590a4987c423e55afe6e88abb09f0bee39549f1dfbbdfba99e39c0b70a7a656d07061ee113676f0d6db25d88c8034db6d9d8beec42daaaf8818273d9436fca8f442cdb6245c285c33638 + bf659d7a2e0e45223095367c561526f8a10311459433adf322f2590a4987c423e55afe6e88abb09f0bee39549f1dfbbdfba99e39c0b70a7a656d07061ee113676f0d6db25d88c8034db6d9d8beec42daaaf8818278d9436fca8f442cdb6245c285c33638

My usual trick of opening the file in Vim and using gq didn’t work because there was no whitespace in the string, and Vim (at least in my configuration) will only split on whitespace.

Read more »

LABS
Building identical gems

We ran into a problem where we were running `gem build` on identical input files and the built gems had different checksums; that is to say, if you run `gem build` twice in a row, the resulting `foobar.gem` files will not be identical.

Read more »

LABS
How to simultaneously display and capture the output of an external command in Ruby

There are many ways to run external commands in Ruby: surround with backticks, enclose in %x{}, call Kernel#system…

None of those approaches let you display the output of the command in real time while simultaneously capturing the output. Here’s a gist showing how to use IO.popen to capture output, display output, and check exit status:



Read more »

LABS
What happened to stdout on CI?

We were struggling for a bit yesterday trying to figure out why the few puts statements in our tests weren’t being displayed in Jenkins’ console output.

It turns out the ci_reporter gem that we were using (so that Jenkins could parse our test results) swallows stdout and stderr by default — unless you set the CI_CAPTURE environment variable to the string "off", like it tells you to do in the readme.

Read more »

LABS
Making life easier after your organization requires two-step authentication

My normal workflow at home used to be that I would use one session of Chrome for normal internet browsing with my personal accounts, and I would simultaneously use an incognito session for work email and other work-related accounts.  However, since Pivotal Labs is now requiring two-step authentication for our Google Accounts, this would mean that every time I open an incognito window to check my work email from home, I would have to wait for a text message on my phone and enter the code.

Read more »

LABS
Headphones in a pair programming environment

We strive to always pair program here at Pivotal, but occasionally there will be an odd number of people on a team and one person will not be pairing.  Sometimes, the solo developer will put on some headphones and listen to music while they code.  

Read more »