Archive for the ‘OmniTI’ Category.

It had to happen.

I think I must be the only person in the PHP blogosphere who hasn’t said something about Ruby On Rails.  It seemed about time :)

We’ve been working for a while on a RoR project.  Originally it came in as a really high concept idea - the spec was more like a film treatment than a functional spec.  It came from the mind of an old friend of one of our biggest clients - he’s a high concept guy, who’s been amazingly successful with his out there ideas in the past.

So we set out to build a prototype in six weeks.  We are known as a PHP shop, although of our web dev, about half is in PHP and the other half in Perl.  At the time we had working for us a very talented Rails guru, so we thought we’d give it a try. 

Times change: the prototype turned into a production website, our Rails guru moved on to a pure Rails shop, and we now support this Rails app (served from lighttpd against PostgreSQL on Solaris).

Things I have learned about Rails:
- It makes getting started easy.  This is what it’s famous for.
- We had to do quite a bit of work to get everything working happily on Solaris (as part of our migration to doing most of our web dev in ZFS zones).  This included building custom packages of Ruby 1.8 on Solaris 10 resulting in numerous patches to Ruby’s build and configuration processes and building custom lighttpd for Linux and then Solaris 10.  We developed numerous patches addressing unexplained crashes, errors on large file uploads, and improper use of timezone localization.

- As things get more complicated, the ideal of convention over configuration starts to get in your way.  In several cases we have obtained huge performance improvements (up to twenty times) by hacking around the conventions.
- The documentation sucks.  This is however, improving.  I remember when I first started learning the language and platform there was an initiative on the Rails website to pay someone to write some, "because all the people that really know Rails are busy building apps or writing books about it".  This is indicative of another issue, namely:
- The community support is really immature.  Something I know as a long time user of lots of different Open Source technologies is that a good community can make or break a product.  For example, for a long time the MySQL community was much more supportive of new users than the PostgreSQL community.  I love Postgres and have been using it for years, long before I ever touched MySQL or wrote any books about it (although I have tech edited a Postgres book).  I am really pleased to say that the Postgres community has become seriously good in the last year or so.
- Learning to debug apps is really really hard to begin with.  All the magic that goes on makes it hard for the newbie to figure out what went wrong.  How I wish I had known more about script/console at the beginning. 
- Because of the state of the documentation, I bought a few Rails and Ruby books.  The first one I read was the Agile guide.  I found it interesting how this book is aimed at Java programmers.  All the arguments for switching to RoR are arguments for switching from Java.  It never occurred to me that people would be doing that.  This is a very readable book but I need more depth.
- What I want is a book on debugging, maintaining, and scaling RoR apps.  Recommendations welcome.  Worst comes to worst I guess we might have to write one.

The project is possibly the weirdest thing that’s ever been built with Rails - the functionality at its most basic is very very straightforward, but as my colleague put it "This site violates pretty much every rule of web UI design. The content
on the site is not information as much as it is a bunch of people
arguing about current events and the righteousness of public opinion….if you can survive the outright attack on the senses, it is clever and punchy on both the concept level and technical level".   That sums it up pretty well.

It’s been and continues to be an interesting journey.  The site is visible at http://www.ctoads.com/

Footnote: Just as a note on the design - it’s entirely true to the client’s original vision and has been an interesting challenge for the UI designers (who have also been responsible for sites such as http://www.slash7.com/ (our original designer, Amy Hoy) and  http://labs.omniti.com (today’s designer, Dai Swengler).

PHP Quebec slides posted

I gave my Writing Maintainable Code rant^H^H^H^Htalk this morning and have now posted the slides at http://omniti.com/resources/talks

Chris recorded it, so subject to quality I’ll post the audio soon.

This is a terrific conference - good talks, great location, and super organized - I had the feedback from my talk given to me by the organizers in summary form one hour afterwards.

Some highlights for me have been Robert Bernier’s pgpool talk and Andrei Zmievski on Vim for PHP Programmers.  Very good content in both.

OmniTI Labs Launched

I am delighted and excited to announce the launch of OmniTI Labs, a repository of Open Source software generated by OmniTI staff in the course of their work.

This is a project we’ve been talking about internally for a long time.  In the course of our work we produce a lot of bespoke code for various clients, or for internal use, or as part of our products. Some of this code consists of things that can be generalized for re-use by ourselves and others.  Given we have so many open source type people here, it seemed obvious that we should have a place to put all of those things for people to use.

The site is a launchpad to access the various Subversion repositories and Trac wikis for the various projects.  Some of the projects are things that have been around for a long while and are not new, but have a new home.  Some of the pieces are brand new code that has never seen the light of day outside the Omniplex before.  Some of the pieces are mature, and some in eXtreme alpha.

We’ll be adding more and more to this repository over the coming months, so keep your eyes open.  There’s an RSS feed of project announcements available on the site home page.

Enjoy.

PHP Quebec this week

This week myself, Chris Shiflett, and Alex Mikitik from OmniTI will be at PHP Quebec.  We are Silver Sponsors this time around.  Chris will speak on Thursday on The Truth About Sessions, and I’ll speak on Friday on Writing Maintainable PHP.  I’m looking forward to it - I haven’t been to one of Damian’s conferences before.  Hope to see some readers of this blog there.

We’ll be announcing some really exciting news at the conference, that I’ve hinted at before…I’m looking forward to the end of the week.

Breaking news: OWASP Spring of Code $$$ for security

Andrew Van Der Stock announced tonight at the first PHP Meetup at OmniTI in Columbia that OWASP have $100,000 available for security improvements in Open Source projects.  You heard it here first folks :)

Apply at http://owasp.org (when they put it up :) )

PHP Meetup between Baltimore and DC

I notice that when Chris announced the Columbia PHP Meetup, at least one of the commenters thought we were in South America.  Actually, the meetup is at the OmniTI office in Columbia, Maryland - about 20-25 minutes from Baltimore and about 45 or so from Washington D.C.  Please come if you will be in the vicinity, talk to other PHPers, eat pizza, and hopefully we can twist your arm to give a lightning talk.

We’ve been planning this for a long time so I’m pleased that it’s finally coming to fruition.  We have several big things afoot in the office at present.  Watch this space for something I’m really excited about shortly.

The number one rule.

Warning: This post contains many occurrences of the word "arse".  ("ass" if you are American)  If you’ll be offended, you should stop reading now.

So, in my talk at kiwifoo I talked about hiring and keeping good staff.  I had a slide that read:
1.  Don’t be an arseclown.
2.  Don’t hire arseclowns.

I was really stealing from George, who said once that the best thing about OmniTI was that we didn’t employ any asshats.  I have always preferred the term arseclown myself, from first having heard it in Office Space to Roy and HG’s telephone poll on The Dream ("Is Arseclown A Real Word?  Vote Yes or No") and their then nomination of the Arseclown of the Day.

I wandered into Borders and what should I see but this: "The No Asshole Rule: Building a Civilized Workplace and Surviving one that isn’t." by Bob Sutton.  You can even take the Am I an Asshole? quiz online via Guy Kawasaki’s blog.

P.S. Don’t worry, one of the first things in the book is a note that different cultures use different words: asshole == arsehole == arseclown. 

linux.conf.au

Just as a follow up on the topic of MySQL: next week I’ll be at linux.conf.au in Sydney. I’m going to give a talk on MySQL Troubleshooting in the MySQL miniconf on Monday, and will also attend the PostgreSQL miniconf (Tuesday) and one day of the main conference (Wednesday).   It looks like a great conference - I haven’t been to an LCA before and people keep telling me how much I am missing out on.

Be careful what you wish for

We’re hiring ("again", "more", "as usual", etc) and last time Theo posted something like this  we ended up hiring Ben who absolutely rocks.  This week he came up with a version of the blog post aimed at hiring a System Administrator.  Hopefully we will get somebody great.

Regardless, Eric (our Fearless Leader of Sysadmin) and I decided that Theo really needed a stick if he was going to beat on all those people.  So here it is.  Merry Christmas mate.

OmniTI acquires Brain Bulb

…which means I now look across my desk at the smiling face of one Chris Shiflett.

This means we’re ramping up our consulting offerings in the security sector here at OmniTI,  which is really exciting for us.   Chris’s expertise is certainly a great fit here.  (For more information you can read the press release, Chris’s blog, or George’s blog.)

Welcome to the "OmniTI brain trust", Chris.  I’m sure you’ll have a ball.