Dublin Library

The Publishing project

Import Maps Are Ready For Use

Import maps allow developers to instead specify arbitrary text in the module specifier when importing a module; the map provides a corresponding value that will replace the text when the module URL is resolved. An import map lives in a script element with a type="importmap" attribute and it should be the first script element on the page. You have to define the import map before you can use it. Let's assume that we have a set of modules to do operations in three different geometrical modules: squares, circles and triangles. The modules live in a modules directory at the root...

Continue reading →

Web Components FTW!

Web Components have come a long way since they were introduced and the original Polymer library made them useful for non-experts. Since the landscape has changed so much, we'll look at some of the new things around web components specifications and APIs, we'll look at Lit, a low-level framework to build web components, Web Components libraries like Wired Elements and Shoelace AKA Web Awesome and a new strategy to build web components What Are Web Components? The term "web components" is an umbrella for a series of specifications that allow developers to create custom HTML elements. The component specifications are:...

Continue reading →

What is a URL? Why it matters

Whether we know it or not we work with URLs all the time. Whenever we enter a web address into the browser's omni-bar, click on a link on a web page or click on an email link, all those are URLs. Despite their use everywhere, defining a URL is hard. URLs are defined in RFC 3986https://datatracker.ietf.org/doc/html/rfc3986 and in the WHATWG URL Living Standardhttps://url.spec.whatwg.org/ but even with these specifications, many inconsistent implementations can turn things into a security nightmare. In this post, we'll look at what URLs are and how they can potentially be abused. What is a URL A URL...

Continue reading →

Rethinking CSS Patterns

There are many ways we can improve our CSS, both in terms of readability and ease of use. This post will discuss some of these new ways of doing things and start thinking about ways to incorporate these new ways into existing projects. Using custom properties to make things more readable Until CSS gained custom properties AKA CSS variableshttps://developer.mozilla.org/en-US/docs/Web/CSS/CSScascadingvariables there was no way to reuse values across one or more stylesheets; if/when we need to make changes, we have to make the changes everywhere we use these values which is tedious and error-prone. In this example, we use the same...

Continue reading →

Scroll-Based Animations

With scroll-based animations, you can create animations that will trigger based on page scrolling rather than based on time. The Scroll-driven Animations Specification defines two new types of timelines that you can use: Scroll Progress Timeline: a timeline linked to the scroll position of a scroll container along a particular axis. View Progress Timeline: a timeline linked to the relative position of an element within its scroll container. How they work The easiest way to create a scroll animation is to use the scroll function to create an anonymous Scroll Timeline. css @keyframes animate-it { from { opacity: 0; }...

Continue reading →

Publishing Explorations

Animating variable fonts Don't be Afraid Of Large Font Sizes Creating Grid-Based Components Font Stacks: To variable font or not to variable font Leveraging Variable Font Features Leveraging Opentype font features Escaping our web metaphors Creating Magazine Layouts Media Queries To The Rescue What the web can do that print can't Anotations and marginalia The social life of marginaliahttp://bobulate.com/post/5013829096/the-social-life-of-marginalia Bookmarking, annotations and sharing openbookmarks.orghttp://www.openbookmarks.org/ Hypothes.ishttps://hypothes.is/ emphasishttps://github.com/NYTimes/Emphasis from the New York Times Reading List Frank Chimero The Web's Grainhttps://frankchimero.com/blog/2015/the-webs-grain/ What The Web Wantshttps://frankchimero.com/blog/2013/what-screens-want/ Apps and publishing Post artifact books and publishinghttp://craigmod.com/journal/postartifact/ Newspapers and Thinking the Unthinkablehttps://www.edge.org/conversation/clayshirky-newspapers-and-thinking-the-unthinkable On Wikipedia, Cultural Patrimony, and...

Continue reading →

Looping Through Nested JSON Objects

Looping through a flat JSON file is easy, doing the same through a nested JSON object, is not so easy. There is no built-in way to loop through nested arrays of JSON properties so we have to develop our own strategies. The solution is encapsulated in the logJSON function. It does the following: 1. Check if the JSON input is null or undefined. If it is, then return, there's nothing to do 2. Check the type of the incoming JSON object using the typeofhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof operator. We will use this check later 3. If the object is a number, a string...

Continue reading →

Creating A CSS Reset

CSS Resets have been around for a while and they have evolved along with CSS and browser support. The notion of a CSS reset first came around with undoHTML.css by Tantek Celik in 2004 and it does what it says; it undoes many of the CSS defaults in browsers so you have a clean beginning for your own work. css :link,:visited { text-decoration:none } ul,ol { list-style:none } h1,h2,h3,h4,h5,h6,pre,code { font-size:1em; } ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,body,html,p, blockquote,fieldset,input { margin:0; padding:0 } a img,:link img,:visited img { border:none } address { font-style:normal } In 2005, Farouk Ates created initial.csshttp://web.archive.org/web/20050930205005/http:/kurafire.net/log/archive/2005/07/26/starting-css-revisited as groupings of styles that...

Continue reading →

When To Use @property

Custom properties are awesome. They provide modularity and a central place to store variables that we'll use throughout a stylesheet. But they are not perfect. This post will discuss two ways to define CSS Custom properties and when it's best to use each type. Defining CSS Custom Properties CSS Custom Properties also known as CSS Variables are defined in CSS Custom Properties for Cascading Variables Module Level 1https://www.w3.org/TR/css-variables-1/. They are commonly used to provide a central locatin for values used multiple times throughout the document. Before variables we would have to change each individual instance of the value would be...

Continue reading →

Design Brainstorm: Moments

One of my current projects is to create a journaling system similar to Hihttps://hitotoki.org/ did. The idea is described in Full stack writing and publishing: Welcome to Hihttps://hitotoki.org/moments/q4oi5i68. The Idea The idea of this application is as follows: Mobile first application Users log into the platform and have the option to read what other people have written or create their content. Log in Use Google and Facebook login Capture initial data Capture a summary or sketch of the post Capture the location where the post originated using the Geolocation API Use a Geocoding service to get the location and display...

Continue reading →