story

Shifting baselines in the Chesapeake Bay: an environmental history / Victor S. Kennedy

Hayden Library - QH541.5.C65 K46 2018




story

The American Museum of Natural History and how it got that way / Colin Davey with Thomas A. Lesser ; foreword by Kermit Roosevelt III

Barker Library - QH70.U62 N485 2019




story

A History of CSS Through Fifteen Years of 24 ways

Rachel Andrew guides us through a tour of the last fifteen years in CSS layout, as manifested in articles here on 24 ways. From the days when Internet Explorer 6 was de rigueur, right up to the modern age of evergreen browsers, the only thing you can be sure of is that the web never stands still for long.


I’ve written nine articles in the 15 years of 24 ways, and all but one of those articles had something to do with CSS. In this last year of the project, I thought I would take a look back at those CSS articles. It’s been an interesting journey, and by reading through my words from the last 15 years I discovered not only how much the web platform has evolved - but how my own thinking has shifted with it.

2005: CSS layout starting points

Latest web browser versions: Internet Explorer 6 (at this point 4 years old), IE5.1 Mac, Netscape 8, Firefox 1.5, Safari 2

Fifteen years ago, my contributions to 24 ways started with a piece about CSS layout. That article explored something I had been using in my own work. In 2005, most of the work I was doing was building websites from Photoshop files delivered to me by my design agency clients. I’d built up a set of robust, tried-and-tested CSS layouts to use to implement these. My starting point when approaching any project was to take a look at the static comps and figure out which layout I would use:

  • Liquid, multiple column with no footer
  • Liquid, multiple column with footer
  • Fixed width, centred

At that point, there were still many sites being shipped with table-based layouts. We had learned how to use floats to create columns some four years earlier, however layout was still a difficult and often fragile thing. By developing patterns that I knew worked, where I had figured out any strange bugs, I saved myself a lot of time.

Of course, I wasn’t the only person thinking in this way. The two sites from which the early CSS for layout enthusiasts took most of their inspiration, had a library of patterns for CSS layout. The Noodle Incident little boxes is still online, glish.com/css is sadly only available at the Internet Archive.

This thinking was taken to a much greater extreme in 2011, when Twitter Bootstrap launched and starting with an entire framework for layout and much more became commonplace across the industry. While I understand the concern many folk have about every website ending up looking the same, back in 2005 I was a pragmatist. That has not changed. I’ve always built websites and run businesses alongside evangelizing web standards and contributing to the platform. I’m all about getting the job done, paying the bills, balancing that with trying to make things better so we don’t need to make as many compromises in the future. If that means picking from one of a number of patterns, that is often a very reasonable approach. Not everything needs to be a creative outpouring.

Today however, CSS Grid Layout and Flexbox mean that we can take a much more fluid approach to developing layouts. This enables the practical and the creative alike. The need for layout starting points - whether simple like mine, or a full framework like Bootstrap - seems to be decreasing, however in their place comes an interest in component libraries. This approach to development partly enabled by the fact that new layout makes it possible to drop a component into the middle of a layout without blowing the whole thing up.

2006: Faster Development with CSS Constants

Latest web browser versions: Internet Explorer 7, Netscape 8.1, Firefox 2, Safari 2

My article in 2006 was once again taken from the work I was doing as a developer. I’ve always been as much, if not more of a backend developer than a frontend one. In 2006, I was working in PHP on custom CMS implementations. These would also usually include the front-end work. Along with several other people in the industry I’d been experimenting with ways to use CSS “constants” as we all seemed to call them, by processing the CSS with our server-side language of choice.

The use case was mostly for development, although as a CMS developer, I could see the potential of allowing these values to be updated via the CMS. Perhaps to allow a content editor to change a color scheme.

Also in 2006, the first version of Sass was released, created by Hampton Catlin and Natalie Weizenbaum. Sass, LESS and other pre-processors began to give us a more streamlined and elegant way to achieve variables in CSS.

In 2009, the need for pre-processors purely for variables is disappearing. CSS now has Custom Properties - something I did not foresee in 2006. These “CSS Variables” are far more powerful than swapping out a value in a build process. They can be changed dynamically, based on something changing in the environment, rather than being statically set at build time.

2009: Cleaner Code with CSS3 Selectors

Latest web browser versions: Internet Explorer 8, Firefox 3.5, Safari 4, Chrome 3

After a break from writing for 24 ways, in 2009 I wrote this piece about CSS3 Selectors, complete with jQuery fallbacks due to the fact that some of these selectors were not usable in Internet Explorer 8.

Today these useful selectors have wide browser support, we also have a large number of new selectors which are part of the Level 4 specification. The changes section of the Level 4 spec gives an excellent rundown of what has been added over the years. Browser support for these newer selectors is more inconsistent, MDN has an excellent list with the page for each selector detailing current browser support and usage examples.

2012: Giving Content Priority with CSS3 Grid Layout

Latest web browser versions: Internet Explorer 10, Firefox 17, Safari 6, Chrome 23

My 2012 piece was at the beginning of my interest in the CSS Grid Layout specification. Earlier in 2012 I had attended a workshop given by Bert Bos, in which he demonstrated some early stage CSS modules, including the CSS Grid Layout specification. I soon discovered that there would be an implementation of Grid in IE10, the new browser shipped in September of 2012 and I set about learning how to use Grid Layout. This article was based on what I had learned.

The problem of source versus visual order

As a CMS developer I immediately linked the ability to lay out items and prioritize content, to the CMS and content editors. I was keen to find ways to allow content editors to prioritize content across breakpoints, and I felt that Grid Layout might allow us to do that. As it turned out, we are still some way away from that goal. While Grid does allow us to separate visual display from source order, it can come at a cost. Non-visual browsers, and the tab order of the document follow the source and not the visual display. This makes it easy to create a disconnected and difficult to use experience if we essentially jumble up the display of elements, moving them away from how they appear in the document. I still think that an issue we need to solve is how to allow developers to indicate that the visual display should be considered the correct order rather than the document order.

The Grid Specification moved on

Some of the issues in this early version of the grid spec were apparent in my article. I needed to use a pre-processor, to calculate the columns an element would span. This was partly due to the fact that the early grid specifications did not have a concept of the gap property. In addition the initial spec did not include auto-placement and therefore each item had to be explicitly placed onto the grid. The basics of the final specification were there, however over the years that followed the specification was refined and developed. We got gaps, and auto-placement, and the grid-template-areas property was introduced. By the time Grid shipped in Firefox, Chrome, and Safari many of the sticky things I had encountered when writing this article were resolved.

2015: Grid, Flexbox, Box Alignment: Our New System for Layout

Latest web browser versions: Edge 13, Firefox 43, Safari 9, Chrome 47

Grid still hadn’t shipped in more browsers but the specification had moved on. We had support for gaps, with the grid-row-gap, grid-column-gap and grid-gap properties. My own thinking about the specification, and the related specifications had developed. I had started teaching grid not as a standalone module, but alongside Flexbox and Box Alignment. I was trying to demonstrate how these modules worked together to create a layout system for modern web development.

Another place my thinking had moved on since my initial Grid article in 2012, was in terms of content reordering and accessibility. In July of 2015 I wrote an article entitled, Modern CSS Layout, Power and Responsibility in which I outlined these concerns.

Some things change, and some stay the same. The grid- prefixed gap properties were ultimately moved into the Box Alignment specification in order that they could be defined for Flex layout and any other layout method which in future required gaps. What I did not expect, was that four years on I would still be being asked about Grid versus Flexbox:

“A question I keep being asked is whether CSS grid layout and flexbox are competing layout systems, as though it might be possible to back the loser in a CSS layout competition. The reality, however, is that these two methods will sit together as one system for doing layout on the web, each method playing to certain strengths and serving particular layout tasks.”

2016: What next for CSS Grid Layout?

Latest web browser versions: Edge 15, Firefox 50, Safari 10, Chrome 55

In 2016, we still didn’t have Grid in browsers, and I was increasingly looking like I was selling CSS vaporware. However, with the spec at Candidate Recommendation, and it looking likely that we would have grid in at least two browsers in the spring, I wrote an article about what might come next for grid.

The main subject was the subgrid feature, which had by that point been removed from the Level 1 specification. The CSS Working Group were still trying to decide whether a version of subgrid locked to both dimensions would be acceptable. In this version we would have declared display: subgrid on the grid item, after which its rows and columns would be locked to the tracks of the parent. I am very glad that it was ultimately decided to allow for one-dimensional subgrids. This means that you can use the column tracks of the parent, yet have an implicit grid for the rows. This enables patterns such as the one I described in A design pattern solved by subgrid. At the end of 2019, we don’t yet have wide browser support for subgrid, however Firefox has already shipped the value in Firefox 71. Hopefully other browsers will follow suit.

Level 2 of the grid specification ultimately became all about adding support for subgrid, and so we don’t yet have any of the other features I mentioned in that piece. All of those features are detailed in issues in the CSS Working Group Github repo, and aren’t forgotten about. As we come to decide features for Level 3, perhaps some of them will make the cut.

It was worth waiting for subgrid, as the one-dimensional version gives us so much more power, and as I take a look back over these 24 ways articles it really underlines how much of a long game contributing to the platform is. I mentioned in the closing paragraph of my 2016 article that you should not feel ignored if your idea or use case is not immediately discussed and added to a spec, and that is still the case. Those of us involved in specifying CSS, and in implementing CSS in browsers care very much about your feedback. We have to balance that with the need for this stuff to be right.

2017: Christmas Gifts for Your Future Self: Testing the Web Platform

Latest web browser versions: Edge 16, Firefox 57, Safari 11, Chrome 63

In 2017 I stepped away from directly talking about layout, and instead published an article about testing. Not about testing your own code, but about the Web Platform Tests project, and how contributing to the tests which help to ensure interoperability between browsers could benefit the platform - and you.

This article is still relevant today as it was two years ago. I’m often asked by people how they can get involved with CSS, and testing is a great place to start. Specifications need tests in order to progress to become Recommendations, therefore contributing tests can materially help the progress of a spec. You can also help to free up the time of spec editors, to make edits to their specs, by contributing tests they might otherwise need to work on.

The Web Platform Tests project has recently got new and improved documentation. If you have some time to spare and would like to help, take a look and see if you can identify some places that are in need of tests. You will learn a lot about the CSS specs you are testing while doing so, and you can feel that you are making a useful and much-needed contribution to the development of the web platform.

2018: Researching a Property in the CSS Specifications

Latest web browser versions: Edge 17, Firefox 64, Safari 12, Chrome 71

I almost stayed away from layout in my 2018 piece, however I did feature the Grid Layout property grid-auto-rows in this article. If you want to understand how to dig up all the details of a CSS property, then this article is still useful.

One thing that has changed since I began writing for 24 ways, is the amount of great information available to help you learn CSS. Whether you are someone who prefers to read like me, or a person who learns best from video, or by following along with a tutorial, it’s all out there for you. You don’t have to rely on understanding the specifications, though I would encourage everyone to become familiar with doing so, if just to be able to fact check a tutorial which seems to be doing something other than the resulting code.

2019: And that’s a wrap

Latest web browser versions: Edge 18, Firefox 71, Safari 12, Chrome 79

This year is the final countdown for 24 ways. With so many other publications creating great content, perhaps there is less of a need for an avalanche of writing in the closing days of each year. The archive will stay as a history of what was important, what we were thinking, and the problems of the day - many of which we have now solved in ways that the authors could never have imagined at the time. I can see through my articles how my thinking evolved over the years, and I’m as excited about what comes next as I was back in 2005, wondering how to make CSS layout easier.


About the author

Rachel Andrew is a Director of edgeofmyseat.com, a UK web development consultancy and creators of the small content management system, Perch; a W3C Invited Expert to the CSS Working Group; and Editor in Chief of Smashing Magazine. She is the author of a number of books including The New CSS Layout for A Book Apart and a Google Developer Expert for Web Technologies.

She curates a popular email newsletter on CSS Layout, and is passing on her layout knowledge over at her CSS Layout Workshop.

When not writing about business and technology on her blog at rachelandrew.co.uk or speaking at conferences, you will usually find Rachel running up and down one of the giant hills in Bristol, or attempting to land a small aeroplane while training for her Pilot’s license.

More articles by Rachel




story

European socialism: a concise history with documents / William Smaldone

Dewey Library - HX236.5.S6293 2020




story

The scientist and the spy: a true story of China, the FBI, and industrial espionage / Mara Hvistendahl

Dewey Library - HV7561.H85 2020




story

Burn Boston burn: the story of the largest arson case in the history of the country / Wayne M. Miller

Dewey Library - HV6638.5.M4 M55 2019




story

A concise history of revolution / Mehran Kamrava

Dewey Library - JC491.K255 2020




story

The Oxford handbook of modern British political history, 1800-2000 / edited by David Brown, Gordon Pentland, and Robert Crowcroft

Online Resource




story

The politics of war powers: the theory and history of Presidential unilateralism / Sarah Burns

Dewey Library - JK560.B87 2019




story

Fight the power: African Americans and the long history of police brutality in New York City / Clarence Taylor

Rotch Library - HV8148.N5 T39 2019




story

The American lab: an insider's history of the Lawrence Livermore National Laboratory / C. Bruce Tarter

Hayden Library - U394.L58 T37 2018




story

Resisting dispossession: the Odisha story / Ranjana Padhi, Nigamananda Sadangi

Online Resource




story

Money rock: a family's story of cocaine, race, and ambition in the new South / Pam Kelley

Dewey Library - HV5831.N8 K45 2018




story

Security and terror: American culture and the long history of colonial modernity / Eli Jelly-Schapiro

Dewey Library - HV6432.J445 2018




story

Loaded: a disarming history of the Second Amendment / Roxanne Dunbar Ortiz

Dewey Library - HV7436.D86 2018




story

Crushed families: Story of the survivors of the Mumbai building collapse

61 people were killed and 31 injured after a residential building collapsed in Mumbai last week.




story

Aarushi-Hemraj double murder: The story so far

Aarushi Talwar, daughter of dentist couple Rajesh and Nupur was found dead on May 16, 2008.




story

Sunburnt country : the history and future of climate change in Australia / Joëlle Gergis

Gergis, Joëlle, author




story

Burning up : a global history of fossil fuel consumption / Simon Pirani

Pirani, Simon, author




story

Now,Narendra Modi’s Gujarat success story boost for laggard West Bengal



  • DO NOT USE West Bengal
  • India

story

A century in stone [videorecording] : the Eston & California story / produced, writen and directed by Craig Hornby




story

Hills been travelling : a story of the Pilbara / by Bill MacRae for Robe River Iron Associates

MacRae, Bill




story

031 JSJ history.js

Panel Benjamin Lupton (twitter github blog) Jamison Dance (twitter github blog) Charles Max Wood (twitter github Teach Me To Code Intro to CoffeeScript) Joe Eames (twitter github blog) Discussion 01:00 - Benjamin Lupton Introduction and Background history.js (twitter / github) Front-end and back-end developer Based in Australia Works full-time open-source 03:19 - history.js HTML5 History API Hashbang 09:26 - URL appearances 10:32 - Maintaining states 12:23 - (Joe joins the podcast) 12:30 - Framework usage 13:42 - Overriding history.js 17:33 - JavaScript community and evolution 21:10 - Particular problems that history.js is geared toward solving 22:07 - Sites implementing history.js 37signals 25:18 - Other libraries that do the same thing 26:12 - Page reloads 32:14 - Browser limitations 34:37 - Live event in jQuery 35:42 - history.js: a deep or shallow library? 37:43 - Resources for history.js Picks booq: Vyper XL2 (Jamison) Jordan Santell (Jamison) Star Wars: Red Harvest (Joe) Nitro Circus: The Movie (Joe) Arrested Development (Joe) f.lux (Chuck) docpad (Benjamin) Paulo Coelho (Benjamin) Transcript BENJAMIN: Anything important, I hear from my wife. So, I could finally have that thing where Facebook doesn’t infiltrate my mind with cat pictures anymore.  [This episode is presented to you by ComponentOne, makers of Wijmo. If you need stunning UI elements or awesome graphs and charts, then go to wijmo.com and check them out.] [Hosting and bandwidth provided by the Blue Box Group. Check them out at bluebox.net] CHUCK: Hey everybody and welcome to episode 31 of the JavaScript Jabber show. This week on our panel, we have Jamison Dance. JAMISON: Howdy Doody! CHUCK: I'm Charles Max Wood from devchat.tv and this week, we have a special guest and that's Benjamin Lupton. BENJAMIN: Hello. CHUCK: He is the author of history.js and why don’t you introduce yourself? Because that's all I really know about you other than history.js and you are many time zones away. BENJAMIN: [laughs] Yeah. So, I have been doing JavaScript pretty much my entire life and been doing it professionally since about 2006, full time. And over the time, I've developed some open source project. One of them became quite popular and that was History.js it makes HTML5 History API that was compatible with like hashes and things like that. We’ll go into that late. Yeah, that became really popular. Now I other stuff with Node a lot as well. CHUCK: Ooh. A front end and a back end person. BENJAMIN: Only because I'm Node. JAMISON: You are basically like a unicorn. CHUCK: Yeah. JAMISON: You are a mystical creature. CHUCK: You are too well rounded. You are going to put us to shame. BENJAMIN: Well, it’s easier being with Node. CHUCK: Yeah, that's true. JAMISON: Yeah it’s true. Where do you work? BENJAMIN: I work for my own company right now. We’ve been doing JavaScript constancy for a few start-ups in Australia. And now, I'm looking at going completely full time with just the open source stuff. CHUCK: Oh, cool. How do you manage going full time open source? BENJAMIN: Right now, we’ve got premium support. I'm going with a few companies and we are looking into other options as well. CHUCK: Right. Yeah. I'm in the same boat with my podcast. I’d love to go full time podcast and less full time consulting. JAMISON: So the real question is, if I pay you enough money, will you put a gigantic ASCII art picture of my face in the History.js source code? BENJAMIN: Perhaps. JAMISON: Okay. We’ll have to talk after. CHUCK: I’m going to have to figure out how to do that. Let’s see... Image to ASCII art… BENJAMIN: In podcast. CHUCK: Yeah and then I’ll… JAMISON: Oh Chuck, you could do it so there’s face that shows up like in the waveforms on the sounds. CHUCK: [laughs] I don’t know about that.




story

JSJ 407: Reactive JavaScript and Storybook with Dean Radcliffe

Dean is a developer from Chicago and was previously on React Round Up 083. Today he has come over to JavaScript Jabber to talk about reactive programming and Storybook. Reactive programming is the opposite of imperative programming, where it will change exactly when needed instead of change only when told to. Reactivity existed long before React, and Dean talks about his history with reactive programming. He illustrates this difference by talking about Trello and Jira. In Trello, as you move cards from swimlane to another swimlane, everyone on the board sees those changes right away. In Jira,  if you have 11 tabs open, and you update data in one tab, probably 10 of your tabs are stale now and you might have to refresh. Reactive programming is the difference between Trello and Jira.

The panel discusses why reactive JavaScript is not more widely used. People now tend to look for more focused tools to solve a particular part of the problem than an all in one tool like Meteor.js. Dean talks about the problems that Storybook solves. Storybook has hot reloading environments in frontend components, so you don’t need the backend to run. Storybook also allows you to create a catalogue of UI states. JC and Dean talk about how Storybook could create opportunities for collaboration between engineers and designers. They discuss some causes of breakage that automation could help solve, such as styles not being applied properly and internationalization issues. Dean shares how to solve some network issues, such as having operators in RxJs. RxJs is useful for overlapping calls because it was built with cancelability from the beginning. 

Dean talks about his tool Storybook Animate, which allows you to see what the user sees. Storybook is an actively updated product, and Dean talks about how to get started with it. The show concludes with Dean talking about some things coming down the pipe and how he is actively involved in looking for good general solutions to help people write bulletproof code. 

Panelists

  • JC Hiatt

With special guest: Dean Radcliffe

Sponsors

________________________________________________________________________________________________________________________

"The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood will be out on November 20th on Amazon.  Get your copy on that date only for $1.

________________________________________________________________________________________________________________________

Links

Follow DevChatTV on Facebook and Twitter

Picks

JC Hiatt:

Dean Radcliffe: 




story

Yielding gender [electronic resource] : feminism, deconstruction, and the history of philosophy / Penelope Deutscher

Deutscher, Penelope, 1966-




story

You never call! you never write! [electronic resource] : a history of the Jewish mother / Joyce Antler

Antler, Joyce




story

Jellyfish : a natural history / Lisa-Ann Gershwin

Gershwin, Lisa-Ann, author




story

Perspectives on oceans past : a handbook of marine environmental history / Kathleen Schwerdtner Máñez, Bo Poulsen, editors




story

The marine world : a natural history of ocean life / Frances Dipper ; illustrated by Marc Dando

Dipper, Frances, 1951- author




story

History of water. Series III




story

The nature state : rethinking the history of conservation / edited by Wilko Graf von Hardenberg, Matthew Kelly, Claudia Leal and Emily Wakild




story

The oceans : a deep history / Eelco J. Rohling

Rohling, Eelco J., author




story

Wild sea : a history of the Southern Ocean / Joy McCann

McCann, Joy, 1954- author




story

Hunter wine - a history / Julie McIntyre ; John Germov

Hayden Library - TP559.A8 M35 2018




story

Aerosol Science and Technology: History and Reviews / edited by David S. Ensor

Online Resource




story

NATURAL HISTORY OF BEER.

Hayden Library - TP577.D48 2019




story

The chemical history of lithography / Uzodinma Okoroanyanwu

Online Resource




story

Ethnic fermented foods and beverages of India: science history and culture / Jyoti Prakash Tamang, editor

Online Resource




story

Back to beer...and hockey: the story of Eric Molson / Helen Antoniou

Hayden Library - TP573.5.M657 A58 2018




story

The secret history of RDX: the super-explosive that helped win World War II / Colin F. Baxter

Hayden Library - TP290.R39 B39 2018




story

The ministry of Paul the Apostle : history and redaction / G. Roger Greene

Greene, G. Roger, 1944- author




story

How the Gospels became history : Jesus and Mediterranean myths / M. David Litwa

Litwa, M. David, author




story

A history of the Bible : the book and its faiths / John Barton

Barton, John, 1948- author




story

Christobiography : memory, history, and the reliability of the Gospels / Craig S. Keener

Keener, Craig S., 1960- author




story

John the Baptist in history and theology / Joel Marcus

Marcus, Joel, 1951- author




story

Kyrios Christos : a history of the belief in Christ from the beginnings of Christianity to Irenaeus / Wilhelm Bousset ; with a new introduction by Larry W. Hurtado ; translated by John E. Steely

Bousset, Wilhelm, 1865-1920




story

Jesus, skepticism & the problem of history : criteria & context in the study of Christian origins / Darrell L. Bock and J. Ed Komoszewski, editors ; foreword by N.T. Wright




story

Story as history--history as story : the gospel tradition in the context of ancient oral history / by Samuel Byrskog

Byrskog, Samuel




story

Reception History and Biblical Studies : theory and practice / edited by Emma England and William John Lyons




story

Mosaic of joy : a continuing history of multicultural ministry commission / Kay Keng Khoo

Khoo, Kay Keng, author