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!

Doing Good

Daniel and I have serious concerns about the incoming administration’s attitude and commitment to the environment and the rights of anyone who isn’t an old straight white guy. While we may not be doing well, we can at least do good.

We sat down and made a list of organizations that were tackling issues and supporting groups near and dear to our hearts. We focused on organizations that support women, LGBT, people of color, and immigrants, both locally and nationally. We ended up with a rather large list of organizations we wanted to support at the end of 2016 but not enough money to support them all like we wanted. Instead of giving everyone a medium amount of money, we gave big to a few organizations and gave small to the rest.

Primary organizations

We gave big to these organizations, wanting to focus locally and in areas that directly affect our LGBT community and women.

Local

National

Secondary organizations

These aren’t any less important than the others, but we feel it’s more effective to give larger donations and there was only so much money to go around. We believe in the work these groups are doing and wanted to let them know they have our support.

Local

National

Where are you doing good?

What organizations are near and dear to your heart? What groups are you supporting?

Casey’s 2016 Mix CD

This year saw the end of my 9-month sabbatical, changing jobs to a new company, and then the disaster that was the election. It was also a great year for music with new albums from Norah Jones and Michael Buble.

Throughout the year I throw music, both new and old, into a playlist as the mood strikes me. In November I take a week paring the set down and carefully crafting the order. This year the end of the CD crafted itself.

Thanks to the power of Google, if you subscribe to Google Music service you can listen to it directly.

  1. Not Upset – Dario Marianelli
  2. One Day I’ll Fly Away – Nicole Kidman
  3. Lost – Michael Buble
  4. Everything – Michael Buble
  5. You Can’t Always Get What You Want – Glee Cast
  6. Satellite – Dave Matthews Band
  7. Shiftwork – Kenny Chesney
  8. I Love A Rainy Night – Eddie Rabbitt
  9. Hold On – Wilson Phillips
  10. Can’t Stop the Feeling – Justin Timberlake
  11. Someday – Michael Buble & Meghan Trainor
  12. I Believe in You – Michael Buble
  13. Hello – Adele
  14. Day Breaks – Norah Jones
  15. Jean Arrives – Dario Marianelli
  16. My Dear Country – Norah Jones
  17. Over My Dead Body – Dario Marianelli
  18. Brave – Sara Bareilles

Daniel and I have decided that Brave will be our theme song for 2016:

Innocence, your history of silence
Won’t do you any good
Did you think it would?
Let your words be anything but empty
Why don’t you tell them the truth?

Say what you wanna say
And let the words fall out
Honestly I wanna see you be brave
― Sara Bareilles, Brave

Pumpkin Pie

Nothing says fall to me like the smell of a pumpkin pie baking in the oven. Honestly, given how ridiculously easy it is to make one of them, I can’t imagine why anyone would buy one in a store.

This recipe is the one my Mom has used for decades. I’ve no idea where it came from so I’m unable to give proper attribution. For all I know it could be from the back of a can of pumpkin! Regardless, it’s delicious.

Pumpkin Pie

  • 12oz can pumpkin
  • 1c milk
  • 2 eggs, beaten
  • 1c light brown sugar
  • 1t salt
  • 2t cinnamon
  • ½t ginger
  • ½t allspice
  • ¼t cloves

Combine all ingredients and mix well. Pour into pie crust1. Bake at 425 degrees for 15 minutes, then reduce temperature to 350 degrees for another 45 minutes. Pie is done when a knife in the center comes out clean.

Tip: To prevent the pie crust from getting overly-browned, I use a silicon pie crust protector for the last 30 minutes.

Substitutions

Milk: The original recipe calls for a can of evaporated milk, but I used regular milk for years without issue and I’m much more likely to have that in the house. I’ve used unsweetened almond milk with success for the past few years as well.

Brown sugar: The original recipe assumes you’re using light brown sugar. I’ve found that dark brown sugar also works superbly and gives a much richer taste.


1 I make my own pie crust in the food processor using a recipe from my Mom. There are tons of them online and if you have a food processor and a rolling pin, there’s no reason you shouldn’t make the pie crust too!

SDETs in Space!

I’m having a heck of a time finding, much less hiring, SDETs to fill my open Ground Systems and Platforms SDET positions. My gut tells me that the job descriptions just aren’t exciting enough to get people’s attention. What does a “Ground Systems SDET” do? What “Platform”?

Lets see if I can’t explain them a bit better.

Talk-To-A-Satellite SDET

Ground systems refer to all of the hardware and software components here on the ground that work together to talk to a satellite in orbit. That’s everything from the software the satellite operators use to issue high-level commands, to the systems that relay that information to our ground stations around the world, to the services on the ground station that control and task the radio chain, to the services that move the antennas, to the entire telemetry pipeline back to the missions operations center allowing the operators to know the health of the satellite and ground system components.

Everything that goes to the satellite or comes from it goes through our ground systems. These systems have to work reliably to support our growing constellation.

Making sure they all work together is where the Ground Systems SDET comes in. You’re the first line of defense in making sure that all the awesome code our devs are slinging actually cling together and make a functional system. You get to play with our satellite-on-the-table (aka: Flatsat) in our staging environment to make sure what is being built works, and then see that be deployed to our production systems and task Pathfinder-1 (and soon Pathfinder-2!) in space.

If that sounds interesting and you either live or are willing to relocate to Seattle, WA, take a look at the Ground Systems SDET position and toss me your resume!

Satellite-Picture-Selling SDET

We’ve taken all of these pictures of the Earth from space, how do we sell them to people? Well, you need an intuitive interface for customers to see all of the images you have in your catalog, buy them, and task new pictures to be taken. That’s our Platform that ends up tasking the satellites in space through our ground systems.

There are a lot of factors in play when you start talking about satellite imagery. How cloudy was it when the picture was taken? What angle was the picture taken at? Where, exactly, was the picture and how does it map onto the earth? When was it taken? Is the customer allowed to see an image over this country?

And you can’t just show them a grid view of the images. You need to place those images onto an interface that makes sense, such as a map of the Earth, and oriented such that they align up correctly.

The interface needs to scale with the ever-growing number of users as well as the ever-growing number of images in the catalog. It also needs to have good access time to our customers around the globe while maintaining security restrictions on what geographies have access to what images.

Making sure all of this works is the role of the Platform SDET. As the devs craft javascript and RESTful backend code at a break-neck speed, you’re the one that ensures cohesion and functionality. Oh sure, their new gee-whiz feature looks great in demos, but how does it scale? What did they break adding that new feature? You’re one of the first to see new images from the satellite as they make their way into our catalog and enable customers to fully realize the power of our satellite constellation.

Interested? If you live in the Herndon, VA area or are willing to relocate, take a look at our Platform SDET position and apply!