Fix: Single File Tests Break in Netbeans 11.0 / PHPUnit 8.2

TL/DR: There’s a one line patch to PHPUnit below that will kludge the kludge and get you running again.

Anyone who has worked with PHPUnit for some time knows that backwards compatibility isn’t exactly a prime consideration. Meanwhile, although Netbeans currently has very good support for PHP, you have to figure that the intersection set between the Java developers working on the project and the people who figure that PHP is anything but a toy language for building simple projects is, well… small. [We’ll just ignore the fact that Facebook, the largest application on the planet, is written in PHP].

So when Netbeans says it offers support for PHPUnit 3.4.0 or higher, it’s okay to expect the integration to be out of date. Rather surprisingly, it’s actually worked right up to PHPUnit 8.1.

But now we have 8.2. Command line parsing has been made more robust, and the extra parameter Netbeans passes in to a kludged custom test when running a single file doesn’t work anymore. [BTW I don’t blame the Netbeans developers for this kludge, it was probably the only solution that worked back in 3.4.0.]

This makes the current Netbeans approach outdated and unworkable. Like many open source projects, this means someone who cares has to go in and do some significant re-work. Don’t hold your breath. I’d give it a go but my Java foo is about 20 years old now. I probably don’t know enough anymore to even be dangerous. I think I know a good architectural approach but attempting to implement it would be a recipe for failure.

So what to do? Patch PHPUnit! This is a pain since the patch will have to be reapplied every time PHPUnit is updated, which is frequently. But at least it works.

So here’s the kludge: in the file TextUI/Command.php in the handleArguments array, just change the line that reads

if (isset($this->options[1][1])) {

to

if (isset($this->options[1][1]) && substr($this->options[1][1], 0, 6) != '--run=') {

This ignores the Netbeans-generated argument and everything works as before. Not pretty but it works.

For more information (and a possible fix), follow the Netbeans Issue.

The Blog is Ported (again). Hello WordPress.

Welcome to the third major iteration of It’s Fixed in the Next Release. From Blogger (yuck) to Serendipity (which truly deserves more attention than it gets) to WordPress (market share wins, even in the open source world) here we are.

Speaking of open source, what you see here is only possible because of the FOSS (Free Open Source Software) model. Not only is the core of WordPress completely open, most of the themes, plugins, and tools are as well.

Independent of the cost, FOSS made this blog because the theme is a hybrid. The base theme is the free version of “Blogolife”. I’ve made some changes to it, both in terms of some invisible code rework, and by hacking in the tag display from “AskIt”, a commercial template I purchased for a project that died. At first I thought AskIt was going to do the trick, but in the end I just didn’t like the main page layout. Blogolife had the clean traditional blog feel but the display of tags and categories wasn’t all that great (I haven’t done anything to the categories yet).

I also removed all of Blogolife’s admin links and promotions for the “PRO” version. Needless to say I wasn’t likely to be buying that anyway.

It’s interesting hacking on WordPress code, and it’s a classic comparison between simplicity and power. I think it’s possible to keep most of the WordPress API in your head, and its possible to be a true expert on it in a year or so. Meanwhile, I’ve been working with Joomla for almost six years now, and it seems I keep on discovering new tricks, not including the outside-the-core stuff like template frameworks and the like. So there’s a freedom in WordPress that makes it possible to hack bits of two themes together in a few days and get something that works. But at the same time I feel like I’m working in a small shop with hand tools. By comparison Joomla feels like a manufacturing line full of robots — configure each one to do a job then watch the whole facility in action.

Each environment has its place. It’s actually more personally satisfying to feel you’ve built something by hand. WordPress certainly rocks the blogging / simple site space, but it has its limitations. Over in the Joomla development world we wrestle with issues like how to make it so those “robots” of ours plug into each other most effectively and with a minimum of code duplication. While we’re making it easier to plug things together I think we’d also be wise to keep an eye on offering freedom to site builders who need to produce a custom solution but only know the basics of PHP development. We never want to be in the position where someone says “Joomla is a great platform but you need a team of developers to build and run a site.”

After all, market share wins, even in the open source world.

WYSIWYG? WYSIKSWYGBNQ!

I Twittered this but it deserves more permanence. I’ve been using it for years and unfortunately it still summarizes my frustration with browser based Javascript “WYSIWYG” text editors:

WYSIKSWYGBNQ = What You See Is Kinda Sorta What You Get But Not Quite.

On Development Teams

Earlier today Amy Stephen and I had an interesting discussion on development teams, I thought it worth organizing and preserving. Because it’s a bit of a threaded conversation it takes a little work to follow the flow, but there’s no easy way to sort it out.

One of the most interesting things here is that even though I tend to take a bit of a hard-ass “no prisoners” approach to the problem, and Amy is fairly close to my polar opposite, we actually look at the fundamental problem in nearly the same way.

AmyStephen Wondering about the market potential of the promise of a 1 day workshop that can turn a dysfunctional group into a high performance team. It’s puzzling to watch a dysfunctional group where members keep barriers to entry high and engage in intense, private battles within.
FxNxRl Lets see… the seminar starts with a real-time attitude and teamwork survey, then lists who should be retained and who fired.
AmyStephen That might do it – if management would so empower. Typically, you’ll find spineless leadership behind dysfunction.
FxNxRl Indeed. I have done consulting assignments where I had to tell the person who hired me that they were the main problem. Awkward.
AmyStephen So, how would you sort out the understandably frustrated’s from those who might be, shall we say, squelching innovation?
FxNxRl Most of the time it’s pretty easy to tell one from the other by simply talking to them face to face.
AmyStephen I used to think that I could tell quickly but now I am doubting my early instincts. It’s a bit unsettling, in fact. I can’t tell.
FxNxRl What’s difficult is to unmask the passive-aggressive ones. Usually high-value team members who kill things by “contributing”.
FxNxRl It is impossible to tell when there’s distance involved, and it can be difficult in person too.
FxNxRl I once managed a team where I had to use source code control metrics to track project progress. Every time a project was really doing well, the lead developer would step in to “help” and the project would nearly stop. There was no way to fire him…
AmyStephen Yes, it’s tricky when the one causing the problem has a great deal of authority. You have to control the process to figure it out.
AmyStephen Source code control can be a great tool for lots of challenges simply because people who are traumatized can see justice/hope
AmyStephen That is, provided they can commit to it, of course. Otherwise, it’s just another situation where they have to face this barrier.
FxNxRl Yup, and it’s hard data in an environment where everyone has some emotional involvement no matter how hard they try not to.
FxNxRl Development without revision control is art, not engineering.
FxNxRl The very first thing is to put proven development methodologies in place. If there’s strong resistance, fire the dissidents.
AmyStephen lol – I definitely do not agree, but I understand. Many times, your skeptics are simply people who think for themselves.
AmyStephen In fact, you can bag anyone who’s onboard with change too quickly. Everyone should resist process changes if they are moving forward.
FxNxRl I realized, at about age 45, that I had become the “asshole manager” I loathed at 25. Team results trump individual brilliance.
AmyStephen In general, I think it’s a bad idea for mgmt to plunk a set of “productivity tools” on an engineer’s desk. Best to let them pick.
FxNxRl Well yeah, you can’t say “effective Monday everyone is using SVN and methodology X”. The *method* of change is critical.
AmyStephen I’m a HUGE believer in team. I think, though, the strongest teams are built from a complementary collection of individual brilliance.
FxNxRl But the guys who say “never did it that way, ain’t gonna start now” and then dig in? Well they can do it “their way” elsewhere.
FxNxRl So am I… and I have seen effective teams operate in mayhem. It’s all about getting complimentary characters.
AmyStephen That’s why it’s important to involve them. Good engineers know what productivity aids are needed and welcome it. They resist “silly”
FxNxRl I have seen highly effective teams with vastly different cultures. You could NEVER take a person from one of those teams and put them in the other. It’s all about getting people who work well together.
AmyStephen Absolutely! I’ve worked on a team like that 2 times in my life. When you have tasted it, you know what it is & why it’s worth having
FxNxRl I’ve also become friends with people who I’ve let go as a “parachute in manager/jerk”. They found teams where they fit & r happy
AmyStephen Yes – there’s a chemistry that cannot be ignored. In MBTI, it’s the middle 2 indicators that can sometimes predict compatibility
AmyStephen Yes. That’s best. A self-directed work team w clear boundaries and focus and empowerment. It’s how “grown-ups” should be treated.
FxNxRl Dated though it may be I’m a huge MBO fan. Here’s what we need to do, tell me what you need to do it, then get it done.
FxNxRl as long as it’s legal and ethical I don’t care how it gets done, just that I can measure progress and that there is progress.
AmyStephen I don’t think common sense is ever dated. Keeping a focus on “what this is really about” is always good.

Amazing Code Repository Visualization (Joomla)

This is amazing stuff. The description from the YouTube page says it best: “This Code Swarm provides an animated visual representation of the changes made to the Joomla! source code since 2005. The names that appear are the users who have made changes to the source code. The stars/highlights represent commits made to the Subversion repository. The histogram to the bottom left displays activity. Look out for the date displayed in the right hand corner.”

That “instance” floating around in there is me. Even without the “holy cow, that’s me!” factor, this is a wonderful visualization tool.