An Interview with Adrian Holovaty - Creator of Django

By : Shabda Raaj

Adrian Holovaty is the co-creator of Django, author of the Django book and is currently the BDFL of Django along with Jacob Kaplan-Moss. He studied journalism at University of Missouri–Columbia and has worked with many news sites including Lawrence Journal World and Washington Post. He currently works at EveryBlock, a startup he founded.


Shabda: Would you tell a little about yourself? You majored in Journalism, how did you move to Programming?

Adrian: Sure! I have a dual background in journalism and computer science. I intended to get a degree in journalism and a minor in computer science, but things got a little off track. I heard from a professional colleague that a certain Web site would probably hire me if I graduated a semester early, so I hurriedly dropped my CS minor and got special permission to graduate early -- but once the time came to ask for that job, the company was in the middle of a hiring freeze and didn't have a position for me. So, in hindsight, I should've stuck with the minor, but things ended up working out OK.

Because journalism and computer science don't normally go together, I've had some success in this silly little niche of employing Web development in news organizations -- "journalism via computer programming." Professionally, I've always worked as a Web developer at news organizations, up until my current gig, which is to run EveryBlock. But in its own way, it's a news organization as well.

Aside from all of that, I'm quite into music, particularly gypsy jazz, which is the music of Django Reinhardt (hence the name of the Web framework). I just recently attended a week-long gypsy jazz guitar camp in Massachusetts and had a tremendous time staying up until early hours of the morning jamming with great musicians from various parts of the world. If money were no object, I would love to play music full time. In the meantime, I'll settle for posting YouTube videos of my guitar playing, for an audience that seems to be comprised mostly of 16-year-old boys who constantly pester me for transcriptions of my arrangements.

I live with my wife in the beautiful city of Chicago.

Shabda: What are your current roles and responsibilities at Django?

Adrian: Well, I co-created Django back in 2003 with my friend Simon Willison while we were working together. Now, along with Jacob Kaplan-Moss, I'm Benevolent Dictator For Life of the project -- a title we shamelessly ripped off from Guido/Python. This means that I have a hand in all sorts of things, from high-level API design to checking in patches and fixing bugs. I've touched probably every bit of the framework over the years, including implementing the initial ORM (back when it was a code generator!), pair-programming the original Django template system and URLconf/view framework with Simon and building the original admin application with design help from Wilson Miner.

One of the things I enjoy the most is writing documentation -- both because I like technical writing and because I cannot stand bad open-source documentation.

Shabda: Can you describe the philosophy behind Django. What are its overarching goals?

Adrian: A couple of years ago, I wrote the "Design philosophies" document, which sums up the main points nicely.

Generally, the goal is to make Web development fast, fun and easy for the developer, while keeping performance as fast as possible and code as easy to understand as possible.

Shabda: How did the move at WorldOnline from PHP to Python happen? Why did you start from scratch (which finally lead to creation of Django), instead of using something like Zope?

Adrian: Simon and I had been big fans of Mark Pilgrim (and still are!), and we'd read his online book "Dive Into Python." This was around the same time that the PHP "infrastructure" I'd developed had begun to feel really, really crufty, so...one day we just decided to start using Python! It's quite nice working at a small organization with a very loose management structure; our boss, Rob Curley, was cool enough to let the developers themselves decide which technologies to use, as long as the work got done. "I don't care how the sausage is made," he always used to say.

We looked at the existing Python Web frameworks/libraries, but none of them felt 100% right to us. Simon and I are both quite into best practices, such as clean URLs, proper use of GET vs. POST, etc., so we were very picky in our analysis of those existing tools.

Shabda: Can you tell us about Everyblock? Why did you choose to create your own mapping engine instead of using something like Google Maps? How hard has it been creating a new mapping engine?

Adrian: EveryBlock is the project I lead for my day job. It's funded by a two-year grant from the Knight Foundation, and the goal is to experiment with block-specific news -- that is, the site lets you enter an address (currently only in Chicago, New York City and San Francisco) and view recent news within a very tight radius of that address. I'm pretty confident it's the most granular attempt at local news ever attempted on the Web. Nobody else is crazy enough to do it, I guess!

We do a TON of work collecting local information, normalizing it and pulling it together for people in one place. A large part of what we publish is government data such as crime reports, restaurant inspections, building permits, business licenses...and even local movie filmings. Much of this stuff either is buried in "deep Web" government databases or has never before been available online. A second part of what we do is detecting addresses and locations in news articles and blog entries. Plus, we pull in various other geographic Web stuff like Flickr photos and Yelp reviews.

All in all, our goal is to show you recent, geographically relevant stuff that you might not have heard about. Say the local newspaper wrote something about your neighborhood on page B-23 -- would you really have noticed that article? Say there was an aggravated assault on your block -- would you really have remembered to check your police department's crime-reports Web site on a daily basis? That's the basic philosophy.

Regarding our custom mapping engine...Let's face it: Google Maps is so passe. As one of the original Google Maps mashup guys (I developed chicagocrime.org by reverse-engineering Google's JavaScript, before the API was released), I have all the respect in the world for what Google has done to invigorate the world of Web maps. But it's time to take the next step. The Google Maps API doesn't give you any control over the colors of the map tiles, or change the fonts in street labels, or disable building footprints, or hide one-way street markers or subway stations or bus stops or any of the other stuff that's essentially hard-coded in the map. So, at EveryBlock, we rolled our own maps so we could have much, much more fine-grained control over all of these things. Not to mention it's a great way to differentiate ourselves from the 2.5 million boring, same-old-yellow-blue-orange Google Maps mashups out there.

Paul Smith from the EveryBlock team has written an article at A List Apart with more of the technical specifics.

Shabda: As per the Knight grant rules, you would be releasing the code for Everyblock next year. Would you not be giving away your secret sauce? How do you plan to maintain competitive advantage once that code is freely avaliable under a permissive license?

Adrian: Our competitive advantage is that we're an incredible team, and I'm sure we'll come up with a way to feed our families.

Shabda: What problems would you like Django to tackle after 1.0? What big features would you be most interested in having in Django, after it hits 1.0?

Adrian: Generally I'd like to add higher and higher levels of abstraction to the framework. The Django admin application is a good example of that -- it's not just an abstraction of an HTTP request; it's an abstraction of an entire Web application! We should do more of those.

Shabda: What is one thing about Django which you absolutely love, and one thing which you think Django should do differently?

Adrian: I love the way URLconfs work -- like a table of contents for your Web app. I also love template inheritance. I don't love the fact that we're generally slow in keeping up with tickets and feature requests.

Shabda: A lot of people these days have to evaluate between Django and ROR. How can they make this decision? When should Adrian Holovaty use ROR? When should DHH use Django?

Adrian: My answer is simple: Try out both frameworks and see which one you like better.

Shabda: Does Django need to market itself differently? What can Django community do for this?

Adrian: I'm comfortable with the amount of attention (or lack thereof, depending on your perspective) that our project gets. I'm comfortable with the size of the community. I'm comfortable with the fact that the right people have found out about it through word of mouth, books, blogs, Google App Engine or wherever else. If things continue at their current rate, we'll continue to do just fine, as a healthy open-source project.

The one thing I'd ask the community to do is to continue staying civil, polite and approachable.

Shabda: What does the phrase 'journalism via computer programming' mean? How can these two divergent fields be tied together?

Adrian: "Journalism via computer programming," in my opinion, is when a journalist writes code to tell a story. Instead of talking on the phone with sources to gather facts, this could involve screen-scraping Web sites to gather raw data. Instead of writing a newspaper article, this could involve building a database-driven Web site.

Journalism has several subdisciplines -- photography, information graphics, video. I advocate that computer programming should be another one of those subdisciplines. Just as a newspaper employs photographers and graphic artists, it should employ programmers who help gather information and tell stories with it.

Shabda: How can traditional journalists do more 'journalism via computer programming'? How can programmers do more 'journalism via computer programming'? Is it easier for Programmers to move to this field, or for Journalists?

Adrian: I believe it's easier for programmers to become journalists than it is for journalists to become programmers, but both sides need to gain an appreciation for the other in order for this sort of thing to happen more often. Fortunately, some news organizations are starting to hire developers with this in mind, and some geeks are realizing journalism is a great, (mostly) pure field that lets you improve the world through information.

One concrete thing programmers can do is to look for jobs at news organizations, which desperately need technical talent. Developers, you will be loved, you will be treated like geniuses, and your non-techie coworkers will be very easily impressed!

Another route programmers can take is to get training in journalism -- in fact, Northwestern University's journalism school is giving out full-tuition scholarships for programmers who want to learn journalism.

Shabda: Thanks Adrian.


This was Adrian's interview, the last in django-interviews series. But we have a lot of interesting things coming up, so stay tuned.


Related Posts


Can we help you build amazing apps? Contact us today.

Comments

Joseph

One of things that I liked about Django is the 'humility' of the developers and 'support' nature of the community. These folks don't go around saying, 'we-are-the-best-all-rest-are-crap'. It should be fun hanging around I guess.

commmenttor
web design company


I live with my wife in the beautiful city of Chicago. He'll be sleeping in the dog house tonight.

commmenttor
shabda

Joseph: It is really fun. Come in, you wont be disappointed.

commmenttor
Michael Thompson

One of the main reasons I jumped from RoR to Django was the documentation.

The community and the admin interface are both wonderful, but the documentation is what sold me.

Thanks, BDFL.

commmenttor
Noah Gift

Shabda and Adrian,

Thanks for the great interview. I am co-authoring a book on Google App Engine right now, so I thought I would make one small clarification about Django on App Engine, per Adrian's comments. Hopefully this can be helpful for people new to Python that are interested in developing on the app engine.

There is no "officially" support web framework on Google App Engine, and fully supporting a 3rd party framework wouldn't really make a lot of sense at first anyway because of how different the Google App Engine environment really is. Further more Google has stated they will not support any third party libraries, they will leave this up to the larger community to do on their own. But, how different is it really?

The Google App Engine is a CGI based environment for one. Second it has a distributed non-relational database. Third there are many Python modules that are not supported due to security concerns. Fitting an existing web framework into this much different environment probably doesn't make a whole lot of sense, although stealing some components does.

So what does a developer new to App Engine do then? They should probably focus on using the default web application framework webapp. The current documentation available from Google centers around using this hybrid webframework that Google invented.

One of the more fascinating parts of App Engine, and probably the cause of some confusion about people thinking Django is the framework App Engine uses, is that they took pieces from 3rd party projects such as Django, and WebOb, and then combined them with Google APIs, such as the Datastore API.

This approach is really an interesting approach as it is an actual forks pieces of Django, and is perhaps a model for a future version of Django that incorporates components from the larger Python community that they did not develop internally, something which Django has not yet done, other than accept patches.

If someone is interesting in understanding more about the guts of the webapp framework that Google App Engine uses they may want to read Ian Bicking's blog, and also view the documentation for WebOb here: http://pythonpaste.org/webob/

commmenttor
Empty

Shabda, great interview as always. Thank you so much for doing these. I always learn so much. Adrian is truly an impressive individual.

commmenttor
valliappan

Glad to read the interview of Mr Adrian Holovathy. We also are into developing projects using python in django framework. Trainers interested in training django please contact at valliappan.mba@gmail.com

commmenttor
Aatmesh

Shabda,
How did u interview them?

Through chat?

Aatmesh

commmenttor
sam 20th Jan., 2009

good interview

commmenttor
timothy

The question "How can traditional journalists do more ‘journalism via computer programming’?" was not addressed opther than to say that it's easier for programmers to become journalists. Does anyone have experience with journalists who have become programmers? What path was taken? How did their organization support them in their quest?

commmenttor
tridcatminru

Ремонт ноутбуков Москва, ремонт материнских плат ноутбуков, ремонт матриц ноутбуков, замена матрицы ноутбука, замена разъёмов ноутбука, модернизация ноутбуков, ремонт залитых ноутбуков.

commmenttor
megamen 22nd March, 2009

Да вот тут посмотри http://colesofortuni.ru/
Неделю тоже смотрел информацию на сайтах, отдохнуть захотел, оказываеться они там нетолько продажей недвижимости в Испании занимаються, но и идеальное место для отдыха.
Собираюсь посмотреть их рекламируемые горные пейзажи и песчаные пляжи с голубыми лагунами.

commmenttor
Weblomaster 24th March, 2009

Привет всем форумчанам.
Возник такой вопрос, имеется сайт и его надо раскрутить, насколько я знаю самый действенный способ это регистрация в каталогах, сейчас нащёл вот этот сервис.
F1.CompARTia.ru качественная регистрация сайтов в каталогах
, но информации о нем раскопал маловато, Может кто им пользовался? Хотелось бы услышать отзывы и мнения.

Ссори если запостил не в тему, просто не знал куда можно написать, если можно перенисите куда надо.

commmenttor
minimenss

Подсажите, как настроить антивирус Symantec Client Security? Скачал здесь http://antivirus.hop.ru вроде бесплатно, а описания и инструкции по настройке нет. Два часа в инете искал, так и не нашел. Может есть у кого? Проблема в том, что после установки антивирь обновляется, а доступ в инет остальным программам закрыт. Прописывал в фаервол вручную - не помогло. В чем может быть проблема? Памагитееее!

commmenttor
moloirrasse

Homo sum et nihil humani a me alienum puto

commmenttor
stahanovetzzz 4th March, 2010

Недавно слушал радио Максимум и наткнулся на песню парнишки, который,
как я потом узнал, творит под псевдонимом Decorator.
Нашел его страничку в интернете. Там лежат 10 его песен.
Прослушал всё. Сказать, что впечатлило, значит ничего не сказать... очень необычно!!!
Музыка отличная, мелодии прямо с первого прослушивания поселяются в мозгу,
тексты - правда жизни и образец хорошего русского языка!

Про стиль этой музыки даже сказать ничего не могу, поскольку сталкиваюсь с таким впервые..

Вот адрес его странички: http://www.myspace.com/alvikpet

Заходите, слушайте песни! Не пожалеете! И уж точно никто не останется равнодушным...

commmenttor
rusfingroup.

Приглашаем пользователей в вашу группу/встречу.

Количество приглашений - Стоимость
1000 приглашений/ 90рублей
5000 приглашений/ 300рублей
10000 приглашений/ 500 рублей
20000 приглашений/ 900 рублей
После 20000 приглашений Каждые 1000 приглашений = 50рублей

Цены по критериям от 100р за 1000 приглашений.

Оплата принимается с помощью WebMoney или Yandex.Деньги.

контаты: icq 822336
email: manager@rusfingroup.com
сайт http://rusfingroup.com

commmenttor
rewunrearolaf 4th Jan., 2011

boletin asma allergia zenzero jasmine boutons concerta versus strattera strattera effets secondaires sersrt levitra commenti l-carnitine plus ??‚??­??‡?????—??‰ migraine sans douleur jasminelle perte de poids brevet viagra anti impuissance

commmenttor
timberland online shop

Thanks a bunch for sharing this with all people you really recognise what you're speaking about! Bookmarked. Kindly also visit my web site =). We could have a hyperlink alternate agreement between us

commmenttor
© Agiliq, 2009-2012