Explore My Notes

Clean up your online presence | Deseat.me

Not entirely sure what permissions you have to give it, but Deseat is an interesting idea that could come in handy when tidying up your web presence. It (somehow) compiles a list of accounts that you have and gives you a one-click "delete" option, which I assume fires off a data deletion request.

📆 16 Jun 2020  | 🔗

  • Technology
  • social media
  • uninstall
  • unsubscribe
  • delete
  • web
  • tool 

The great divide | Chris Coyier

The infamous frontend divide, the feeling that JavaScript-everywhere has caused a schism in what a frontend developer is. Should they be split into JavaScript Engineer and UI Engineer? CSS, accessibility, design patterns, semantics, UX engineering are all still skills that are needed but they don't necessarily align with JS needs or wants. It's two different brain states (or is it?). Some people will bridge that divide, but should we be requiring it?

Two “front-end web developers” can be standing right next to each other and have little, if any, skill sets in common. That’s downright bizarre to me for a job title so specific and ubiquitous.

I love this sentiment on using complex toolchains to reduce overall system complexity:

Sometimes it feels like releasing cougars into the forest to handle your snake problem. Now you have a cougar problem.

And there are some clear benefits to JavaScript "getting big" and being used everywhere.

A front-end developer with a strong JavaScript skill set is wildly empowered these days.

Or is the divide actually between frontend developers who give a crap about users and those who don't, regardless of tool stack? Some people prefer working on code than working with people, and that's okay, but when you're job is building stuff for people it leads to what I'd consider a poor work ethic (or at least a poor job fit). Right now, the industry seems okay with that, but perhaps it shouldn't be. As frontend becomes more focused on traditional engineering concepts, are we losing sight of its purpose: positive user experience.

The typos that changed lives | The Guardian

  • An elderly gent who inadvertently had his satnav set to "Rom" instead of "Rome" and wound up in the wrong country;
  • A pilot that incorrectly input destination coordinates causing a Sydney flight to Kuala Lumper landing in Melbourne;
  • A nurse who keyed the wrong drug code into a dispensary machine and accidentally treated anxiety with a poison used as part of the lethal injection, killing someone;
  • A Companies House employee who began the liquidation of a 150-year old engineering firm because they missed a pluralisation (Taylor & Son/Taylor & Sons), ultimately causing such loss of business that the highly-profitable firm ended up going bankrupt (though later successfully sued for £8million);
  • Nigel Lang, Sheffield, ended up being investigated for child pornography, unable to see his family for three weeks and left traumatised, contemplating suicide, because someone at the police station mistyped an IP address that would take years to clear up;
  • On the other end, Kasey Bergh and Henry Glendening (US) ended up meeting because Kasey mistyped a colleague's number, ultimately got married, and then when Kasey's kidney failed Henry was an ideal match, saving her life.

Understand JavaScript closures in minutes | freeCodeCamp

I always forget what closures are, even if I continue to use them. The article makes a case for considering closures as stateful functions which is quite neat. Basically, closures allow a function to return another function (or functions); each returned function will also have access to any data that the original function had access to. In other words:

const add = function(x) {
    return function(y) {
        return x + y;
    }
}
const add10 = add(10);
add10(10); // 20

That will output 20 because the internal function has access to both variables. It's a bit freaky but it means you can define functions as reusable abstractions with preset variable values really easily. As the article points out, that can be a lot more secure and can help encapsulate sensitive data/functionality, like so:

const manageBankAccount = function(initialBalance) {
    let accountBalance = initialBalance;
    
    return {
        getBalance: function() { return accountBalance; },
        deposit: function(amount) { accountBalance += amount; },
        withdraw: function(amount) {
            if (amount > accountBalance) {
                return 'You cannot draw that much!';
            }

            accountBalance -= amount;
        }
    };
}

const accountManager = manageBankAccount(0);

accountManager.deposit(1000);
accountManager.withdraw(500);
accountManager.getBalance(); // 500

📆 15 Jun 2020  | 🔗

  • JavaScript
  • closure
  • JavaScript
  • stateful function
  • security
  • abstraction 

Airbridge

A new calendar app without an implicit bias towards iOS is always worth celebrating. Airbridge certainly ticks the aesthetically-pleasing box and I quite like the idea of just defining time blocks as you go, rather than fitting things to a grid (which so often isn't flexible enough). Colour coding also looks great. No mention on whether you can sync calendars between accounts (a feature that would be incredibly useful to me), nor how much it is likely to cost once out of beta, but one to keep an eye on.

📆 15 Jun 2020  | 🔗

  • Technology
  • calendar
  • apps
  • Android
  • PWA
  • organisation
  • to do list 

Our skulls are out-evolving us | Katherine Reynolds Lewis

Over the last 250 years, our skulls have morphed in dangerous and troubling ways.

Nasal passages and jaws are narrowing, overbites are becoming more extreme, palates are rising, skulls are shrinking. The result is less face to fit everything into, meaning crowded dentition, breathing problems, and potentially insufficient space for growing brains. It could even be a root cause of elevating asthma rates, joint pain (particularly in the young), and allergies, whilst sleep disruption caused by narrow air spaces is already well documented at causing anxiety, depression, and behavioural disorders in people of any age.

Narrowing of facial features, in particular, seems linked with industrialisation; less-industrialised nations suffer from these issues less and the anthropological record show these conditions to be incredibly rare throughout human history. From about 250 years ago, morphological changes away from a consistently "broad, straight, wide" skull shape seems to have accelerated. One possible reason is the sudden introduction of bottle-feeding and soft "baby" food that may cause our chewing muscles to underdevelop. Environmental pollutants are a second potential factor (obviously).

The impact is most serious in children. Studies cited have shown links with sleep issues in young kids can reduce their functional abilities by the equivalent of two years (!) and result in lower average lifetime earnings. It increases mood swings and makes kids cranky, less able to focus, retain information, or be creative. It's also a key risk factor in childhood obesity.

Parents know sleep is important, but they rarely realize how proper sleep relies on a wide dental arch, tongue on the roof of the mouth, and long lower jaw.

Treatment using centuries-old techniques has positive results:

Within a month, Micah’s sleeping improved and his behavior transformed. Previously, he cried at doctor’s appointments, balked at going to school, acted cranky, and hid behind his mom around guests. Now, he smiles freely and runs up to his grandparents for hugs.

Lbry

On the face of it, Lbry is a YouTube competitor based on privacy and community. You can tip creators directly, but otherwise it basically works as you'd expect, only with fewer features (no subtitles, for example). They're also proud freedom of speech advocates. Which might explain why their homepage at time of browsing included conspiracy videos, Bitcoin pyramid schemes, and men's rights activism. It does appear to have quite a few educational YouTubers (MinutePhysics and XKCD are both advertised on the home page, though searching Minute Physics got me a top hit of a conspiracy video dissecting an MP vid, above the actual channel content).

To be clear, I support any competition for huge industry juggernauts like YouTube. If that is done in an open manner that embraces the distributed web and respects user's rights, all the better. I may have been left a little cold by Lbry, but I want to keep an eye on it and hope it goes somewhere interesting (hence making the note).

A designer's life with colour vision deficiency | A List Apart

Noah explains what it's like working in web design with colour vision deficiency (CVD). Gives a great overview of what CVD covers and why some people can see more/fewer colours than the average person; basically it boils down to whether you have all three (or four!) kinds of cones in your eye and if they have greater/lesser sensitivity, allowing them to understand a wider/narrower range of wavelengths. It can also be caused by brain signal interference and other cognitive phenomena.

This means that those colors in the spectrum effectively “drop out,” but since the light is still there, the brain translates it into a color based on peripheral data picked up by the other cones, combined with its brightness level.

Our cones are split between short, medium, and long wavelengths, but their exact calibration is determined by a lot of nuanced genetic and environmental variables. What's more, other biological variance impacts the light that ever reaches the cones:

The lens and cornea physically block very short wavelengths; it’s why we can’t see ultraviolet light directly, even though we have the sensor capability.

Which is why people who lack lenses (or have them removed as part of cataract surgery or other vision corrections) can see UV to some extent.

When something is only conveyed with color, that’s a gap where information can get lost on a large group of people.

Form factors are important. If colour is a major signal/indicator in a design (e.g. a traffic light) then there should be a secondary signal. That could be iconography or animation or, as with traffic lights, just always being a specific order i.e. form.

Color can enhance the message, but shouldn’t be the messenger.

Trello has a neat feature where colour labels can also have explicit background patterns, like zigzags and dots.

You can Shift + Click any colour in dev tools to cycle through colour formats. Super useful!

It's baffling to me that colourblindness has been something that has been used against Noah to skip him for promotion or reject his progression at work. Sigh. Still, I've definitely been guilty of the hundred-questions approach to finding out someone was colour blind (sorry Sam) so will need to internalise that.

As of February 2020, 86.3% of home pages tested had insufficient contrast. So, what does that mean? It means that the information on those sites is not being conveyed equally, to everyone.
I like that I can bring a singular perspective to the table and a voice for others like me; I am able to offer insights that others don’t necessarily have.

📆 14 Jun 2020  | 🔗

Pine.blog

Pine is an interesting tool for curating information. It acts as a feed reader, importing content from RSS, Atom, mf2 etc. That means you can subscribe to Tumblogs, YouTube channels, subreddit feeds as well, then get all of that information presented as a timeline. The gimmick is that the service also operates as a Medium-like blog platform, allowing you to quickly curate information, right posts, and publish them all in one place. Plus it obviously hooks into the webmention API and allows you to like, comment etc. from a variety of other platforms and display them in Pine. Interesting stuff.

CSS custom properties and the cascade | adactio

CSS variables (aka CSS custom properties) do not have access to the cascade. That means they can't fall back to earlier rules, so if your variable is invalid, the browser will simply unset that property. Huh. Jeremy explains the logic behind why this needs to be the case but it's still interesting. I understand that dynamically generated variables should probably work this way, but on initial render I'm still surprised it doesn't hold on to the current cascade value whilst it checks the variable and just fall back to that if the variable is invalid.

But if I store the background colour in a custom property, I can no longer rely on the cascade.

The beauty of progressive enhancement | Manuel Matuzovic

Manuel wanted to see how a new site he'd built worked on the updated Nokia 3310, which rocks a paired-down version of Opera Mini (yikes!). The answer? Surprisingly well, thanks to some clever fallbacks:

  • If no JS, use a DuckDuckGo search query instead (very neat) using the type="module" trick;
  • Allow grid to work with just one column;
  • Use <picture> with both WebP and JPEG options.

Not so sure about the lazy loading implementation but otherwise solid tips.

Made By Me, But Made Possible By:

CMS:

Build: Gatsby

Deployment: GitHub

Hosting: Netlify

Connect With Me:

Twitter Twitter

Instagram Instragram

500px 500px

GitHub GitHub

Keep Up To Date:

All Posts RSS feed.

Articles RSS feed.

Journal RSS feed.

Notes RSS feed.