Dublin Library

The Publishing project

Design for the lower end of the spectrum: Part 1

Ever since I've been on the web 1994 I've been a part of a tension between the right and the easy way to do things, between tables and CSS, between frameworks, between techniques, between technologies and, it seems, between desktop and mobile or between native apps and well done mobile. With all the hardware limitations that we get with mobile, the web is still well placed to target emerging markets and lower end devices and poor network connectivity. To frame the post; the talk below by Alex Russell at Samsung Createhttps://samsungcreate.com/ last April illustrates some of the issues that the...

Revisiting Bibliotype Part 3: Future Enhancements

These are things that will take a while to work through either because the APIs are harder to work with or because I'm not certain of the status of the API and research plus implementation will take longer. Periodic Sync: Serialized content Periodic Synchttps://github.com/WICG/BackgroundSync/blob/master/explainer.mdperiodic-synchronization-in-design will allow us to periodically sync to the application for new or updated information. One case that quickly comes to mind is serialized content. Rather than upload an entire book or story we can create chunks and offer the first few when the user first uploads and the remainder over a period of time. Push Notifications...

Revisiting Bibliotype Part 2: Manifest and Service Worker

The rest of the project deals with additional "nice to have" items that will make this into a full-fledged PWA. Remaining issues with SCSS and Javascript The function that makes the font size smaller doesn't check if the font has reached a minimal size. It can be made small enough to be unreadable. We should put a check to make sure that the font size doesn't get below a certain value. My first pass at a fix modifies the smaller event listener to restrict the minimum font size. The idea is that if the value is smaller than a value...

Revisiting Bibliotype: Version 1

I've been meaning to update Bibliotype to more modern technologies and document the process. The original In 2011 Craig Modhttps://craigmod.com/ published Bibliotypehttps://craigmod.com/bibliotype/, a demohttps://craigmod.com/bibliotype/ and an articlehttps://alistapart.com/article/a-simpler-page in a List Apart. The article explores the nature of physical pages and how they may translate into the digital world, making references to epub3 and iBooks an encrypted wrapper around the WebKit rendering engine. Craig also talks about how the notion of a page changes on the web. The content as large as the content in it. > On the other hand, the physicality of these devices doesn’t represent the full potential...

Using LocalStorage

The idea behind local storagehttps://html.spec.whatwg.org/multipage/webstorage.htmlstorage also known as web storage is that we can save key/value pairs of data in the browser for later retrieval and use. A good example of where this may be useful is to set basic settings of an application and persist them between visits to the site. The feature is supported by all browsers except Opera Minihttps://caniuse.com/feat=namevalue-storage We'll look at the setting and retrieving values to local storage and how we can use them in making an application configuration consistent across visits to the page. How does it work? Although the API is widely supported...

Crafting Type For The Web

As I begin working on layouts one of the things that started to beg for attention is how to size the text properly for it to be legible online as well as being pleasant to the eye when looking at the page. > These are notes, observations and learning points from books, websites and the work I've been doing for my layout experimentshttps://caraya.github.io/grid-experiments/ site. They also span a long time between writing so they may not read quite the same. The 62.5% system When I first started working on the web it was common to see the following CSS at...

AI, and Assistants

As an undergraduate, I did fairly extensive work in early text-based virtual communities, particularly the way in which people interacted and communicated in text-based virtual realities. The research may color my vision of Duplex and other technologies that make it harder for people to know who they are speaking with. This makes the argument that we have the "right" to know that we're speaking to a 'bot harder to accept for me. Unless you know the person you're speaking with how can you really tell who are you communicating with? How do you know that the knowledge they claim is...

Reproducible Configs

A lot of the projects that I work with use a fairly standard setup of tools and scripts. Rather than reinstall them every time and have to fix paths and install dependencies outside the Node ecosystem I've created a script that will perform the following actions: 1. Check if package.json exists. If it doesn't then create one with default values 2. Install packages explaining what it's doing when installing each group 3. Run an additional script that will create configuration files 4. Remove the .git directory and recreate it for the current directory This way I can initialize a new...

Asynchronous Javascript: SetTimeout and SetInterval

SetTimeout and SetInterval provide ways to schedule tasks to run at a future point in time. setTimeout allows you to schedule a task after a given interval. setInterval lets you run a task periodically with a given interval between runs. SetTimeout setTimeout takes two parameters: A string representing code to run and a number representing the time interval in milliseconds to wait before executing the code. In the following example, the browser will wait two seconds before executing the anonymous function and presenting the alert message. javascript let myGreeting = setTimeoutfunction { alert'Hello, Mr. Universe!'; }, 2000 We're not required...

Asynchronous Javascript: Introduction and Synchronous Code

When we write Javascript we normally do it synchronously, every instruction is executed one at a time in the order they appear in the script. The script will finish once the last instruction is executed. In the example below, we log three items to the console. javascript console.log'1'; console.log'2'; console.log'3'; We will always get the same result: 1 2 3. This works great for small pieces of code or scripts that don't produce output on the browser. But sooner rather than later you will want to work on larger scripts and you will find one of the first issues with...