This document summarizes a presentation on web design and development given by D. Keith Robinson and Jeff Croft of Blue Flavor on October 3rd and 4th, 2008. It introduces Robinson and Croft and their backgrounds in web design. It then discusses choosing content management systems (CMS), including buying existing CMSs, building custom CMSs, and using frameworks. It focuses on Django as a framework that encourages rapid development while maintaining clean code. The document provides an overview of Model-View-Controller design and notes that Django follows this pattern with some different terminology.
Breaking the Kubernetes Kill Chain: Host Path Mount
Webmaster Jam Session: Design and Development Behind the Scenes Day Two
1. Web Design and Development:
Behind the Scenes
D. Keith Robinson & Jeff Croft, October 3 & 4, 2008
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
2. Welcome to day two.
We’re going to rock your world—again.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
3. D. Keith Robinson
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
4. D. Keith Robinson
• Principle & Creative Director for Blue Flavor
• Based in Seattle, Washington
• Over 12 years designing for web, etc.
• Has worked internally for large companies (Boeing, Children’s Hospital
Seattle)
• Has worked as a consultant for companies large and small.
• Recent clients include New York Review of Books, thePlatform, PayPal
• Also done some time as Associate Editor of Lifehacker
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
5. Jeff Cro
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
6. Jeff Cro
• Designer and developer at Blue Flavor
• Calls Seattle home, but temporarily living close to family in Kansas City
• Been working on the web full-time since 1994.
• Has worked in-house at Universities and newspaper companies
• Worked at the birthplace of Django in Lawrence, KS
• Has co-authored two books: Pro CSS Techniques, and Web
Standards Creativity
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
7. One small leaf...
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
8. Blue Flavor
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
9. Blue Flavor
• Founded in Seattle, Washington in 2005.
• 7 employees at the moment.
• Focused on design, standards-based development and CMS dev/
deployment.
• Client list includes Boeing, Comcast, PayPal, New York Review of
Books, Mithun, Houston Chronicle and Skydeck.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
10. Web Design and Development: Behind the Scenes
Day Two: Development and Implementation
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
11. Web Design and Development: Behind the Scenes
Day Two: Development and Implementation
• Choosing a CMS: buy it or build it?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
12. Web Design and Development: Behind the Scenes
Day Two: Development and Implementation
• Choosing a CMS: buy it or build it?
• The power of frameworks
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
13. Web Design and Development: Behind the Scenes
Day Two: Development and Implementation
• Choosing a CMS: buy it or build it?
• The power of frameworks
• Django: The Web framework for perfectionists with deadlines.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
14. Web Design and Development: Behind the Scenes
Day Two: Development and Implementation
• Choosing a CMS: buy it or build it?
• The power of frameworks
• Django: The Web framework for perfectionists with deadlines.
• Front-end frameworks: Blueprint and jQuery.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
15. ?
Let ‘em fly.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
16. CMS strategy.
Buy it or build it?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
17. ?
How do you choose a CMS?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
18. Start with people.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
19. Content management is a
people process, not a
technology process.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
20. But there is technology
that can help.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
21. Inventory your content types
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
22. What sorts of content do you
manage?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
23. How much structure
do you need?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
24. Structured versus
unstructured data
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
25. Example: Birth listing in a newspaper
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
26. Example: Birth listing in a newspaper
• What attributes does it have? Date. Mom’s name. Dad’s name. Baby’s
name. Hospital. Weight. Length. And so forth.
•In a structured data CMS, you’d have fields for each of these attributes.
•In a less structured CMS, you might have fields like “date”, “title”, and
“body.”
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
27. Structured data advantages
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
28. Structured data advantages
• More searchable, sortable, and linkable.
• More flexible for display in templates.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
30. Unstructured data advantages
• Arguably simpler/faster data entry.
• Easier to build (this only matters if you’re building your own).
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
31. Three main types of CMSes
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
32. Lightweight, low-cost tools, generally
designed for blogging
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
33. Lightweight, low-cost tools, generally
designed for blogging
• Examples: Wordpress, Moveable Type, ExpressionEngine (although EE
is growing its way out of this category)
• Good data structure, but only for blogging. As soon as you try to make
Wordpress a photo gallery, you’re now using a bad data structure for your
content.
• Well-tested, fast, lightweight, easy to install, supported on many hosts,
good support and communities.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
34. Niche products for a specific content
content type or industry
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
35. Niche products for a specific content
content type or industry
• Examples: Learning Management Systems, Ellington (for newspapers)
• Generally provide very well-structured data models, as long as you’re
the target audience.
• Hit-or-miss in terms of support, community, and performance. Be sure
to shop around and do your research before choosing one.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
36. “Enterprise” CMSes
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
37. “Enterprise” CMSes
• Who knows?
• Such a mixed bag, it’s hard to evaluate them as a group.
• Overkill for most organizations. If you can’t articulate why you need
“enterprise,” you probably don’t.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
38. e fourth option: Build your own.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
39. e fourth option: Build your own.
• Today, it’s easy. Thanks to tools like Rails, Django, Symfony, Cake, and
the like, it’s a lot more cost and time efficient to do this than before.
• You get exactly what you want. This is the holy grail. Exactly the data
models, exactly the URLs, exactly the everything that you always wanted.
• It does take work, especially when it comes to maintenance. You are
your own support (although choosing a platform like Django or Rails will
give you a good community to work within).
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
40. Blue Flavor’s Goals
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
41. Goal: Work with the resources
we have.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
42. Goal: Maintain complete control
over our markup.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
43. Goal: Relaunch the site without
slowing down on client work.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
44. Frameworks.
Making your life easier through reusability.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
45. What is a framework?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
46. Web frameworks for many languages
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
47. Web frameworks for many languages
• Server-side: Python (Django, TurboGears, Pylons), Ruby (Rails, Merb,
Camping), PHP (Cake, Symfony, CodeIgnighter), Java (Struts, Spring,
GWT), C# (.NET), etc.
• Client-side: JavaScript (jQuery, Prototype, YUI, MooTools), CSS
(Blueprint, Tripoli, YUI, Boilerplate, 960.gs)
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
48. Common framework goals
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
49. Common framework goals
• Handle the routine tasks for you—or at least make them really easy.
• Help keep you DRY.
• Encourage you to do things in an elegant way.
• Provide cross-browser compatibility out of the box.
• Make web development fun again!
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
50. Why would you use one?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
51. Framework advantages
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
52. Framework advantages
• Will almost always make your development process faster.
• Will help in team environments by keeping everyone on the same page
as far as coding styles and conventions.
• Very flexible and extensible. A good framework doesn’t force you to
work within it, but rather provides tools you can use or not use as your
discretion. You can always write your own pieces to use alongside the
framework.
• Well-tested by many people, and are updated all the time. Less bug-
fixing for you!
• Support and community.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
53. Are there downsides?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
54. Framework disadvantages
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
55. Framework disadvantages
• You get more code than you probably need (some would say they can
be “bloated”).
• There is a learning curve.
• Some frameworks encourage you to learn the framework and not the
underlying language.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
56. How do you choose one?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
57. Choosing a framework
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
58. Choosing a framework
• Language first. Pick one in a language you’re comfortable with (unless
you’re specifically looking to learn a new language).
• Choose a framework that helps you learn the underlying language, not
one that makes you learn a “meta language.”
• Choose one that has good documentation and a good community.
• Look for a framework that has plenty of “hooks” for flexibility and one
that doesn’t mind you stepping outside of it.
• Choose one that “feels right” to you, especially in terms of just how
much stuff it provides “for free.”
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
59. Django.
The Web framework for perfections with deadlines.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
60. “Django is a high-level Python web amework
that encourages rapid development and
clean, pragmatic design.”
http://djangoproject.com/
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
61. “high level Python web framework...”
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
62. “high level Python web framework...”
• A web framework attempts to abstract routine development
tasks by providing shortcuts.
• Examples: dealing with HTTP, connecting to a database, managing
users and groups, generating feeds, etc.
• You should always be able to “step down a level.”
• Django is built on Python, an established high-level language
used heavily at Google, Yahoo, CERN, and NASA.
• Django makes a point of not changing anything about the way
Python works. If you learn Django, you’re learning Python—and
vice-versa.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
64. “...encourages rapid development...”
• Saving you time is one of Django’s primary goals.
• Django was created in the fast-paced news world, and was
designed around a real-world need to develop sites in a matter
of hours, not days or weeks.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
66. “...clean, pragmatic design.”
• Django is opinionated software. It firmly believes there is a “right”
way to do many things.
• It tries to make it as easy as possible to do things the “right”
way. Django helps you subscribe to best practices by making
them simple.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
67. A note about MVC
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
68. A note about MVC
• Django roughly follows the Model-View-Controller programming
paradigm. However, it does deviate from it slightly in a few ways,
where it makes sense.
• Django uses different terminology. The three main components
of Django are Models, Templates, and Views (MTV). Django’s URL
dispatcher is a smaller, fourth component.
• Don’t ask me why Django used different terminology. I don’t know. :)
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
69. Brief history of Django
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
70. Brief history of Django
• Created in 2003 at The World Company in Lawrence, KS, by Adrian
Holovaty and Simon Willison.
• Django was released as open source software in the summer of 2005.
• In 2007, there were 14 Django-powered sites among the finalists in 11
categories for the Digital Edge online journalism awards.
• Django 1.0 was released on September 2nd, 2008.
• Django is in use at major internet companies including Yahoo, Google,
and Digg/Pownce.
• Google has made Django the basis for its App Engine platform.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
71. Django projects and apps
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
72. Projects in Django
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
73. Projects in Django
• A project is a configuration for an instance of Django.
• It contains things like database settings, filesystem paths, and so forth.
It may also contain settings for applications (more on applications soon).
• It also contains a list of the applications your project will be using.
• Usually, a project is associated with a single website—each website
has a project that controls it.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
74. “Apps” in Django
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
75. “Apps” in Django
• An “app” in Django is a collection of code that makes up some sort of
functionality for your website.
• A typical project will use several apps.
• Apps can be reused between projects: this is one of Django’s coolest
features.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
76. Let’s say you have three sites:
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
77. Let’s say you have three sites:
• First, you have a personal site. It includes a blog with tags and
comments, a photo gallery, some “static” pages, and contact form.
• You also have a Digg-style social news site. It contains stories with tags
and comments, the ability for users to vote on stories, some “static”
pages, and a contact form.
• You also have a movie review site. It contains a database of movies
with tags, your reviews with tags and comments, the ability for users to
vote on movies, some “static” pages, and a contact form.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
78. You only need nine reusable “apps”:
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
79. You only need nine reusable “apps”:
• Blog entries and archives
• Photo galleries
• User comments
• Tagging functionality
• News stories and archives
• Movie database
• Movie reviews and archives
• “Static” pages
• Contact form
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
80. Most of these already exist:
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
81. Most of these already exist:
• Django comes with a user comments app.
• Django also comes with an app for handling “static” pages.
• django-tagging allows you to add tags to any item in your database.
• django-voting allows users to vote on any item in your database.
• django-contact-form provides basic contact form functionality.
• There are several available blog and photo gallery applications.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
82. “Pluggable apps are Django’s killer app.”
–James Bennett
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
83. Django’s automatic admin
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
84. What is the Django admin?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
85. What is the Django admin?
• The Django admin is a app that is distributed with Django itself.
• It provides a powerful, customizable, production-ready interface to
creating, updating, and deleting instances of your models.
• It includes data entry validation, user and group permissions, and a log
of user activity in the Admin.
• It is designed for regular users. It was built at a newspaper so that
editors and producers could enter and update content.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
86. Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
87. Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
88. Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
89. Django’s template language is
pure gold for designers.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
90. What are Django templates?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
91. What are Django templates?
• While Django’s template language is most commonly used to generate
(X)HTML, it can actually be used to create any text-based file format (e-
mail, RSS, CSV, XML, YAML, etc.).
• Django’s template language was designed to be usable by designers
and HTML authors. It should not require a programmer to operate it.
•You have complete control over your markup. The same can not be
said about many off-the-shelf CMSes.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
92. Variables
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
93. Variables
<!DOCTYPE HTML PUBLIC quot;-//W3C//DTD HTML 4.01//ENquot;>
<html lang=quot;enquot;>
<head><title>People</title></head>
<body>
<h1>{{ person.first_name }} {{ person.last_name }}</h1>
<p>{{ person.bio }}</p>
</body>
</html>
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
94. Filters
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
95. Filters
<!DOCTYPE HTML PUBLIC quot;-//W3C//DTD HTML 4.01//ENquot;>
<html lang=quot;enquot;>
<head><title>People</title></head>
<body>
<h1>People ({{ people_list|length }} total)</h1>
<ul>
{% for p in person_list %}
<li>
<a href=quot;{{ p.last_name }}/quot;>
{{ p.first_name|capfirst }}{{ p.last_name|striptags }}
</a>
</li>
{% endfor %}
</ul>
</body>
</html>
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
96. Tags
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
97. Tags
<!DOCTYPE HTML PUBLIC quot;-//W3C//DTD HTML 4.01//ENquot;>
<html lang=quot;enquot;>
<head><title>People</title></head>
<body>
<h1>People ({{ people_list|length }} total)</h1>
<ul>
{% for p in person_list %}
<li>
<a href=quot;{{ p.last_name }}/quot;>
{{ p.first_name }}{{ p.last_name }}
</a>
</li>
{% endfor %}
</ul>
</body>
</html>
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
98. Template inheritance
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
99. Template inheritance
• Django’s template language includes an inheritance mechanism that is
both extremely powerful and sort of hard to get your head around at first.
• You might think of it as an updated (if backwards) take on “includes,”
which you may have used in the past (SSI, PHP includes, etc.)
• The core problem inheritance is trying to solve is one of repeated code.
Ideally, you Don’t Repeat Yourself (DRY), and any time you need to make
changes to template code, you only have to do it in one place.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
100. “Blocks”
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
101. “Blocks”
• Django’s template inheritance centers around the idea of “blocks”. A
template can define “blocks”—essentially chunks another template can
override.
• A typical setup is to have a “base” template which provides a bunch of
empty blocks, and then “child” templates which fill them. In Django
parlance, child templates “extend” other templates.
• Extension doesn’t have to be only two level: you could have a “base”
template for your site, plus a template for a section of your site which
extends the base, plus a template that extends the section template. And
so on.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
102. A base template (base.html)
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
103. A base template (base.html)
<!DOCTYPE HTML PUBLIC quot;-//W3C//DTD HTML 4.01//ENquot;>
<html lang=quot;enquot;>
<head><title>{% block title %}{% endblock %}</title></
head>
<body>
<div id=”content”>
{% block content %}
<h1>Welcome to our site!</h1>
{% endblock %}
</div>
<div id=”footer”>
{% block footer %}
<p>Copyright 2008 Jeff Croft</p>
{% endblock %}
</div>
</body>
</html>
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
104. A child template (person.html)
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
105. A child template (person.html)
{% extends “base.html” %}
{% block title %}
{{ person.first_name }}{{ person.last_name }}
{% endblock %}
{% block content %}
<h1>About {{ person.first_name }}{{ person.last_name }}</h1>
{% endblock %}
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
106. Django give you pretty URLs
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
107. is is ugly!
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
108. is is ugly!
• page.php
• script.cgi?pageid=144
• StoryPage.aspx
• 0,2097,1-1-30-72-407-4752,00.html
• /stories/147/
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
109. URLs are a key part of your
user interface.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
110. Django URLs might look like this:
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
111. Django URLs might look like this:
• /stories/
• /stories/2008/apr/20/michelles-birthday/
• /categories/birthdays/
• Really, Django URLs can look any way you want them to—even the
ugly ways in the previous slide. But, this sort of scheme is typical. Django
uses regular expressions to map URLs. If you can write a regex for it, you
can use it for a URL.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
112. What else is in Django?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
113. Some of the things we didn’t cover:
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
114. Some of the things we didn’t cover:
• Database ORM: Never write SQL again!
• Forms: Handles HTML form display, data processing (validation) and
redisplay.
• Caching: Flexible caching at any level, using memcached, database,
local memory, or filesystem caching.
• Internationalization: Full support for internationalization of text.
• Sessions: Full support for anonymous, cookie-based sessions.
• Testing: Full testing suite included.
• Middleware: a framework of hooks into Django’s request/response
processing.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
115. Front-end frameworks, too.
Blueprint and jQuery.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
116. Blueprint: a CSS quickstart
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
117. Disclaimer: I’m biased (sort of )
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
118. Disclaimer: I’m biased (sort of )
• Blueprint was originally based on a CSS framework I wrote (with the
help of my team) for internal use at the Lawrence Journal-World
• Originally, Blueprint was very similar to our internal framework, and I
loved it.
• Since then, Blueprint has made some changes, my preferences have
changed a bit, and I love it a lot less.
• But it’s still the canonical example of a CSS framework, and it still works
well for many people.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
119. Blueprint provides:
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
120. Blueprint provides:
• Reset: resets default browser styles to give you a “blank slate.”
• Typography: A good, solid, baseline set of typographic rules that will get
you started on your way towards elegant web type.
• Forms: A set of baseline form styles.
• Grids: A set of styles that help you create grid-based layouts quickly
and easily.
• A few other things
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
121. Grids: e best and worst part
of Blueprint
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
122. Grids: e best and worst part
of Blueprint
• The grids component really does make creating grid-based layouts
remarkably easy.
• However, it uses a set of predefined class names that many consider
to be “unsemantic.” It also requires a lot of extraneous divs. These don’t
really cause real-world problems, but they do go against some well-
established best practices.
• Remember, you can use each part of Blueprint individually. If you don’t
like the grids component, you can still use the rest of it.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
123. Remember: these are baselines
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
124. Remember: these are baselines
• You’re supposed to override many of the styles. A lot of people that
discount the idea of CSS frameworks don’t seem to understand this.
• The goal is to get you started quickly by providing some sensible
default, baseline styles that you can override throughout the development
process.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
125. Blueprint for blueflavor.com
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
126. Blueprint for blueflavor.com
• We didn’t use the grid component
• The typography stuff came in handy for establishing a good
baseline grid.
• The reset was definitely useful
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
127. Would we choose it again?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
128. Would we choose it again?
• Probably, but we may also investigate lighter-weight frameworks.
• We may just write our own. We’re CSS gurus anyway, so we could do
it quickly and have exactly what we want. Remember, frameworks don’t
have to be a public thing—they can be just for you or your team, too.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
129. A brief word on JavaScript
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
130. blueflavor.com has very little of it.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
131. blueflavor.com has very little of it.
• Because of the nature of the site, we just didn’t use JavaScript
hardly at all.
• Thus, there is no discussion of a JavaScript framework here.
• For the curious, we typically prefer jQuery when we need to do heavy
JavaScript lifting.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
132. So How’d we do?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
133.
Goal: Work with the resources
we have.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
134.
Goal: Maintain control over
our markup.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
135.
Goal: Don’t let it get in the way
of the work that pays the bills.
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
136. anks!
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
137. ?
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008
138. Web Design and Development:
Behind the Scenes
D. Keith Robinson & Jeff Croft, October 3 & 4, 2008
http://www.blueflavor.com/
http://www.blueflavor.com/blog/
keith@blueflavor.com
jeff@blueflavor.com
Web Design and Development: Behind the Scenes, Webmaster Jam Session, October 2008