Okay, vertical positioning, I'll give you. But fluid layouts? That's not hard at all. Websites are fluid by default, they only stop being fluid when you set explicit widths using fixed units. You can do that with CSS or tables.
Accurate, repeatable vertical positioning is essential for serious design. CSS just doesn't provide it out of the box - end of story.
If you are an experienced designer, then you've already done similar layouts a hundred times before, so you have the code and bug workarounds memorised...
Sure. Templates consisting of inviting 'boxes' and 'columns' are a breeze. I have a shedload of them for ever occasion!
The trouble is they often break apart or elements flow incorrectly when you insert any real world content into them.
Er, CSS is far less limited than tables (check out the CSS Zen Garden), and I've seen way, way, way more websites out there using tables that all look alike.
Thanks. I'm very familiar with Zen Garden. I do use CSS all the time, I just sometimes use tables for certain layout situations (which I then style using CSS). You're preaching to the choir.
Er, no. Not semantic. Not at all. If you are using tables for anything other than tabular data, it's not semantic.
True, but how are DIVs and SPANs more 'semantic' exactly?
I've heard that before. Exclusively from developers that have years of experience with tables and who haven't spent any significant amount of time with CSS.
You assume I know nothing of CSS but I've used it intensively, almost everyday for years and it often drives me nuts.
I'm always hearing about how great CSS is from 'experts' who think they know it but don't have to work with it everyday.
I too have 'several' years of experience of CSS - probably as much as anyone as I use it almost everyday. This doesn't make me blind to CSS's shortcomings however.
If you have been dealing with CSS for 'several' years and you 'have no problem at all visualizing the layout' then all I can say is:
a) you can't have desiged very many layouts, or
b) all your layouts must have been piss simple
Major commercial sites require complex, flexible, modular layouts that change on a day-by-day basis and need to accomodate whatever piece-of-crap, third-party content item that comes along.
I have yet to see any browser grossly mangle a table layout in they way the commonly do with CSS floats and DIVs.
A question for those who endlessly bang on about 'semantic markup' would be "what semantic value do DIVs and SPANs add"?
Tables do at least have some semantic value when used for actual tabular data - DIVs and SPANs have none at all - they only serve as containers to which styles are applied.
If you want your markup to be purely semantic, it should have no presentational aspect at all (no DIVs, no SPANs).
As you say, the logical conclusion would be to use XML and XSLT. The trouble is, it's not always a practical or desirable solution.
It's still easier to do certain things with table-based layouts than it is with CSS alone. Control of vertical positioning/height being the obvious one. That and fluid layouts.
If you're a busy designer, sometimes you just have to take the pragmatic route rather that waste hours or days trying to make a pure CSS layout work across all the common browsers (none of which implement CSS 100% correctly anyway).
Either that or (worse) you compromise the design to make it fit the limitations of a pure CSS layout.
I think the latter approach accounts for the huge number of 'identikit', bloggish-looking sites out there (all proudly displaying their little W3c validation logos of course).
It's still perfectly possible to create valid, semantic XHTML/CSS markup that uses the odd table for layout (no, I don't mean a heap of nested ones with spacer gifs!).
While I'm all for standards and separating content from presentation, at this stage of the game, we just need to choose the solution that works best.
I know it's probably heresy to say this, but IMO tables work in an intuitive way that you can easily visualize whereas a mass of floated DIVs often do not!
As a part-time MVS sysprog (not a 'sysadmin' ugh!) I've worked with it for almost 18 years, I appreciate where you're coming from.
I do a good deal of UNIX and Windows development too, and the difference in cultures often astounds me.
The level of refinement (in hardware, software, proceedures, documentation, etc. etc.) in the mainframe environment is still light years ahead of the UNIX and Windows worlds.
Absolutely right about diagnosis and intelligent workload management. There isn't anything close to Omegamon or SRM it in UNIX, let alone Windows.
UNIX and Windows geeks think they invented everything, even though it's been around on the mainframe for years. Some stuff they haven't even invented yet!
When I work with the Windows and UNIX teams I feel like a sloppy hack, and I think it's rubbing off on me.
Anyhow, I just need to slam in some user-exit changes in before I go down the pub. I'll tell the operator to IPL with a different parmlib if it goes tits up!
>>.Unix programmers know that they have to assume that they could be walking over someone else's session info.
Try that on a mainframe and your program will die with a storage protection exception.
Protected storage! It's been around forever on the mainframe but is seemingly still a new concept to some.
It's built right into the virtual memory management hardware in the form of 'storage keys'.
By default, you can't access any piece of storage other than that which is allocated to your task (process) address space and that which you have requested at runtime.
To read or write storage that you don't own, the program needs special privilleges.
As each program has it's own separate address space, it's impossible for one program to trample over anothers storage, except whith special execution privillages.
The CPU talks to the outside world using Channel Processors (specialised computers in their own right, with their own 'channel programs' and instruction set).
Periperals are connected to the channel which can be copper or optical fibre. Many peripherals can be connected to a channel, and the CPU can have many channels, all of which can operate simultainiously and independently.
Thanks to this, the IO throughput of a mainframe is phenomenal and the CPU doesn't have to get involved in the IO operations other than initiating them and handling the interrupt when the IO has completed.
Big, high-speed printers (we're not talking Laserjets here kids) connect directly to a channel. Smaller 327x printers may plug into 327x terminal controller, which is either connected by a network cable to a FEP or directly to a channel.
It is possible with a little ingenuity to connect anything to a mainframe using a custom channel adaptor though I must admit, I've never heared of a sound card on a mainframe.
Issues like permissions, libraries, kernels, and so forth are going to be completely foreign concepts to the last majority of computer users that are out there.
But surely, that's exactly how it should be.
As an ancient (ex) mainframe sysprog myself, I like to know the technical details, but the majority of users just need to get their work done, or be creative, or enjoy their games or whatever.
Windows and OS-X let them do this, and Linux doesn't, really.
I don't consider making something more usable and/or accessible to be "dumbing down".
Any useless but superficially attractive item of consumer electonics purchased by people with too much money that is played with for two weeks and then condemned to reside in a cupboard for 18 months until being eBayed or given to the local charity shop.
Don't know how your post was modded flamebait (oh! hang on, yes I do: kneejerk moderation).
I'm a Brit, and I think what you say is broadly correct.
However, the US also "Always Fail IT" as it tends to react against, or try to ignore, or reinvent as its own, Non-US innovations.
What you say about the British Library is correct however.
I have been constantly frustrated by the lack of access to works in the BL. Of course, many of these tomes are priceless, so you can't have every Tom, Dick and Harry thumbing them with grubby fingers, but a digital copy could have, and should have, been made that could be freely available.
Given the amount of money wasted on so many dubious public 'projects' here in the UK, any money spent on this would have been very worthwhile IMO.
There are still plenty of mainframes in the world. IBM's mainframe division is still highly profitable.
I can't think of a single case where a mainframe was replaced by a 'PC'. Some were replaced by midrange systems runing UNIX or AS/400 etc. but all the PC actually did was replace the dumb 3270 terminal on the users desk and ran a 3270 terminal emulator.
Thanks for that example.
That's a pretty lucid illustration of Monad's capabilities for someone like myself, who hasn't actually tried it out yet.
Disney Internet Group?
Isn't that something to do with Mikey Mouse?
God help them if YOU are teaching them CSS Development!
Have a nice Celebration in Celebration!
Clearly the irony of that 'solution' is lost on you.
Hey! Lets make DIVs act like table cells - COOL!!
>>Better to use javascript to find the tallest column and make the other column the same height.
;)
Or use a table
Accurate, repeatable vertical positioning is essential for serious design. CSS just doesn't provide it out of the box - end of story.
If you are an experienced designer, then you've already done similar layouts a hundred times before, so you have the code and bug workarounds memorised...Sure. Templates consisting of inviting 'boxes' and 'columns' are a breeze. I have a shedload of them for ever occasion!
The trouble is they often break apart or elements flow incorrectly when you insert any real world content into them.
Er, CSS is far less limited than tables (check out the CSS Zen Garden), and I've seen way, way, way more websites out there using tables that all look alike.Thanks. I'm very familiar with Zen Garden. I do use CSS all the time, I just sometimes use tables for certain layout situations (which I then style using CSS). You're preaching to the choir.
Er, no. Not semantic. Not at all. If you are using tables for anything other than tabular data, it's not semantic.True, but how are DIVs and SPANs more 'semantic' exactly?
I've heard that before. Exclusively from developers that have years of experience with tables and who haven't spent any significant amount of time with CSS.You assume I know nothing of CSS but I've used it intensively, almost everyday for years and it often drives me nuts.
I'm always hearing about how great CSS is from 'experts' who think they know it but don't have to work with it everyday.
Everyone knows about the old background image trick but that's just a CHEAT.
There is no easy way of doing this with DIVs whereas it is 'piss simple' using TDs.
Best you can hope for is messing about with the DIV heights in the DOM using js after the page is loaded/resized - yuck!
Table hacks?
What about the plethora of CSS hacks you have to memorize?
Hideous hacks implemented by relying on borked parsers! How is that better?
What table hacks anyway? cellspacing="0" cellpadding="0"? I think I can live with that one.
All remotely current browsers can render a table pretty much identically.
Thank your for sharing your wisdom.
I too have 'several' years of experience of CSS - probably as much as anyone as I use it almost everyday. This doesn't make me blind to CSS's shortcomings however.
If you have been dealing with CSS for 'several' years and you 'have no problem at all visualizing the layout' then all I can say is:
a) you can't have desiged very many layouts, or
b) all your layouts must have been piss simple
Major commercial sites require complex, flexible, modular layouts that change on a day-by-day basis and need to accomodate whatever piece-of-crap, third-party content item that comes along.
I'm not talking blogs here.
Well said!
I have yet to see any browser grossly mangle a table layout in they way the commonly do with CSS floats and DIVs.
A question for those who endlessly bang on about 'semantic markup' would be "what semantic value do DIVs and SPANs add"?
Tables do at least have some semantic value when used for actual tabular data - DIVs and SPANs have none at all - they only serve as containers to which styles are applied.
If you want your markup to be purely semantic, it should have no presentational aspect at all (no DIVs, no SPANs).
As you say, the logical conclusion would be to use XML and XSLT. The trouble is, it's not always a practical or desirable solution.
What if I want both columns to grow vertically depedning on the longest content of either column (like a 2 column table would).
Now that should be piss easy, but is it?
Yes, you're correct. Tables only have semantic meaning for actual tabular data.
Not only that but he gets +4 Informative too!
;)
Just another day on Slashdot
It's still easier to do certain things with table-based layouts than it is with CSS alone. Control of vertical positioning/height being the obvious one. That and fluid layouts.
If you're a busy designer, sometimes you just have to take the pragmatic route rather that waste hours or days trying to make a pure CSS layout work across all the common browsers (none of which implement CSS 100% correctly anyway).
Either that or (worse) you compromise the design to make it fit the limitations of a pure CSS layout.
I think the latter approach accounts for the huge number of 'identikit', bloggish-looking sites out there (all proudly displaying their little W3c validation logos of course).
It's still perfectly possible to create valid, semantic XHTML/CSS markup that uses the odd table for layout (no, I don't mean a heap of nested ones with spacer gifs!).
While I'm all for standards and separating content from presentation, at this stage of the game, we just need to choose the solution that works best.
I know it's probably heresy to say this, but IMO tables work in an intuitive way that you can easily visualize whereas a mass of floated DIVs often do not!
FTA: "We need to have an open, mature relationship"
Tried that one on my wife once, and I didn't have one decent hot meal in over 6 months.
Thanks for a very informative post.
As a part-time MVS sysprog (not a 'sysadmin' ugh!) I've worked with it for almost 18 years, I appreciate where you're coming from.
I do a good deal of UNIX and Windows development too, and the difference in cultures often astounds me.
The level of refinement (in hardware, software, proceedures, documentation, etc. etc.) in the mainframe environment is still light years ahead of the UNIX and Windows worlds.
Absolutely right about diagnosis and intelligent workload management. There isn't anything close to Omegamon or SRM it in UNIX, let alone Windows.
UNIX and Windows geeks think they invented everything, even though it's been around on the mainframe for years. Some stuff they haven't even invented yet!
When I work with the Windows and UNIX teams I feel like a sloppy hack, and I think it's rubbing off on me.
Anyhow, I just need to slam in some user-exit changes in before I go down the pub. I'll tell the operator to IPL with a different parmlib if it goes tits up!
>>.Unix programmers know that they have to assume that they could be walking over someone else's session info.
Try that on a mainframe and your program will die with a storage protection exception.
Protected storage! It's been around forever on the mainframe but is seemingly still a new concept to some.
It's built right into the virtual memory management hardware in the form of 'storage keys'.
By default, you can't access any piece of storage other than that which is allocated to your task (process) address space and that which you have requested at runtime.
To read or write storage that you don't own, the program needs special privilleges.
As each program has it's own separate address space, it's impossible for one program to trample over anothers storage, except whith special execution privillages.
>>Mainframes don't have ports. They have busses.
IBM (and compatible) mainframes have CHANNELS!
The CPU talks to the outside world using Channel Processors (specialised computers in their own right, with their own 'channel programs' and instruction set).
Periperals are connected to the channel which can be copper or optical fibre. Many peripherals can be connected to a channel, and the CPU can have many channels, all of which can operate simultainiously and independently.
Thanks to this, the IO throughput of a mainframe is phenomenal and the CPU doesn't have to get involved in the IO operations other than initiating them and handling the interrupt when the IO has completed.
Big, high-speed printers (we're not talking Laserjets here kids) connect directly to a channel. Smaller 327x printers may plug into 327x terminal controller, which is either connected by a network cable to a FEP or directly to a channel.
It is possible with a little ingenuity to connect anything to a mainframe using a custom channel adaptor though I must admit, I've never heared of a sound card on a mainframe.
But surely, that's exactly how it should be.
As an ancient (ex) mainframe sysprog myself, I like to know the technical details, but the majority of users just need to get their work done, or be creative, or enjoy their games or whatever.
Windows and OS-X let them do this, and Linux doesn't, really.
I don't consider making something more usable and/or accessible to be "dumbing down".
Ha ha! Excellent!
Best post of the day.
Cupboardware (n):
Any useless but superficially attractive item of consumer electonics purchased by people with too much money that is played with for two weeks and then condemned to reside in a cupboard for 18 months until being eBayed or given to the local charity shop.
Don't know how your post was modded flamebait (oh! hang on, yes I do: kneejerk moderation).
I'm a Brit, and I think what you say is broadly correct.
However, the US also "Always Fail IT" as it tends to react against, or try to ignore, or reinvent as its own, Non-US innovations.
What you say about the British Library is correct however.
I have been constantly frustrated by the lack of access to works in the BL. Of course, many of these tomes are priceless, so you can't have every Tom, Dick and Harry thumbing them with grubby fingers, but a digital copy could have, and should have, been made that could be freely available.
Given the amount of money wasted on so many dubious public 'projects' here in the UK, any money spent on this would have been very worthwhile IMO.
"Just becuase you can't see yourself ever selflessly doing something good for a community"
WTF?
Do you actually know me or what I do for my community?
No!
"I think the founders of Google and its staff truly, genuinely wish to keep themselves untainted."
"Don't be evil".
I think Google desparatley wish to APPEAR 'untainted' to keep their geek/hippy cred.
IMHO Google is just another 100% red-blooded capitalist business, doing what they have to do, no matter what they claim to the contrary.
I'm not saying that's a 'wrong' thing to be, but they should at least drop the BS and the fake bonhomie.
Profit, market share and stockholder returns are Googles mantras, just like any other successfull corporate.
If you think otherwise, you're totally deluding yourself IMHO.
"PCs killed mainframes."
Really!
I must have missed that.
There are still plenty of mainframes in the world. IBM's mainframe division is still highly profitable.
I can't think of a single case where a mainframe was replaced by a 'PC'. Some were replaced by midrange systems runing UNIX or AS/400 etc. but all the PC actually did was replace the dumb 3270 terminal on the users desk and ran a 3270 terminal emulator.
Exactly!
If you stick with applications that are of the same 'vintage' (or earlier) as the OS then things generally run smoothly.
I have a 6 year old old Toshiba 520CDT laptop with 96MB running W2K. It's no speed king, but it does a useful job.
I use Office 97 and Visual Studio 6 on it mostly, with IE5 as the browser and Paint-Shop-Pro V6 instead of Photoshop.
It works pretty well once you get into the rhythm of working with a slower machine, and it's very stable too.
It's kind of an 'expendible' machine that I take to places where I would rather not take a more expensive one (camping etc.).