Friday, October 9, 2009

Sys Admins: What your Developers want you to know

This is my response to Katie Cunningham's post telling Developers what System Administrators want you to know.

Of course, this is mostly for shops with large groups such as our own. But some of this applies anywhere.

Publish your damned system specifications

If rackspace, webfaction, and the rest of the web hosting world does it for $10/month, then why can't well-paid system administrators do it?

Alas, I've yet to go to a shop where I could find on a wiki page or an otherwise easily accessible document an exact specification of the target production environment. Invariably you have to ask in person, go to another department, ask managers, or go searching through word documents. Word documents?!?

Unnacceptable.

As a developer I should be able to pull up for each server a consistently formatted web page that lists the operating system, operating system specifications, patches, database(s), compilers, shell, disk space, languages, hosted applications, and anything else you as a system administrator can think of adding. If your organization doesn't support a wiki or anything like that, then consider sending out a weekly email. Something as simple as this:
  • Production01 (prod.mycompany.com): RHEL Linux, Python 2.4.4, 2.6.1, Java 1.6, Ports Open: 80, 443
  • Staging02 (staging.mycompany.com): RHEL Linux, Python 2.4.3, 2.6.3, Java 1.6, Ports Open: 80
Look - discrepancies between servers! What a surprise! Glad this is documented!

Based off of this we can build our development environments to match production environments. The QA group can also build their staging environments to match as well. Also, we might be able to better exploit a service you are providing for us rather than writing something from scratch, which means we end up saving time, energy, and money. Everybody wins!

Communication is king

A system administrator needs to be accessible via phone. It just kills me that in some shops their phone numbers are only accessible via their boss. So if you have a problem and that boss is not around the rest of us are plain screwed. Can't our boss have the system administration contact information? Or maybe even us lowly developers?

Also, squirting off emails that you are starting/finishing things is really useful. Or send an email every 30-60 minutes with status. Or jump on IRC/IM and let the very tense developer/QA/business teams know you are still working.

Stick to the schedule

When you have 15 people waiting on you, start the deployment on time. Besides the simple expense of keeping that many people on the clock, delaying a start on people who have already been there for 8 hours is a good way to earn developer/QA/management enmity. Then you'll wonder why they always blame you right off the bat.

Follow the deployment instructions

When it comes to deployment, the hard truth is that your job as a system administrator is to follow instructions. Don't improvise. If the developer instructions don't work (for example, changing to a non-existent directory), don't fix the problem right then and there by opening files and twiddling stuff. Instead, it's time to call this a failed deployment.

That might make you look bad in the short run. Developers might howl. Sometimes you just have to stand firm. A good way to address this issue is to ask to look at a project's deployment instructions before the deployment date. Which brings us to the next point...

Review the deployment instructions early

Smart developers run their deployment instructions early past a system administrator. Take a good hard look at what they are trying to do and let them know if they are doing anything wrong. Good developers will really appreciate what you are doing for them.

Clone the production environment daily

Its 2009. Shouldn't we have fresh staging servers every morning for continuous integration? Yes, I know that when you built server X it matched server Y, but that was 6 months ago. Things have changed on both servers. A smart system administrator can script this out, or so they always tell me...

Communication is king II

So the deployment had problems. Or maybe it didn't. Maybe you had to do a tiny tweak on the instructions to turn an understandable developer mistake into a shining success. Here is what you can do to help defend yourself when things go wrong and to provide developers with a window into what you are doing.

Share the bash session history by use of the Tee command, the logs, and everything else. Without us asking for it! Dump the data and make it easy for us to find. We'll appreciate it and so will you.

Wednesday, October 7, 2009

Have you signed up for the Django Master Class?

Django chief maintainer Jacob Kaplan-Moss is teaching a master level Django class in the Washington, DC area (actually in Springfield, VA) this October 16th.

Jacob Kaplan-Moss is one of the chief maintainers (BDFL) of the Django project. Besides being a technical guru and good teacher, Jacob is a great guy. Approachable, funny, and taught me about anchovies.

Django Master Class

Lets go over some of the hidden perks that the class description does not provide:
  • Even if you know Django already and have memorized the documentation you are sure to pick up some choice bits! BDFL FTW!
  • Ask questions at any time!
  • Provided 8 a.m. breakfast (so get there early!)
  • Provided Lunch
  • Dinner afterward with lots of fun local Django/Python people including Steve Holden
  • Accessible by metro, bus, and car
  • Lots of cheap hotels to stay at nearby so you get good sleep before and after class.

I'm signed up. Are you?

Wednesday, September 30, 2009

Djangonaut Lunch in Crystal City

Django and Python developers from NASA and PBS will be gathering along with various Django/Python friends for lunch this Friday (October 2, 2009) in Crystal City, Virginia. We should also have representation from the Python Software Foundation. Join us for an afternoon meal to discuss Django, Python, local collaboration, and various other community activities.

Details are as follows:

Time:
Friday, October 2, 2009 at 1:00 PM
Restaurant:
Kora restaurant | bar | lounge
571-431-7090
2250-B Crystal Drive
Arlington, VA 22202
Reservations were made in the name of Katie Cunningham.

If you intend to come, please let us know in the comments.

Tuesday, September 29, 2009

Something I learned at DjangoCon

That is me in the blue shirt doing Capoeira! The other videos aren't as good as this one. Of course, in general I look pretty sloppy - something I will have to fix!

I found what might be a pretty good place in DC for doing Capoeira, the aptly named Capoeira DC. I'm really thinking of getting into this, at least on Saturday afternoons.

Django brought me to Capoeira. Another reason for the world to use Django!

Monday, September 21, 2009

Looking for work?

Looks like we are hiring again! Who are we? We are contractors for NASA's Science Mission Directorate! We are looking for Django developers or experienced Python developers who want to learn Django to come and help us do awesome stuff for NASA. Experience with CSS, JavaScript, Subversion, Linux, and experience with contributing to open source projects are definite pluses.

Before you apply you need to pass this little test of mine. If you fail any portion of this test we won't consider hiring you.
  1. Are you a U.S Citizen? Yes, there are brilliant non-U.S. Citizens we really want to hire but according to the unchangeable rules we can't hire them. No exceptions. You need to be a U.S. Citizen.
  2. Can you get to the office? You need to be able to get into Crystal City, Arlington, Virginia every day of the work week. No telecommuters!
  3. Do you know Python? Sorry, but we aren't looking for Foxpro developers.
  4. Are you a developer? I will throw away anything from a recruiter.
  5. Can you send your resume to my email address?
The email address you need to send it to can be generated by running these two lines of code:
numbers = [100, 97, 110, 105, 101, 108, 46, 103, 114, 101, 101, 110, 102, 101, 108, 100, 45, 49, 64, 110, 97, 115, 97, 46, 103, 111, 118]

''.join([chr(x) for x in numbers])

Sunday, September 20, 2009

Pycon talk thoughts

Back at the start of this month I posted my thoughts about sessions I was considering giving at Pycon 2010. They ones I've killed are:
  • How to suffer through SOAP web services using Python even though REST is so much better (I might be too bitter for this one).
The general response to this one has been that SOAP is icky. I think SOAP is icky. Why should I present on a topic I loathe and I'm mildly bitter about? So I'm not going to do this presentation.
  • Why I like stupid template languages (expanding on a tangent of this article).
I think this might make for a good NOVA-DUG talk or a blog rant but I don't think it would work for a pycon talk. So we'll consider it nixed.
  • Lets move widgets into HTML templates and out of python code! Modern JavaScript libraries makes this easy!
I think this design pattern makes for a good NOVA-DUG talk or a blog post. Not enough for a pycon talk.
The one I submitted to Pycon:
I've already submitted this to Pycon. It went well enough at DjangoCon and we've already made changes to things so its just plain better.
The one I'm considering:
  • Why and how to make accessible508 compliant AJAXified python applications.
Actually, this one is interesting. The focus would be on things and focus on 508/accessibility issues and degradable AJAX. I would explain why 508/accessibility is important. I would demonstrate how to construct an examples using several python frameworks (Django, TurboGears, and repoze.BFG come to mind) and maybe more than one JavaScript framework (JQuery, YUI, et al).
I could certainly give that talk in 30 or 45 minutes. My concern though is just plain getting ready for the talk. It would be a lot of work in research of unfamiliar frameworks and just plain coming up with working material. Add to that selling of the house, work on a professional side project, running NOVA-DUG, working a full time job, my normal teaching schedule, leading the Django Education Foundation forward, maybe starting up Capoeira, and maybe doing some things for the Django Software Foundation, and I'm not seeing it in my schedule.

One more thing: at Pycon I want to learn! I'm not sure I want to be involved in giving too many talks since those will eat precious listening time.

I think what I will do for now cook this up as a Django + JQuery + 508 presentation for NOVA-DUG and see where it takes me.

Friday, September 18, 2009

Slides from DjangoCon 2009

James Tauber and I presented a tutorial at DjangoCon. The presentation well until a gaff near the end. We are changing things a bit and presenting this again at Pycon (if we are accepted). My slides are up!

http://www.slideshare.net/pydanny/pinax-tutorial-090909


Bonus points to anyone who identifies the mistakes in the slides.