Category Archives: Web development

Web design is hard – and that’s a good thing.

So I had a slight crisis of faith the other day and I wrote, (whined?) about it on another, personal blog. I wrote about how much there is to learn, how I’d begun reading a forum and become hopelessly lost, how I get anxious when I read about coding stuff like frameworks and development methodologies, (I ended up reading about waterfall vs. agile just so I knew what the hell they were,) and don’t understand it… basically I’d gotten overwhelmed by it all. It happens.

The problem was that I think of myself as a pretty smart guy, I do ok in IQ tests and the like, although I didn’t excel academically, but I didn’t feel like I was ‘getting it’, or at least, not as quick as I wanted. I work in IT and I can reel off acronyms with the best of them and have trained myself over the last few years in things like network administration, desktop support, router configuration, DNS, DHCP, Active Directory, IIS, I’ve set up web servers and installed PHP and MySQL, I’ve learned enough of those two to write a call logging system… anyway, I cope well with having things thrown at me and having to go off and learn on my own.

So at the moment I read a lot of articles on everything from a beginners guide to creating a CMS in PHP to standards compliant CSS, to… whatever. I’ve bought a small shelf’s worth of books, the last one being Steve Krug’s “Don’t Make Me Think!” – an excellent book on common sense web usability, and I already plan to buy more – the next being Jeffrey Zeldman’s “Designing With Web Standards” and it’s starting to come together but, like I said, I was working on a site and I’d basically mirrored what they had and designed a logo and I took a step back and looked at it and… I hated it.

Now, I’m the sort of person that has been arty all my life. I used to draw constantly as a kid, whenever I wasn’t reading. (Or playing with Star Wars toys or Transformers.) I did art at school but never went to college for it. My drawing ability is above average but not amazing. (If you want to see something I drew, head over to my now abandoned-until-I-have-more-time-to-work-on-it comic strip, Exotic Soup, although I do other stuff.) Thing is I don’t have what you would call a natural ability with colour. I know a good colour scheme when I see one. I know a great layout when I see it, but putting a good colour scheme together is actually work for me. Putting together a layout requires some thought and planning. I can’t just reel them off.

I thought maybe I should rethink this whole web design thing. Maybe I’m just not cut out for it, I thought. I like coding sites. I’ve really enjoyed the work I’ve done so far on my company’s site converting it to CSS and XHTML from a table based design. That’s not much different from working on a photoshop comp right? Maybe I should just stick to that.

Then I was watching an episode of the West Wing, (I bought myself the full 7 series boxed set with my Christmas money, along with a few webdev books,) and there was an episode where two of the main characters meet a guy who is struggling to send his daughter to college and he turns to them and says:

It’s hard… I like that it’s hard though, it’s a man’s accomplishment.

And that got me thinking. I read the thoughts of some people in the industry and sure, some of them give the impression that it comes easily, but more often than not, they go through several pages of possible designs before they even open an editor and then they have to contend with accessibility issues, usability issues, browser inconsistancies, lack of support for fonts and a hundred other things they have to keep in mind – and that’s before the whole ‘client’ issue. They don’t generally just sit down, pop out a design on paper and then code it up. There are meetings, research, requirements surveys, accessibility testing, usability testing, debugging…

I bought some graph paper. I ran off some ideas and talked them over with my girlfriend. I tried different shapes and layouts and I’m starting to get somewhere. For colour, I went and spent some time with kuler. A friend recommended “Colour Index” by Jim Krause and it’s going on my ‘to buy’ list.

Maybe it shouldn’t be easy. Maybe, like many things, you have to work at it and earn it. Maybe, at this early stage, I can give myself a break for not knowing everything and look at what I’ve accomplished so far and say, “Not bad. I’ve taken my first steps on a long road.” The thing is, there’s only one way off the road – you can stop at any time and the road just dissapears from view in front of you. Or you can keep going, regardless of stumbles and maybe even the occasional fall and the road will keep pointing the way, onward to the horizon.

I’ve been putting off writing here because I kind of wanted to continue from where I left off and continue with the web standards trifle. That will now be next time, unless I have something else I want to say. In fact I’m going to start logging the articles I read each day as they may be of help to someone. The long ones will be the ‘ongoing story’ so to speak.

Here’s today’s:

Amusing web design pie chart. – some slight bad language, just so you’re warned.

Most used free fonts by designers.

Cheat sheets for web designers.

How to choose the right CMS.

Enjoy.

*Edited to include the History of the Internet Video.

Halp! What do I learn?

As detailed in my first post, I used to do a little table-based design some years ago and decided to get back into teaching myself web design and development. So, like a lot of people, my first thought was, “what do I need to learn?”

Firstly, it’s important to make a distinction between web designer and web developer. Web designers design websites. You knew that already? Then you’re ahead of the game.
Web developers write code and develop web applications.

The distinction is really between client side and server side. In practice it’s not as simple as that, as with many things, but the general rule of thumb will serve us well enough for now.

Roles

Designers tend to stick to client side stuff – content, markup, layouts, graphics. Your average decent designer will know XHTML, CSS, Photoshop or similar for creating graphics and more than likely, some Javascript/DOM (Document Object Model) scripting.

Developers will code in PHP, ASP, .NET (C# etc,) and have at least a working knowledge of relational databases, usually something SQL (Structured Query Language) based, like MySQL, SQL server or PostGreSQL.

Then you get networking bods who know how to set up and administrate a server, be it Windows or Linux/Unix based, along with web server software like Apache or IIS (Internet Information Services – Microsoft’s web server software, bundled with Server 2003 and the like. (It’s even in XP…)). They’ll probably know something about TCP/IP and DNS too.

Here’s the thing – I want to be able to do it all. At least a working knowledge of each area so I can set up a server, design and create a valid, standards-based site, connect it to a database so it can do fancy dynamic stuff and so on.

Start with what you know

Then figure out what you don’t know but probably need to know, then do some reading. LOTS of reading. And some practice. And reading. And practice. Ad Nauseum.

Well I know some Photoshop. A fair bit actually, since I’ve been working with it for about ten or so years, for everything from painting textures for 3D models to retouching glamour pictures, (strangely not that glamourous, but I doubt any part of the process is,) to designing graphics for the web.
I also know a little HTML – just enought to get by. I’ve also done a tiny bit of CSS, but a seriously tiny bit and also some Javascript. That’s a start. Since then I created a call logging app in PHP/MySQL and had a ball doing it, which is what made me think I could do this.
Lastly, I spend my days as the IT guy for a company, which involves everything from desktop support to server admin, to troubleshooting printers, to creating some static pages for our website to altering DNS records for our website. I’ve set up a few servers in my time, a couple of which were specifically web servers and I understand (the basics at least, of) TCP/IP.

All that stands me in pretty good stead.

Research and acronym overload

Looking through a few job ads for web design or development is a good way to gauge what potential employers are looking for, but can quickly get overwhelming. The skillset for some positions reads like an excerpt from “The world’s greatest confusing tech acronyms”. ASP.NET, PHP, XHTML, XML, XSLT, CSS, SQL… it’s enough to make a person’s head spin and start spewing pea soup.

“OK,” I thought to myself, “let’s start off with things I’ve heard of.”
HTML – I knew some of that from before. CSS I’d heard of and had a rough idea of what you could do with it after seeing a friend’s site. Javascript. Ugh. That sounded a little too much like Java to me.
PHP I’d heard of, as well as MySQL, but the latter only in passing. Perl – my friend who I used to work with before had said that was hard and he was a coder. Hmm.

First thing was to look into XHTML. I’d heard the term and knew it was either a newer version of HTML or else a different version that you could do cool stuff with.
The former was more correct, which is not to say that I don’t think XHTML is cool.

OK, lets start with what some of the terms stand for. HTML stands for HyperText Markup Language. Hypertext is the ability to use links to provide other documents and information, Markup means a type of code which denotes how the content will be structured or displayed and Language… well I’m sure you’re OK with that one.
HTML is the core of the World Wide Web as we know it. So what’s XHTML?

XHTML is defined as HTML reformulated as an application of XML. Make much sense?
The X stands for eXtensible (see what they did there?) and comes from XML, which stands for eXtensible Markup Language. XML is a language that coders can make up their own tags, in order to make new types of document, or even new languages. So XHTML is basically HTML that has been created through the XML language.

So? So what?

Well I’ll tell you. There were a lot of problems with HTML, (the last version of HTML before XHTML was v4,) some of which arose from the browser wars between Netscape and Microsoft, others from allowing coders to write code that was improperly nested like so:

<b><i>Wow! Check this improperly nested code out!</b></i>

Because the <b> element came first, the <i> element should be completely contained within it like this:

<b><i>Whew! That’s better.</i></b>

Also, you could leave out closing tags like this:

<p>Hey, I’m a paragraph! But where do I end?

<p>Here?

<p>Or maybe here?

and HTML would be nice and assume you meant to close the tags really, you just forgot becuase you were distracted by something – possibly a shiny penny on the floor or the sudden discovery that if you tried really hard, you could stumble across pictures of ladies with no clothes on on the web and things would generally be OK. That sounds pretty good right? You can code as sloppily as you like and HTML and the browser would play nice and your page would work. Sure it does.

Another big problem was that originally, the internet was text based, seeing as how it was originally created to help scientists share data and less about watching people hurt themselves in a stupid way or the world’s largest repository of boobies.
Anyway as things progressed, people figured it might be handy to be able to share images and other content and the Markup Language grew to accomodate this new functionality. Then people started to want to be able to add stylistic parts to web pages. Sure, hyperlinks were functional, but do they always have to be the same colour? Again, the markup language expanded to include more tags, aimed at being able to design and style the way your content was presented. Suddenly it was able to have aesthetically pleasing pages, (although at the time you’d be hard pressed to find one between the blinking text and gaudy fonts and colours – and the gifs. Oh the animated gifs!)
Over the course of time, visual design began to play a bigger role in creating web pages. Then it was married to the tenets of information architecture and content presentation and the new discipline of web design was created.

Somewhere along the way someone figured out that while it was great to be able to style your markup using things like <font> tags, it was actually pretty inefficient. Using inline style markup made the code longer, slower to load and harder to read. Using tables for positioning, while accurate and cross browser compatible, was also making the code longer, slower to load and even harder to read again, what with tables nested inside tables with spacer gifs to make sure it all lines up – there was so much code for presentation, the content was hard to find in amongst it all.

Finally, unable to take it any more, those web designers and developers who had brains and a passion for all things web screamed into the night in a collective howl:

“Oh god! How can we make it so content and style can live together in the same web page without the code looking like the insane ramblings of  a mad geek? Won’t somebody think of the children?”

And a cry came back from an uncertain location, reverberating in the ears of every webmaster worth their salt;

“I know what to do…” the disembodied voice dropped to a whisper and every geek felt the hair on the back of their neck stand up as the hoarse breath sighed, “we’ll seperate content and style…”

And there was much rejoicing.

OK, so maybe I used a little dramatic license there but it was a great idea and my next post will go into why.

So, before we go into the separation of style (and behaviour,) from content, I’m going to give you the rundown of what I am currently learning. It’s not the only way to do this and there may be other technologies I learn along the way but for now it’s:

XHTML – for content markup. Ubiquitous for web design.
CSS – for styling markup
Javascript – should really be called ECMAscript, but we’ll get into that later – for behavior, interaction and DOM scripting.
PHP – the most used server-side coding language on the web.
MySQL – the most used relational database system. Also, the SQL language.
Apache – the most used web server software on the web.
XML – mainly used for cross platform data exchange, but also a highly versatile language that has lead to the development of other languages, such as XHTML, MathML and SVG. This is pretty much an entire topic in itself, what with XML itself, plus DTD’s, Schema, namespaces, XSLT…

Along the way I’m sure I’ll bump into Ajax, SOAP, PEAR and maybe some Flash and actionscript, although that’s not on the cards to learn just yet, despite having done some Flash before.
Add into this a smattering of SEO to optimise sites for search engines, regular expressions (mainly for SEO-friendly URL rewriting,), trying to get a proper handle on OOP (Object Oriented Programming,) some more Linux/Unix admin, a little typography and general design techniques, color theory etc and how to run my own business, (SWOT’s, business plans, etc, etc,) and we’re getting somewhere.

Coming soon: The Web Standards Trifle vs The HTML 4 Fruitcake.