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

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

Join Kiva for a Developer Drink-up

Image:Kiva.org logo.svg

Halle is interning at Kiva, which, given her personality, I figure is her dream internship.

Kiva is a microfinance site for the poor that allows anyone to give flat-rate microloans via PayPal. As a coincidence of the “I seem to have a lot of cash” and my New Year’s resolution to be a more responsible person, I’ve recently started to put a tiny fraction of my income into Kiva. You can view my lender page here to see that I currently participate in 17 microloans.

I mention all this because Kiva will be sponsoring a Developers Happy Hour this Thursday at their headquarters in San Francisco. Considering I give 5% of my money lent back to Kiva, I’m going for the drinks. 🙂

(Find out more about the concept from Muhammad Yunus’s Nobel lecture, the FrontLine program on social entrepreurship, conservative columnist Nicholas Kristof’s editorial in the New York Times, and the books Banker To the Poor, and Creating a World Without Poverty.)

Continue reading about Moneywatch.com after the jump

Web development as torture

Apparently one commenter found my April Fools articleham-handed.”

ham-hand⋅ed
clumsy, inept, or heavy-handed: a ham-handed approach to dealing with people that hurts a lot of feelings.

I’m sorry that some people didn’t realize that an article was meant to show off someone else’s April Fool’s prank. I guess the snippets of code showing the joke, putting it in the “humor” category, and adding the words “april phails phools” to the URL just wasn’t enough for some people 🙁

Next time, in order to prevent hurt feelings, I’ll be sure splay across the top the words: “Look, Phails is an April Fools Joke, Please don’t take it seriously (pretty please?)” in 42-point Charcoal typeface.

On second thought, why bother? 37Signals has me beat in the tact and sensitivity department. Notice how they introduce Ruby on Rails as…

The very definition of integrity

Great moments in Truth in Advertising™ just ask Twitter.

(And when I replied that this was madness, he kicked me into some CAT-5 ethernet cabling with the words, “THIS IS SPARTA!!!”)

(I heard that Web development is so hard that Rasmus had John Yoo write up a torture memo lest any Guantamano detainees put up a website between waterboarding sessions.)

Thank God, that I learned Ruby on Rails so I no longer have to deal with the pain of writing a SQL select.

Always a bigger fish

Alexa revised their ranking system again. Data is now limited to the last six months.

I thought I’d look up my website.

Tagged vs. competitors

Tagged’s traffic (in blue) vs. similar popular social networks: friendster, bebo, and orkut. I got the list of competitors from TradeVibes, excepting Facebook (too large), and Piczo.

As you can see, even in the last six months, we seem to be growing in the face of a declining social networking trend. That’s no surprise. we were the fastest growing social network in the United States last year in all categories (by percentage).

That’s good. But let’s look at the big boys.

Tagged vs. big boys

Tagged vs. the largest social networks. Technically Tagged is larger than hi5 in the U.S. (Nielsen NetRatings: 3rd in users/day, time spent/user, and ad market share). This is worldwide marketshare. Not that I can hold a grudge, hi5 was incubated out of the same offices as Tagged—long before I joined it.

Hmm, not even close (remember the graph is logarithmic). Well, at least with 19 places in the last three months, we’re still growing fast right?

Twitter comes out of nowhere.

What about Twitter? The rank for Twitter is Yesterday: #49; 7 day average: #51, 1 month average: #63, 3 month average: #93, 3 month change: -491(!)

There’s always a bigger fish. Congrats, Twitter. 🙂