February 2012 Member of the Month

It is with great pleasure that I’d like to announce the Member of the Month for February 2012: Michael Morris
Usually found hanging around in the PHP forums, Michael deserves this award for his helpfulness and his challenging threads about cutting-edge developments.

Please join me in congratulating Michael! And now, let’s dive into the interview!

1) Tell us a little about yourself—who are you and what makes you tick.
Well, a little bit of everything. I sing, act, and write in addition to coding, though programming is an easier field to find work in than performance arts. If I had my wish, I’d be in performance art though. I cut my computer programming teeth on the Commodore VIC-20, and moved up to the C=64 two years later. Whenever anyone complains about slow loads, my mind replays not so fond memories of the 1541 disk drive (slowest disk drive in history). I’d like to be more involved in the arts than I am now—but then again, most of the programming I have done has been for advertising and design firms. My resume bills me as a fine arts major who knows how to program.

2) You’ve been a member for a little over 4 years now. What first brought you to SP? What keeps you here?
I don’t honestly remember why I first showed up. I know I stick around because I like to teach and answer questions. It’s also a good way to continue learning—sometimes it’s just too easy to get caught up in habit to consider new ways of doing things. There’s a lot of people here that know more than I do which is a good thing to be around.

3) You write a lot of posts concerning cutting-edge PHP developments and practices. Is this purely out of interest, or do you use this knowledge in your daily work? Or in your personal projects?
I wish I could use theory more in practice than I can at work, but for the moment I’m doing mostly maintenance work in a code base where best practices are sorely needed but not implemented. I’m hoping one day to publish some of my personal work, but I don’t know. At the moment the work grind leaves my coding brain so addled I don’t want to look at code when I get home from work.

4) I read in a thread that you’re self-taught as far as web development is concerned. How did you get into this fair trade of ours to begin with?
I started with computer science at the University of Kentucky, met calculus and panicked when I failed it. I took a look at the time at what I was doing with computers—all of it art stuff—so decided to get into fine arts instead and then, eventually, theater. I still played with the web as a hobby, but didn’t do anything serious with it until I took on the technical advisor position at ENWorld about ten years ago. While doing that, I learned PHP from studying the code of vBulletin and consider the authors of that program to be my teachers. Eventually I got a consulting job with Wizards of the Coast to work on their forums, and decided that I could make a career of coding, so went back to school to study computer science once more—but this time with an emphasis in web design. One of the local firms here in Knoxville hired me after a year, and I left and haven’t looked back.

What this means is I’ve learned a lot of lessons the hard way, but on the whole it’s been a fun ride.

5) What music are you currently listening to?
Far more Pearl Jam than is healthy, along with a smattering of stuff I wrote myself. I spend a couple hours each week working on scores that are in various stages of completion.

6) What would you tell somebody to help them become a better developer?
Do your research. This goes beyond the code itself to getting an understanding of the tool you’re building. One painful example I have to work with daily at work is a block of code where the programmer didn’t do the research on a T-Ledger. His database has different columns for ‘credits’ and ‘debits’, and to further muddle the mixture, a column to label the transaction as a debit or a credit. The SQL must subtract one from the other depending on the entry in the field, which forces reports to include some truly gnarly case statements.

The problem, though, is if the original programmer had done his research he would have realized that a T-Ledger is an accountant’s convention to prevent accidentally mistaking a negative number for a positive number when balancing the books. Thus, you can safely distinguish credits from debits by storing the debits as a negative number. It is not legal on a T-Ledger to have a credit and a debit on the same line, nor is it ever legal to have a negative number in either field. As to whether the number represents a loss or gain for the company, neither the programmer nor the computer really needs to know this ahead of time; within a given account it’s sufficient to just store credits positively and debits negatively. At display time, you then put the positive numbers in the credits column and the absolute value of the negative numbers in the debits column. Calculating the final balance can be done with normal math, as long as all the transactions that are summed are from the same account or at least type of account. The polarity of the account as a whole doesn’t matter too much—because reports across accounts of different types are not normally run (and even if they were, this would be the rare edge case).

Another frightening example from the same code base and the same programmer was a class he’d written that emulates the native PHP assert statement. I have since removed this particular feature, but I can only imagine the time that could have been saved if he’d done some reading.

Second, don’t be afraid to ask questions.

Finally, don’t fall in love with your own intelligence. The simplest code block is almost always best: use the simplest solution whenever you possibly can in code. This will make the honestly complex code blocks easier to write when they do come up.

7) Now for something a little lighter than a T-Ledger :slight_smile: : what’s the last movie you saw at the cinema?
Our Idiot Brother. The last play I watched was a number called “Deadstock”. One quirk of mine is I attend live performances more often than cinemas.

8) How’s Gazelle—your PHP development framework that many of us are anxiously awaiting—coming along?
It’s been sidelined by work for the moment. I want to get it back out before it gets too dusty. When I left off I was working on my own ORM approach and got stuck. Given how monstrously complex ORM is, this shouldn’t be too surprising—though in my defense, once I get this one up and running it will be my third one. I just haven’t had a good, uninterrupted week to sit down with it that I’d like, and I’ve also found myself very busy with other projects. Gazelle has been renamed, since there is a gazelle project out there. Right now, I’m using the acronym PNL for PHP Next Level, but the more I think about it, the more that feels too pretentious for my tastes. In any event, the goal of the framework has never been to compete with Zend or Symphony, but rather to bridge the world of ‘from scrap’ PHP website writing to the world of framework writing. The framework’s goal is to teach, and other considerations are secondary.

9) Any other interesting projects you’d like to tell us about? (i.e. a free self-promo pass )
The project drinking most of my free time is “Moments”—a two act, 80 minute play that is about 75% complete as far as its first draft goes. It follows a play I rewrote over Christmas titled “Five Against One”, which is a musical based on the music of Pearl Jam. I have contacted one of the band’s rights managers and am waiting to hear back from them, but that will be a long wait. Moments was started because I have unanswered questions with one of the characters in “Five Against One”, and also it is wholly independent—meaning that, in theory, it could see production some day. I’ve also begun drafting out another musical using my own songs, tenatively titled “In the Light of the Storm”, and I’m kicking around thoughts for yet a fourth play—“And Also With You.” I find writing for the stage a lot more relaxing than writing for computers—as human beings don’t (usually) suffer parse errors.

10) Lastly, why did the chicken cross the road?
I was born a mere 4 miles from the founding restaurant of the Kentucky Fried Chicken chain, so I know a few things about chickens crossing roads. It is a frequent local phenomenon. As far as I can tell, chickens cross the road to show the possums that it can be done.

An extra interesting interview and a well earned award, congrats Micheal.

Oh, a Pearl Jam fan! My eyes almost popped out when reading that. :smiley:

I’ve been hugely obsessed with PJ for over decade. I had around 800 unofficial bootlegs and all the official ones (together they were around 2100 single discs) and around 200 videos (VHS, VCDs, then later DVDs, obviously) that I hunted down from bootleggers all over Europe and the US until I had every single PJ video and audio bootleg under the sun, even if it was just a 10min video with horrible sound and a few hundred heads obscuring the stage.

Now’ve reduced it to just soundboard recordings, but I was quite madly in love with that band. I still am, but I’m a bit older now and I’ve heard every song more than I’d ever openly admit. :slight_smile:

Anyhow, great, great interview, immerse and great answers, Michael!

Congratulations Michael and thanks for an interesting interview :slight_smile:

Nicely done Michael. Good interview!

Congratulations Michael!
And thanks for a great interview to both of you.

Great interview, guys, and congratulations, Michael. It’s nice to hear an accomplished developer talking about a love of the arts … as they can easily be forgotten in this world of square screens. Good luck with your writing and composing!

[ot]O, and one of my favorite jokes at the moment:
Q: Why did the chicken stand in the middle of the road?
A: He wanted to cross to the other side.
:shifty:[/ot]

Congratulations @Michael_Morris ;
You are a welcome member of this thriving community and we appreciate your contributions.

Thanks everyone. It’s been an honor and a privilege. BTW, here’s a snippet from the play I mentioned, Five Against One

This outtake is from the play near the middle of the first act. It is a dialog in two sonnets. The dialog I wrote for the play is in iambic pentameter, but most of the time the lines are blank verse. Particularly poignant exchanges do rhyme however as in the example below. The two characters are Christine - aged 62 and her daughter Catherine - aged 36. Christine is attempting to convince Catherine that she should leave her husband Arthur because his drunken rages are getting far too dangerous. The exchange leads into the song “Fatal” and note how Christine’s answer reflects the song just before it is sung (Cat also alludes to “Better Man” which is sung later in the Act).

CATHERINE
Please mom. We had this argument last night.
I’m sick of all this. I don’t want to fight
anymore. Not him, not you, anyone.
I mean, its my life isn’t it? I’m done
with it. I don’t want any more of it.
I want to run away but can’t do it.
I’m just through with questions. What good are they?
He’s not always like last night. He’ll stop this.
One day he will stop drinking. I know this.
I have faith in him. I have to. I must.
If I let go, something inside will bust
to pieces. I must try. He’s all I have.
There is no better man. He’s all I have.
Besides, there are no answers anyway.

CHRISTINE
There are answers. The answers are fatal.
A part of you dies, the relationship dies,
or he loses all control and you die.
Fear, Cat. I know fear. Fear, not love, is what
drives you now. It’s what drove me. I forgot
myself, lost myself somehow. I tried, tried
to keep what was already lost. I died.
That was my choice. The answers are fatal.
When you question everything about life.
Even life. You die inside or the strife
kills the will, Makes you numb to all the pain.
Open your eyes Cat. There’s nothing to gain.
I learned this. When Frank died I understood.
Don’t repeat my mistake. Please. He’s no good.

{Fatal}

CATHERINE
How good is he? How warm are his eyes?
You’ll see it’s not a reprise
Did he arrive too late and too tethered away
To put on his suit and his tie?

How good is he? How warm is his heart or ego, telling him which place to park?
Did he relate? The message is clearly, hardly grounds for dismissal
Outright… grounds for dismissal outright…

CHRISTINE
I wake up and wait up
When anger’s in fashion
I wake up and wait up
It echoes through the mansions
I wake up and wait up
When April’s in May, oh, uh-oh
I wake up and wait up
The answers are fatal
The answers are fatal

BOTH
I wait up and wake up
The answers are fatal
If he’s truly out of sight, is he truly out of mind?
If he’s truly out of sight…

Very interesting interview! Congrats @Michael_Morris;

Congrats MM, great read and well deserved award :tup:

Congrats!

congratulations Michael. I’m new here and came across your award for member of the month. wish i could be member of the month, its kinda like being employee of the month.

Well, get busy making contributions to the forums, and you never know! :slight_smile:

I’m sorry that I’m late to congratulate you, @Michael_Morris;

The interview has been great and your play does look very interesting (although you chose a hard topic for sure)

Congratulations for all the hard (and good) work! That includes the play, of course… and your wonderful help around the forums

@Immerse; you’ve done a great interview. I really enjoyed it :slight_smile: Congratulations

Let’s make that good contributions :slight_smile:

Way to go Michael! Well deserved praise. Very interesting interview; so nice to see how your background and approach to code cross paths. You truly help the forums and do succeed at teaching and help broaden views.

P.S. I like the out take of your play. maybe when you get it completed you could make a php game ‘find the play int the code’; people that study the code correctly could get the whole ‘first act’ :wink:

Steve

Well, the month is winding down, but I do get a bonus day!! :smiley:

I sincerely hope it has been a good month for you @Michael
Thanks for your outstanding participation and contributions to these Fora !

Yes, you get a bonus day perhaps my congratulations are the free gift Michael and as the say; “It ain’t over until the fat lady sings”.

There was some good solid advice in the interview regarding doing your research first instead of just ploughing in and assuming things. Like you said you should never be afraid to ask questions… Congratulations are well deserved for the MOTM. :slight_smile: