13 votes

Rubber Duck just saved me. What about you?

To put this into context: I'm still minor, in Europe, and I was hired into SW company as backend developer. I'm making about 2-3 times as much as my friends in fastfoods.

I'm basically making WS that would be unified wrapper for about 15 another WS - instead of crafting request for each of those, you will just call the API and it will do everything for you.

Everything was fine, until I encountered a nightmare: WSDL/SOAP protocol over HTTPS with need to use client certificate.

Full of false hope, I thought: "It'll be easy, I finished communication with another companies in few hours, this will be quick".

I was very wrong. I spent countless hours on this. I tried 3 programming languages and 4 different frameworks, copy-pasting solutions from stack overflow and wondering why does this still throw errors! I copied it from stack overflow! I used windows alongside linux and installed like 10 wsdl/soap clients from 2008 forums.

I created 8 or so SO questions, most about different language/framework, but the same problem.

Worth of mentoining, at the time, I could obtain wsdl and xsd of the WS with usage of two certificates (crt.pem and key.pem) over PHP. I tried to use PHP SoapClient, which accepted just one certificate file. I used .pem certificate that I received and should get the work done.

Then, I started writing the final question. Including PHP that downloaded wsdl and SoapClient that didn't work. Knowing someone will probably want to see certificates, I used cat key.pem cert.pem > certCombined.pem and diff certCombined.pem cert.pem. cert.pem was the certificate I received and should work. I expected no differences. When I saw two pages of differences, I started to suspect the cert I was given is wrong. So I pointed the PHP SoapClient to certCombined - and it started working!

This would have never happened (at least for several more hours) unless I known someone will want to see diff between working and not-working certificates. Thank you, rubber duck debugging! Next time I'll be solving something, I'll write on paper everything I use and know.

What are your stories?

1 comment

  1. Celeo
    Link
    Rubber duck debugging has saved me many times, both for debugging and for designing - breaking problems down into small pieces and putting aside assumptions is wonderful for figuring out code....

    Rubber duck debugging has saved me many times, both for debugging and for designing - breaking problems down into small pieces and putting aside assumptions is wonderful for figuring out code. Congrats on getting your stuff figured out!

    3 votes