Join Wikimedia (Senior LAMP Software Developer)

> “Imagine a world in which every single human being can freely share in the sum of all knowledge. **That’s our commitment.**”

If you don’t know already, [I left Automattic (WordPress)][leaving automattic] and have joined the [Wikimedia Foundation][wikimedia] ([Wikipedia][wikipedia]) in February. Before this, I haven’t posted our regular jobs because I wasn’t too sure how relevant they were, and because I got burned by the Jobvite system spamming [my twitter][twittertychay] followers with jobs. (I apologize profusely!)

This is despite the fact that our infrastructure is PHP ([obviously][mediawiki]).

Until recently the Foundation has had lacked mostly Javascript and UI engineers and not senior-level PHP ones. But I guess when I joined all of the good PHP developers left! j/k 😀

Currently and in the coming months, we will have had three positions open up for a Senior Software full-stack LAMP/PHP engineer. If you want to work for the 5th most popular web property in the world with nearly half a billion monthly uniques (and probably the largest single-install open-source PHP project), you should really consider working [here][wikimedia]

### Job description: [Senior Software Developer at the Wikimedia Foundation][jobvite]

Be a part of a newly forming team that will be tasked to entice new authors to Wikipedia. You will create responsive UI-driven software components in a highly iterative environment to support user engagement experimental features for Wikimedia websites using JavaScript, CSS3, HTML5 and PHP.

#### Some of the projects you’ll work on:

– Develop new experimental editor engagement features for Wikimedia sites.
– Extend MediaWiki software to support new experimental features.
– Participate in periodic technology meetings for design, development and testing of experimental features.
– Scrum master for development team.

#### Required Qualifications

– 5+ years of web development experience, including front-end development (JavaScript/jQuery/HTML5/CSS3), and server-side development using PHP/MySQL.
– 5+ years experience with rapid iterative software development processes, ability to quickly grasp requirements, derive UI workflow and develop functionality.
– Experience deploying code into high transaction volume production environments.
– Experience with A/B testing, cross-browser testing, debugging.
– Knowledge of Agile Methodologies such as Scrum and Extreme Programming (XP). ScrumMaster training preferred.
– Familiarity with version control systems/continuous integration tools (we use Git/Gerrit/Jenkins).
– Must be able to meet aggressive timelines, iterate rapidly, and switch rapidly across multiple projects.
– Strong communication skills: Must be able to communicate clearly and effectively; have strong written and oral communication skills as well as be able to collaborate easily within a cross-functional team.
– B.S. or M.S. Computer Science or related field preferred.

#### Extra Points if you have:

– Experience with MediaWiki and other open source PHP-based content management systems
– Experience in the Wikipedia community
– Experience contributing to a major Open Source project
– Understanding of free culture / free software /open source
– Experience working with online volunteers.
– Experience with wikis and participatory production environments.
– Good sense of humor
– Being creative, highly motivated, hard-working and ability to work effectively in multiple cultural contexts are great assets
– Comfortable working in an open, highly collaborative, consensus-oriented environment

Please provide URLs to any existing open source software work you may have done (your own software or patches to other packages) if possible. We’d love to see what you can do!

#### About the Wikimedia Foundation

The Wikimedia Foundation is the non-profit organization that operates Wikipedia, the free encyclopedia. According to comScore Media Metrix, Wikipedia and the other projects operated by the Wikimedia Foundation receive more than 482 million unique visitors per month, making them the 5th most popular web property worldwide. Available in more than 270 languages, Wikipedia contains more than 21 million articles contributed by a global volunteer community of more than 100,000 people. Based in San Francisco, California, the Wikimedia Foundation is an audited, 501(c)(3) charity that is funded primarily through donations and grants. The Wikimedia Foundation was created in 2003 to manage the operation of Wikipedia and its sister projects. It currently employs 130 staff members. Wikimedia is supported by local chapter organizations in 38 countries or regions.

[Apply by clicking on this link][jobvite] or contact me personally. 🙂

### Why working here is totally awesome

Wikimedia Foundation 90 second HR Video with Disclaimer

Transcoded from original created and uploaded to Wikimedia Commons by WMFer, Victorgrigas.

(It’s probably a good thing this was filmed before I joined the Foundation. A version with me in it would have been rated R due to strong language. 😀 )

You should seriously work here. 🙂

[leaving automattic]: http://terrychay.com/article/automattic-outro.shtml “Automattic Outro”
[wikimedia]: http://wikimediafoundation.org/wiki/Home “Wikimedia Foundation”
[wikipedia]: http://www.wikipedia.org/ “Wikipedia”
[twittertychay]: http://twitter.com/tychay “Me @ Twitter”
[mediwiki]: http://www.mediawiki.org/wiki/MediaWiki “MediaWiki”
[jobvite]:
http://hire.jobvite.com/Jobvite/Job.aspx?j=oHDiWfwi&c=qSa9VfwQ “Senior Software Developer—Wikimedia Foundation @ Jobvite”

Wikimedia 503 Accessibility Hack Day (May 19, SF)

[The Wikimedia Foundation][wmf] is organizing a mini hackathon related to
accessibility (ensuring [our software][mediawiki] is usable by people with
disabilities or special needs). We’re working with Lucy Greco, an
Assistive Technology Specialist at the Disabled Student’s Program of
UC Berkeley on this.

If you’re a front-end developer or UI/UX designer, you can help. We’ll
work with a user of Dragon text-to-speech, a user of
on-screen-keyboard technology, 2-3 users of the JAWS screen reader,
and 1 user of a Mac screen reader. So you can directly help improve
the experience for real people who encounter issues with [Wikipedia] and
our other sites.

The event will be at the Wikimedia Foundation offices ([149 New
Montgomery Street][wmf hq], third floor) on Saturday, May 19, beginning at 10
AM and ending probably in the late PM. Lunch and dinner will be
provided.

Please RSVP with Rachel Farrand rfarrand [at] wikimedia dot] org by May 15 if
you’re interested in attending.

[wmf]: http://wikimediafoundation.org/wiki/Home “Wikimedia Foundation”
[mediawiki]: http://www.mediawiki.org/wiki/MediaWiki “MediaWiki which powers Wikipedia”
[wmf hq]: http://maps.google.com/maps?q=149+New+Montgomery+Street&client=safari&oe=UTF-8&hnear=149+New+Montgomery+St,+San+Francisco,+California+94105&gl=us&t=m&z=16
[wikipedia]: http://www.wikipedia.com “Wikipedia”

It's just a tool

Previously: [Part 1][programming1], [Part 2][programming2], [Part 3][programming3], and [Part 4][programming4].

I received an interesting question the other day from a recruiter:

> Would you be open to moving away from PHP?

My answer:

First, by analogy. I’m a photographer, most of the cameras I own are manufactured by Nikon. This is like asking if I’m open to using a Canon.

I happen to be very adept with using a Nikon. However, I don’t think [the photons bouncing around care much what logo sits on front of the camera][camera purchasing] they are in. I’d be a poor photographer if what I did was care about the brand of camera I carry instead of the picture I am taking.

PHP is designed to solve one problem: the web problem. It solves it very well—as evidenced by marketshare and its continuing durability. At nearly all other stuff, PHP happens to suck at.

However it (the web problem) [isn’t that difficult] of a problem (having been solved repeatedly by languages such as Ruby, Python, C, C++, Java, Javascript, etc.). The real difficult parts are invariably outside the “web problem.” (Example: Twitter’s web problem was solved in Ruby using Rails, but their real problems were not web problems and of those problems, the most prominent was solved in Scala.)

I happen to be very adept at PHP. That pretty much means knowing that there is a better tool than to use PHP to solve the problem at hand at hand, and using that instead of PHP: MySQL, Apache, memcached, MongoDB, CouchDB, Scala, Erlang, Puppet, CruiseControl, AWS, etc.—none of which, to my knowledge anyway, written in PHP.

I’d be a poor programmer indeed if I thought that the problems I solved cared much the language I was adept in.

I’m not a poor programmer.

The Short answer: “Yes. Depends on the problem and the existing environment.”

(Recruiter was amused by my answer because he was owns a Canon. I suggested we “get on either side of the street and start making threatening dance moves at each other like [the Jets and the Sharks][west side story].”)

Another question I got:

> Which do you think is better [some programming language] or [another programming language]?

My answer:

They’re just tools. That’s like asking a handyman which they think is better: a hammer or a screwdriver.

(That elicited a laugh.)

Using a programming language is simply [a choice][making choices]. There are many things that go into making a correct choice that are far beyond what language one prefers for a problem that happens to be not that hard to solve in the first place.

[programming1]: http://terrychay.com/article/learning-programming.shtml “Learning Programming Part 1: 5 million”
[programming2]: http://terrychay.com/article/learning-frameworks.shtml “Learning Programming Part 2: Programming Frameworks”
[programming3]: http://terrychay.com/article/learning-programming-part-3-c-cplusplus-superiority.shtml “Learning Programming Part 3: C/C++ superiority”
[programming4]: http://terrychay.com/article/programming-is-hard.shtml “Learning Programming Part 4: “Programming is Hard””
[camera purchasing]: http://terrychay.com/article/camera-purchasing-aphorisms.shtml “Camera purchasing advice”
: http://terrychay.com/article/is-ruby-the-dog-and-php-the-dogfood.shtml “Is Ruby the dog and PHP the dogfood?”
[making choices]: http://terrychay.com/article/simple-prescriptions-and-making-choices.shtml “Simple prescriptions and making choices”
[west side story]: http://en.wikipedia.org/wiki/West_Side_Story “West Side Story—Wikipedia”

PhotoAdvent

Last year, I decided to do a fun project with me and 25 of my closest friends called PhotoAdvent. It was a shameless copy of PHPAdvent, but wherever you see “PHP” you replace it with “Photo” — I even swiped (with permission) their theme from the previous year (delta writing it by hand because apparently they don’t use WordPress to do PHPAdvent and I have to support the mothership.)

In any case, this year I contributed an article. Let me tell you it was work convincing the curators at PHPAdvent to accept my submission. But after an intense lobbying campaign with the other two editors, we finally posted it.

PETS: Reflections of the Internal | PhotoAdvent

Four out of five Scrooges agree, this is worth reading.

So read it or die! And when you are done, you better tweet it or share it on Facebook, or I will get Gibson to CUT YOU! (No, I do not declaw my kittehs.)

Oh yeah…Happy Holidays!

Notes from Checklist Manifesto

In Montreal this summer, while making idle conversation, Paul asked me if I had read anything interesting. Here was my answer…

Five years ago, I met D. Richard Hipp because my friends were thinking of bundling a database he wrote into PHP. Since that time, besides being in the PHP core and thus about 40% of the web servers on the planet, SQLite is in every smartphone, in software such as Firefox, platforms such as Adobe AIR, and operating systems such as Apple Mac OS X. It is used by Oracle and Bloomberg.

I was curious how the unassuming man I met took the new-found fame of his pet software project. This is why, despite my hatred for all things database—they’re boring and talks about them are probably what it feels like to sit through a course on actuarial accounting—I popped into his talk at OSCON.

I was glad I did. It was about, of all things, checklists.

My brother and father are much more responsible than my mom and me. One things that separates them from us was in their methodical use of checklists. Watching his talk reminded me how important they are, how they can be used for so much more than I considered, and how thankful I was that I finally made a packing checklist before going to Portland (and Montreal). 🙂

Read the article, and, if that interests you, buy the book.

With a little imagination, a checklist will change your life.Continue reading my notes from the book after the jump

Learning Programming Part 4: "Programming is Hard"

Previously: Part 1, Part 2, and Part 3.

Programming, it turns out, is hard.
Eloquent Javascript (and typical)

A few months ago, a girl expressed to me her frustrations about, in particular, the attitude expressed many engineers on her attempts to learn to programming.

“They act like learning programming is hard. They imply that if you haven’t been programming since you were seven, there’s no hope for you,” she explained.

I opined, “If someone can learn to program when they are seven, then it must not be that difficult.”

Think of all the things you couldn’t do when you were seven—programming is less difficult than all of those.

Super Tuesday

When I first moved to San Francisco, the PHP meetup group hadn’t had a meeting in a year. That was before [Touge][touge] took it up, and, along with [Mariano][mariano], does the hard work of actually scheduling people to come shoot the shit.

Apparently, it’s time for my shit to be shot.

[Tomorrow, I’m giving a talk][talk] at [SFPHP][sfphp] on [DevOps][devops] for PHP developers. I’ve giving this talk before as the [closing keynote][lineman phpcomcon] at [PHP Community Conference][phpcomcon] and [to sysadmins][lineman oscon] at OSCON.

> **Living without Your Linemen: The Programmer Becomes System Operator in the Cloud**
>
> If a website architect is the quarterback, then site operations is the offensive line—overworked, under-appreciated, and only noticed when it fails. They make you look good. However, four years ago cloud computing networks like Amazon Web Services and Slicehost have appeared. While deficiencies in frameworks in other languages have forced those worlds to adopt Infrastructure-as-a-Service, the PHP world—with it’s ultra-cheap shared-hosting (on one end) and tradition of dominance on some of the most trafficked websites (on the other)—has been slow to move. But as the technology continues to disrupt, modern web engineers will be expected to use their programming skills to not only build, but also provision and maintain fast, scalable websites.
>
> The efficiencies of a web-based language and experience in scalable website architecture offer a unique opportunity for programmers to transfer their skills when wearing a sysop hat. Not to mention some of the best libraries for programming them are written in PHP! When going from a small pet project to a go-live site, maybe we can learn to live without our linemen.

Trust me, you’ll like it.

[Please come][talk]!

Also, If you are an American citizen, go vote! 🙂

[talk]: http://www.sfphp.org/events/33726032/ “Living without Your Linemen: The Programmer Becomes System Operator in the Cloud—SFPHP”
[sfphp]: http://www.sfphp.org/ “The SF PHP Meetup Group—SFPHP”
[mariano]: http://twitter.com/marianopeterson
[touge]: http://www.grepmymind.com/ “Grep My Mind”
[devops]: http://en.wikipedia.org/wiki/DevOps “DevOps—Wikipedia”
[lineman oscon]: http://www.slideshare.net/tychay/2011-07-lineman-opsoscon “2011 07 Living without your Linemen—OSCON”
[lineman phpcomcon]: http://www.slideshare.net/tychay/living-without-linemen “Living Without Linemen—PHP Community Conference 2011”
[phpcomcon]: http://phpcon.org/ “PHP Community Cpnference”

Most programmers are really Macgruber

Friend: I dunno why people need to make my life difficult with all this canned shit.

Me: Because programmers don’t know what they are doing—it’s simply about the right tool for the right job. If they found a letter opener, they think it’s fucking Excalibur. To them, the one shit framework/library/application/programming language/development environment they know is a fucking Swiss knife and they think they’re god-damn MacGuyver.

OSCON 2011

There is some irony that the two years I take a hiatus from OSCON are the two years it’s in my backyard. When I try to start speaking again, they’re back in Portland.

I’m going to be at OSCON this week giving two talks:

– [Living without Your Linemen: The Programmer Becomes System Operator in the Cloud](http://www.oscon.com/oscon2011/public/schedule/detail/18893). It’s about why you should get your shit together and pay attention to all this cloud hooplah
– [Tales of Virality](http://www.oscon.com/oscon2011/public/schedule/detail/18892). It should be a fun little talk about viral marketing (from an engineering perspective).

I’ve given these before, but one of them was a keynote (so had a different style), and other was at a private event. Unfortunately (for me) they didn’t put these talks in the PHP track as I asked. One was put in the Operations track and the other was put in the Business track. Quel désastre! I’ll try to make it worth your time, if you plan on attending. So please come see them!

If not, say hi anyway, I don’t bite, and I can hold of my alcohol down (mostly). I usually sober up before 5pm (when I’m giving these talks). 🙂

MacPorts vs. HomeBrew

A friend asks whether they should use MacPorts or Homebrew.

What they are, are ways of installing Unix (Linux or BSD) software on your Macintosh in a way that they get updated. This is useful if you need to customize your (L)AMP stack, or process a document in LaTeX, or do graphing visualization or -code optimization… there are a lot of uses and having a consistent Linux-like or BSD-like tree of libraries and applications is usually the best option.

I use MacPorts and I’ve used Fink in the past. I never tried Homebrew.

Continue reading more ignorant comparisons between Fink, MacPorts and Homebrew after the jump