PHP Engineering positions in Sunnyvale

I think this is different from the last one, since this one has three openings, instead of a single senior one.

  1. PHP developer, version 5, production environment, ideally with the ZEND Framework
  2. 6 years of overall PHP experience with a minimum of 3 years of development within a production environment/10 years of overall development experience
  3. Bachelors degree required
  4. Would be nice to have the following: Agile, MVC
  5. Needs to have the following: Creative, passionate, intuitive mindset
  6. Reason why the position is open: rapidly growing
  7. Location: Sunnyvale

Contact information:
Carl Kenny, Yoh IT
408.654.9192 Extn:25
carl.kenny [at] yoh [dot] com

Senior Engineer in PHP (Sunnyvale)

A small, but promising company in Sunnyvale is seeking a Sr. Software Engineer with the following skills:

  • Recent deep experience with the LAMP stack, particularly object-oriented PHP5 and command line Linux skills.
  • Experience developing large, transactional web sites.
  • Any e-commerce experience is a big plus.

Projects that the candidate will be working on depending on their mix of skills are:

  • Web application development
  • Platform services and integration
  • Business process and workflow tools
  • Data analysis and reporting
  • Real-time optimization and heuristics
  • Release engineering and site operations

Contact Urmila Bhide, Talent Space, Inc., 408-330-1905

Third time is not the charm

I got an e-mail today:

Terrence,

Good afternoon, I wanted to touch base with you about an opportunity in ____, CA. I thought you might be a nice fit for the role. Let me know if you or someone you know might be interested.

Position Summary: _____ Site Architect

_____ is looking for an exceptional and highly motivated infrastructure architect with a strong track record of designing and developing multi-tiered web applications that are high quality, scalable, and reliable. We prefer generalists who have driven feature development at every layer of the stack.

I actually applied for a job there twice: once in 2003 just before I joined Plaxo, and once in 2006, just before I joined Tagged. Both times I was desperate for a job, both times I applied for positions beneath my qualifications, both times I was rejected in an unprofessional manner, both times represented watershed moments in _____’s future direction.

I should mention that _____ is no company to laugh at: in 2003, it was one of the hottest companies on the internet. Even in 2006, it was still many times larger than Tagged. How about now?

____.com Traffic Details—Alexa

Comparing ____ (in blue) to the site I’m the architect of (in red).

No, I don’t think I’ll apply for this job.

Continue reading about An IM conversation and some advice after the jump

Will

I have a friend and web developer who thinks I’m really smart, but he doesn’t think much of his own abilities. During a particular coincidence of both opinions, he asked me if I’d hire him if I was in a position to make such a judgement:

Me: Of course.
Me: Why do you ask this?

Him: I was just thinking that one day you will be atop the web
Him: And I want to be part of it

Me: In general, the thing I find is the #1 thing necessary for success is will. And you have will.
Me: Smarts is a result of will, not vice versa.
Me: So sure I’d hire you.

He tweeted that and someone liked that.

As someone who has leaned on his “smarts” a number of times to the detriment of his own personal development, I truly believe what I said. Every day, I’m starting to realize my inner Socrates:

It seemed to me … that the people with the greatest reputations were almost entirely deficient, while others who were supposed to be their inferiors were much better qualified in practical intelligence…

I reflected as I walked away: Well, I am certainly wiser than this man. It is only too likely that neither of us has any knowledge to boast of; but he thinks that he knows something which he does not know, whereas I am quite conscious of my ignorance. At any rate it seems to me that I am wiser than he is to the extent, that I do not think that I know what I do not know.

Time to c—

At lunch today someone related this to me.

In the video game industry there is this expression called, “Time To Crate which is the shortest amount of time it takes for a gamer to reach the first crate (which contains health, ammo, and assorted goodies) in the game. Apparently, the shorter the time, the worse the game.

Because the gaming world is starting to merge with the social networking world, there is a new term out: Time To Cock. This is the time between the release of a user-generated content system and the point where that system is used to create a cock.

Apparently, with the advent of online gaming, both times have reached record lows.

Which explains things like thisand this.

Last year, Tagged relaunched our namesake, in which we allowed users to create their own tags. I won’t tell you what our Time To Cock was, except to say, it’s best measured using this function.

Another friend mentioned that he was doing a search the other day on his old company’s website, eGroups. The top results were all pictures of penises—the exact same problem they had back when he worked there.

The internet never changes. Gotta ❤ it!

Writing and speaking

Terry-ist

I can’t find the conference speaker badges so this will have to do. The fact that it feeds my ego doesn’t hurt either!

Paul wrote something nice about me. In fact, it’s so very nice, that I can (almost) forgive him for listing me sixth. 😉

Reading his description reminds me how grateful I am every time someone reads my articles. Writing is a craft that I’m not very good at and have to work at constantly. I hope my logorrhea has, in a small way, created a little context for you and perhaps inspired some of you to blog more.

Because when I’m not trolling the internets for my name, I’m reading your blog… and growing.

Mad talks

Paul also mentioned my that I’m a conference speaker.

In light of this, I better mention that in a couple weeks in Chicago at PHP|tek, I’ll be bookending the opening keynote of Andrei, my (a)cross-street rival, with the closing keynote. I have no idea what I’ll be talking about so this should be interesting!

After that, I’ll be racing to Berlin to catch up with Andrei, in order to give two completely different talks at the International PHP Conference. I’m noticed that Thies Artzen will be there—I’ll finally get to see if the rumors of him mellowing out are true.

Maybe Keith Casey will let me dry run my Berlin talks at the PHP|tek Unconference (I hope so). Even if not, I should probably participate in the Pecha Kuchamy speaking skills have deteriorated noticeably.

What killed the whom

Finally I noticed that in an interview, Andi Gutmans, the “nd” in Zend mentioned my company:

The Java disruption by PHP is well under way. PHP is everywhere, and Zend’s solutions are being used in business-critical deployments by companies such as Tagged, Fiat, BNP Paribas, and Fox Interactive Media, to name a few. The strategic adoption of Zend in larger accounts, often in favor of Java, is related to our strong return on investment and shorter time to market.

(I guess this means I’ll finally have to figure out the difference between him and Zeev, the “Ze” in Zend.)

One thing the writer, a Java developer, doesn’t notice is that a significant fraction of Tagged is Java. This wasn’t the case when I joined the company, but it was an architectural system I made because there are some things PHP isn’t good at.

If I had to guess, when Andi is saying “Java disruption,” I think he really means “Java/J2EE” disruption. It’s a minor distinction…and one of which I’ve been attacked for when I say “Ruby” and really mean “Rails.”

How much does a date() cost?

One of the fringe benefits of open sourcing an existing code base is that you have an opportunity to set error_reporting to E_ALL | E_STRICT, or perhaps rather to 2147483647. When you do that you find small problems with your code base you missed the first time you sloppily wrote it.

In my case, I noticed that date() was throwing strict errors. For example

error_reporting(E_ALL | E_STRICT);
ini_set('date.timezone',false);
echo date('c');

shows you

Remember to set your timezone!

I’m sure if you’re Derick, you are intimate with date()ing, but I had forgotten about this wasted guess_timezone() sys call and the suppressed strict error (which still takes time in PHP 5).

I sent an e-mail with this bug, along with the one line fix to the php.ini, to site operations…and promptly forgot about it. That is until the ticket was sent back with the message that it needed to be “tested in dev and stage before making it to production.”

(The younger, less-tolerant terry would have blown a fuse at this point.) The older, jaded terry simply became curious about what the costs of date() really are.
Continue reading about Benchmarking date() after the jump

Autoloading and Lazy Loading

Two and a half years ago, when first wrestling with the Tagged codebase, I asked Andrei about replacing all my PHP includes with __autoload. I was told under no uncertain terms to not do this.

I did it anyway.

It’s not that Andrei is wrong in his admonition. Far from it! For reasons that I don’t quite care to know, there are caching and lookup optimizations that APC cannot do when it has to switch context to run __autoload. But the problem in practice was two-fold:

  1. The company was bug-driven and the easiest way to eliminate an “Undefined class” error was to go into the preinclude script and include it. Voilá! problem solved at the expense of code bloat. (This bug happens often when deserializing nested objects from cache.)
  2. There are slowdowns when you use include_once where include would do, or when you don’t use the full path in your include, or when you construct your full path from symbols. How many of us do this? Heck, I’m still trying to get used to the idea of include_once and require_once. Ahh the days when I’d have to write symbols with every include file!
  3. More to the previous. If you have deep dependencies and don’t use a FrontController pattern, you’re going to have to use require_once() which will get executed multiple times. An __autoload only gets executed once.

At a certain point, optimization gives way to convenience and practicality.

For Tagged, this was that PHP would allocate 12MB/80ms to say “hello world”, 20MB/465ms to display the homepage, and 22MB/1965ms/1207ms to return my profile page

After the rewrite it takes 0.3MB/3ms to say hello world and 3.7MB/109ms to return my profile page.

Continue reading about lazy loading after the jump