Using Stratopan To Build ... Stratopan

Stratopan is a slick new service for hosting custom CPAN-like repositories in the cloud. I've been doing all the development work for Stratopan on my laptop computer. But the other day, I decided to try running it on the Linode server I rent.

Stratopan-Screen-Shot.png

So I logged in to the (nearly pristine) server, fired up cpanm to install all the prerequisite modules, and launched the application. Lo and behold, it was broken! Read on to find out how Stratopan actually saved me from hours of debugging pain...

The problem wasn't an obvious one, like a failed unit test, or missing module, or even a logic error. It was much more subtle -- the kind of thing that could take a long time to diagnose. But the same code worked just fine on my laptop. So what could be the problem?

Then I realized my mistake. When I installed all the prerequisite modules on the server, I had used the latest versions from CPAN, and those were definitely not the same versions I had on my laptop.

I've been working on Stratopan for months, progressively adding CPAN modules on my laptop the whole time. There were dozens of modules on the server that differed from my laptop. Figuring out which module (or combination of modules) had caused the problem could take hours. I had absolutely no desire to go down that rat hole.

Fortunately, I remembered that I still had an early version of the Stratopan site running somewhere. And on that site, I had built a custom repository containing all the modules I was using to develop Stratopan on my laptop.

So I went back to the server and rebuilt my application. But this time, I configured cpanm to fetch modules from the repository on the old Stratopan site. Voilà! I now had exactly the same modules on the server that I had on my laptop. And guess what? The problem was gone!

Does this problem sound familiar to you at all? There is still time to sign up for the private beta at Stratopan.com ;-)

13 Comments

This is often the sign that you've done it correctly, and I love that feeling when I realize that the thing I built solves unforeseen problems easily. :)

That picture makes it look like you're running Stratopan on an iPad (or some tablet). Now I'm imagining an app that does all of this for you from your phone. I know you have plenty of other things on the ToDo list right now.

Jeff, your behavior is outrageous.

Figuring out which module (or combination of modules) had caused the problem could take hours. I had absolutely no desire to go down that rat hole.

Stratopan, while not a service for the community, is something that the community partially fucking funded. Flat out refusing to participate in fixing Stratopan's dependency chain, refusing to even diagnose the problems and file tickets - this is disgusting.

Peter, you seem to be overreacting.

He noted that in this specific incident he did not want to start debugging the situation. That's fair.

He doesn't owe the community to sit and sift through an unknown number of modules to find which problem exists in which version of which modules causing what side-effect every time he works on a project, even if that project is partly-funded by the community.

He doesn't owe the community to sit and sift through an unknown number of modules to find which problem exists in which version of which modules causing what side-effect every time he works on a project, even if that project is partly-funded by the community.

Actually... in this case I have exactly these expectations: Jeff does owe the community some amount of effort. It is not a question of licensing or even not that much of social contract. It is a moral question, and my opinion is very personal. I just wanted to express how I feel about the remark I originally quoted, I do not intend to argue my personal values further.

Cheers

I also would more expect like "hey, I know exactly what is the problem, but for the sake of showing that the concept works, I did tried todo it with StratoPAN so that I prove that it works"..... but whatever ;)

I hope you write up some bug reports about the stuff that failed for you, cause that is what the community expect..... Just... my 2 cent...

He wanted to run it on a server (for a reason probably), encountered problems, and did the most professional thing that can be done in such a situation to continue on what ever he was working before.

Since it is a nice story to tell, he told it here.

Directly running after every bug which you can also avoid for the moment is just not professional and IMHO one of the main reasons for spaghetti-whatever in the end.

So I really don't see the point of freaking out here. No one ever said this bug will be left a side for ever.

Btw: I'm also paying some of his time on this work, and I totally agree with this style of working.

Take a look at Getty's reply, please. You'll notice that although he is well known for being... let's say "abrasive", he still nailed it. He basically said "you could have phrased it differently" and added "and I hope that eventually you will indeed issue bug reports for the problems you found". I think we could all agree on that (whether we see a problem with the original phrasing or not).

Like I said, Getty nailed it.

I never said he "phrased" it differently, I thing he DID it differently, exactly like he said. So i'm not impressed that a Perl Expert is saying "he needs several hours" to fix a problem that is based on module versions, that is just unrealistic. I want to see the case, else I just expect him to be... like not really fully knowing what he does... but as said, just my 2 cents, just from Perl professional to "Perl professional".

Aaand... you ruined it, Getty. :)

Holy crap.

Everyone who has a problem because someone else isn't doing things the way you want them to be done need to STFU and go do something productive with your lives.

Peter Rabbitson, you are being a first-class asshole, in the Team America sense: shitting all over everything. On behalf of people who are not batshit-insane: go away.

Jeff got funded to build something he promised the community. If afterwards said community cannot install it from CPAN because the combination of its dependencies broke, and he just shrugs with a “well it works on my laptop so whatever”, then I would indeed find that outrageous and would be puzzled at anyone who didn’t. This would not be about disagreeing with the way that someone else is doing things, it would be disagreeing about whether they fulfilled their obligations – a different matter entirely.

However, this isn’t what has happened here quite yet, is it? I am only seeing an “I found a way to ignore a problem so I can keep going for now”. If that is indeed what is going on, and as long as does make good on his promise, then I see no reason to rake him over the coals for it just yet.

Jeff was funded through a Crowdtilt campaign and a TPF grant to implement particular features in Pinto. That has nothing to do with anything Jeff is talking about here.

In fact, the particular problem the Crowdtilt campaign funded is the solution to this problem: If you can specify version ranges of acceptable modules, you can limit your exposure to the moving target of CPAN code.

That way, you don't have to interrupt your work to ensure that the stuff you have now works on everything that was released to CPAN in the last day. If we did that every time we made a commit, nothing would ever get done.

Leave a comment

About Jeffrey Ryan Thalhammer

user-pic Hacker, speaker, author, dad.