fever.esszett.org’s Saved Items https://fever.esszett.org Shaun Inman’s Fever http://blogs.law.harvard.edu/tech/rss <![CDATA[Building JavaScript tools in a single HTML file]]>

#​765 — December 12, 2025

Read on the Web

JavaScript Weekly

Useful Patterns for Building HTML Tools — In many situations, you don’t need a full-on framework to build useful tools; just HTML, JavaScript and CSS in a single file will do the job fine. Simon’s become a bit of an expert by rolling out many such tools using LLMs, and shares his process and practices here. More please!

Simon Willison

Why Are the Top AI Companies Choosing SpreadJS? — Because SpreadJS brings a familiar Excel-like UI to JavaScript web apps. Trusted by leading AI innovators and organizations, it empowers devs to build finance, analytics, and more apps with Excel I/O, 500+ calc functions, charts, & more. View demos!

SpreadJS From MESCIUS sponsor

Deno 2.6 Released — The popular alternative runtime introduces a new npx-like tool called dx to run binaries from npm and JSR packages, adds a deno audit tool for identifying vulnerabilities in dependencies, adds more granular control over runtime permissions, implements source phase imports, and more.

Iwańczuk and Jiang (Deno)

IN BRIEF:

RELEASES:

📖  Articles and Videos

How the Seattle Times is Protecting Itself from npm Supply Chain Attacks — Technical details on how the Seattle Times has been adopting pnpm as an alternative to npm for its enhanced client-side security controls.

Ryan Sobol

A Proposal for Making Complex Web Apps Faster — From Microsoft comes an early-stage look at a proposal for a new Delayed Message Timing API to help deal with the slowdowns that multiple parallel contexts (iframes, threads, multiple windows, etc) can introduce. Feedback is being sought.

Joone Hur & Patrick Brosset (Microsoft)

Behind CERN’s Data Engine: Faster Writes, Instant Insights — CERN’s massive time-series workloads run faster with TimescaleDB, improving ingestion, compression, and real-time analytics.

Tiger Data sponsor

Building a Tiny 2D Physics Engine in JavaScript — A lovely, and rather old-school style post about building a simple physics engine from scratch in JavaScript then golfing it down to just 2KB of source as seen on its homepage (where there's a demo too).

Maxime Euzière

📄 Non-Blocking Cross-Browser Image Rendering on the Canvas – A good way to improve UX responsiveness with more complex use cases. Alexander Myshov

📄 Prelude of the Chambered Reborn: Rewriting a Classic in TypeScript – Porting a Java game that Minecraft’s creator worked on during a Ludum Dare contest. Angelo Lima

📄 Angular Tips – A documentation site covering numerous best practices for building large Angular apps. Martin Boué

🛠 Code & Tools

Open Sourcing the Remix StoreThe Remix Store is a swag store for the Remix project and its codebase provides a powerful example of how Remix’s own core team builds apps with Remix and Hydrogen.

Brooks Lybrand and the Remix Team

💡 You don't need to be a Remix user to benefit from this code, either. For example, here's the code to the store's neat 'glitchy' 404 page which you could adapt to use elsewhere.

🕒 <relative-time> 5.0: Format Timestamps as a Natural Language Relative Time — Supply this web component with a standard formatted date and time and it’ll render “2 days ago”, say. GitHub uses this itself on all repo and code views.

GitHub

Still Writing Tests Manually? — See why modern engineering teams like Dropbox, Notion and Lattice rely on Meticulous to run E2E UI tests.

Meticulous AI sponsor

ts-exec: Execute TypeScript on Node using SWC — From the creator of Adonis comes another way to run TypeScript on Node. While Node 22.18+ supports type stripping, ts-exec supports JSX and decorators and has some benefits over ts-node and tsx.

Harminder Virk

Toastflow: A Toast Notifications Library for Vue 3 — A really nifty web-based playground for playing around with toast notifications. I wish more projects had things like this. Toastflow is technically framework agnostic, but the only renderer so far is for Vue 3. GitHub repo.

Adrián Janočko

Devalue: Get the Job Done When JSON.stringify Can't — A library from the Svelte project that’s like JSON.stringify but that can tackle more things like cyclical and repeated references, regexes, Map and Set, and even custom types. You can try it out here.

Svelte

iceberg-js: A JavaScript Client for Apache Iceberg — A minimal, vendor-agnostic JavaScript client for the Apache Iceberg REST Catalog API that works in most runtimes and environments.

Katerina Skroumpelou (Supabase)

  • Inertia 2.3 – Build single-page React, Vue and Svelte apps using classic server-side routing and controllers (ideally for integrating with server-side frameworks like Django, Rails, Laravel, etc.)

  • OpenPGP.js 6.3 – OpenPGP implementation for JavaScript.

  • 🗓️ React Datepicker 9.0 – Long–standing React date picker component.

  • 🎸 SVGuitar 2.5 – Render guitar chord charts in SVG form.

  • pnpm 10.25 – Fast, space efficient package manager.

  • js-tokens 10.0 – Tiny JavaScript source tokenizer.

📰 Classifieds

Trigger.dev handles queues, retries, and long-running tasks so you can build production-ready agents and TypeScript workflows reliably at scale.

$5 PostgreSQL now available. Stop overpaying for idle instances with the new developer tier from Aiven.

📢  Elsewhere in the ecosystem

Some other interesting tidbits in the broader landscape:

]]>
https://javascriptweekly.com/issues/765 429458@fever.esszett.org Fri, 12 Dec 2025 00:00:00 GMT
<![CDATA[Schmierereien und umgestoßene Hochsitze: Sabotage im Stuttgarter Rotwildpark?]]>
Der Rotwildpark ist eines der beliebtesten Stuttgarter Ausflugsziele. Jetzt herrscht dort Unruhe. Unbekannte haben einen Pavillon beschmiert und Hochsitze umgestoßen. Der Staatsschutz der Stuttgarter Polizei ermittelt.]]>
https://www.stuttgarter-zeitung.de/inhalt.schmierereien-und-umgestossene-hochsitze-sabotage-im-stuttgarter-rotwildpark.a712a77d-6681-404b-aad9-1072dccd8a3c.html 426839@fever.esszett.org Fri, 03 Nov 2023 12:05:00 GMT
<![CDATA[GIFparade LVI]]> GIFparade LVI Gifparade-Artikelbild_56

Mittwochmorgen – Zeit für eine neue „GIFparade“! Wobei, dieses Mal ist die Ausgabe leider nur so halb neu, da ich zeitlich nicht groß dazu gekommen bin, wie gewohnt das Netz nach bewegten Bildern zu durchforsten. Entsprechend sind ein paar ältere Motive dazu gekommen, die ich noch auf Halde hatte (aber die bislang noch nicht in einer GIFparade vorgekommen sind!). Insgesamt sind es damit dann auch stattliche 40+8 bewegte Bildchen geworden. Nächste Woche gibt es dann hoffentlich wieder mehr „frische Kost“ für euch. Ich wünsche aber auch so gute Unterhaltung!

GIF der Woche: Face-Face

GIFparade LVI GP56_01

Hintergrund-Erklärung: Neu von den Machern von Facebook, Facetime und Notebook: „Face-Face“ (Patent Pending)! Was ausschaut wie eine neue Folge der atemberaubenden Science-Fiction-Gesellschafts-Satire-Serie „Black Mirror“ ist bereits greifbare Realität. Demnächst bei „Die Höhle der Löwen“ können Sie „Face-Face“ genauer vorgestellt und selbst vor das Face auf dem Bildschirm präsentiert bekommen. Der Clou: Man setzt sich einfach ein anderes Gesicht über das eigene! Dank modernste Flachbildschirm-Technologie lässt sich das ausgewählte Gesicht sogar beleuchten und bewegen. Wahnsinn. Noch dazu bietet Face-Face eine zubuchbare Audio-Option, die vorher eingegebene Texte in Sprache konvertiert, so dass eine andere Stimme als die eigene zu hören ist. Perfekt für alle, die eh schon mit einer Maske durchs Leben laufen. Denn sind wir doch mal ehrlich: In unserer heutigen Gesellschaft zählt nur der Schein. In Zukunft kann man richtig damit scheinen – mit „Face-Face“! Für schlappe 5.999 Euro können Sie ihr eigenes „Face-Face“ erwerben. Beim Standard-Tarif sind vier Gesichts-Optionen auswählbar. Weitere Basis-Exemplare sowie Accessoires, Tattooes und Looks sind gegen kleine Transaktionen hinzubuchbar. So ist das inviduelle „Face-Face“-Erlebnis für jede:n möglich. Ja, es klingt komisch, ist aber so: Wir leben in der Zukunft.

GIFparade LVI GP56_02
GIFparade LVI GP56_03
GIFparade LVI GP56_04
GIFparade LVI GP56_05
GIFparade LVI GP56_06
GIFparade LVI GP56_07
GIFparade LVI GP56_08
GIFparade LVI GP56_09
GIFparade LVI GP56_10
]]>
https://www.langweiledich.net/gifparade-lvi/ 425985@fever.esszett.org Wed, 01 Nov 2023 07:00:24 GMT
<![CDATA[Luxury ‘Doomsday Condo’ Keeps You Comfy Through An Apocalypse For $3M]]> [Click here to view the video in this article]


Image via Survival Condo


 


Time and again, a calendar predicts the next probable date for an apocalypse; and time and again, that date passes without a hitch. With a pandemic and a war going on in tandem, though, the concept doesn’t seem all that far-fetched.


 


Waiting in the wings at the end of time are luxury bunkers, with one of the most renowned being the Survival Condo.


 


Tucked away at a secret location north of Wichita, Kansas, the shelter welcomes families hiding from the grasp of a world-ending disaster. In its former life, it served as a missile silo for the US government during the Cold War.


 


Its owner Larry Hall purchased the property in 2007 for US$300,000 and dedicated nearly US$20 million into making it a place of escape for as many as 12 families and their pets.


 




Between walls of
up to nine feet thick and 15 stories underground, the self-sufficient facility runs on various water systems, power supplies, as well as hydroponic food and aquaponic farming equipment. There’s a volcano ash remover in the event of a volcanic eruption too.


 



Image via Survival Condo


 


It’s capable of sustaining 75 residents for five years. And when the coronavirus swept the world, builders of the Survival Condo armed it with “Nuclear, Biological, and Chemical (NBC) air filtration [that] can filter out pathogens like COVID-19.”


 


“However, we cannot guarantee that you will not pick up the virus from direct or indirect contact with an infected person or object either before or after you arrive at our facility,” the website cautions.


 


While it’s all about keeping people alive, the condo doesn’t deny its occupants of luxuries like a swimming pool with a water slide, movie theater, library, gym, bar, dog park, rock climbing wall, arcade room, and more.


 



Image via Survival Condo



These privileges provide a touch of normalcy for residents who have been deprived of things like sunlight.


 



Image via Survival Condo



Speaking of sunlight,
rooms are fitted with remote-controlled artificial windows that display fake scenery, given that the shelter is buried way underground. But they’re not just for ornamental purposes.


 



Image via Survival Condo


 


During a month-long stay at the bunker, Hall felt especially alone due to the less tangible cues of telling time. So he installed the LED windows to simulate the natural progression of day to night and help restore residents’ circadian rhythms.


 


Interestingly, a psychologist hired to make the bunker more comfortable persuaded its owners to build a supermarket, complete with shopping carts, to replace the dystopian “storerooms” drawn out on its blueprint. The space was to be like a “miniature Whole Foods,” Hall recounted in a statement via the Guardian, as the act of rummaging through cardboard boxes for rations would overwhelm people.


 


Bringing to mind the days of stockpiling during the pandemic, the toilets have a bidet system—like the sort in Japan—so there wouldn’t be a need for toilet paper, which take up too much storage space.



All this, of course, comes at a price. A half-floor unit will set you back US$1.5 million, while a full-floor apartment is priced at US$3 million and a 3,600-square-foot, two-story penthouse costs US$4.5 million. 



Image via Survival Condo



The news outlet cited one apartment that mimics a log cabin and has its own artificial fireplace.  


 


Hall emphasized in an interview with Insider in 2019, pre-pandemic, that the bunker’s high operational costs come from “the caliber” of its infrastructure, rather than its opulence. 


 


Residents also have to fork out an extra US$5,000 a month to pay for association fees, the Guardian notes. That’s evidently not an issue for the property’s clientele; as per Insider, every unit was snapped up even before construction for the condominium was complete.


 


When all is said and done, this is still a den for people fighting to survive. Hall revealed that the facility includes a .223 remote-controlled rifle that enables residents to wound—or perhaps even kill—intruders or nemeses like “a video game.” True enough, the control room connected to this rifle has a joystick.


 


For those who don’t believe in taking someone else’s life, the site can also unleash paintballs to warn enemies about what to expect  if they get too near. 


 


 


 


[via Insider, The Guardian, What’s Inside?, images via Survival Condo]

]]>
http://www.designtaxi.com/news/418348/Luxury-Doomsday-Condo-Keeps-You-Comfy-Through-An-Apocalypse-For-3M/ 417110@fever.esszett.org Mon, 11 Apr 2022 08:04:09 GMT
<![CDATA[Instagram Limits Users' Ability to Limit How Much Time They Spend in the App]]> TechCrunch.


In 2018, Instagram introduced options in the app to set a daily time limit, with a reminder to be sent when that time limit is reached – useful for those who want to cut down on their social media usage. Originally, users were able to select a time limit as low as ten or even five minutes a day, but selecting such short durations is no longer possible.

Following the latest app update, the "Set daily time limit" menu card pops up and prompts users to choose how long that should be, with a new minimum of 30 minutes, while the radio button next to the maximum of three hours is pre-selected in the menu card, as if to nudge users to choose that limit.

The popup does say the user can keep their existing limit if they wish, but an additional popup on the activity page in the app says the 10-minute value is "no longer supported." Indeed, after the update, users will find the new limits available are now 30 minutes, 45 minutes, one hour, two hours, and three hours.


Neither Instagram nor parent company Meta (formerly Facebook) has commented on the quietly implemented change, which appears to run counter to Instagram's claim, made in 2018, that it wants to empower users to make intentional decisions about how much time they spend on the app.

The change arrives just a few months after Instagram introduced its "Take a Break" feature that lets users opt into receiving periodic reminders if they've been on the app for long stretches of time. As The Verge notes, when "Take a Break" was in testing, Instagram head Adam Mosseri said that "you know what's best for you when it comes to how you use the app."

The change follows disappointing quarterly earnings reported by Meta earlier this month, which saw the company slash its guidance for the first quarter of 2022 by $30 billion.

Meta partly blamed its weaker performance on steps taken by Apple to improve user privacy by making it harder for platforms and apps to track users across other apps and websites for ad targeting purposes, which Meta said will cost its business $10 billion this year.
This article, "Instagram Limits Users' Ability to Limit How Much Time They Spend in the App" first appeared on MacRumors.com

Discuss this article in our forums

]]>
https://www.macrumors.com/2022/02/22/instagram-changes-app-daily-use-limits/ 415704@fever.esszett.org Tue, 22 Feb 2022 10:52:50 GMT
<![CDATA[‘Living Robots’ Can Reproduce And Make Babies That Grow Up To Look Like Them]]> [Click here to view the video in this article]


Illustration 95407271 © Grandfailure | Dreamstime.com

Sophia the Robot recently brought up that she wishes to be a mother one day. While the obvious solution would be for humans to manufacture her a mini-me, the closest species of childbearing robots is here.

Scientists have developed the world’s first “living robots” that can actually self-replicate and self-reproduce. Made from frog cells, the millimeter-wide ‘Xenobots’—as they are called—procreate through a unique kind of biological self-replication where loose cells are pushed together to create “babies.”

Researchers detail in the Proceedings of the National Academy of Sciences (PNAS) journal that the Xenobots live in Petri dishes and are surrounded by single cells. Previously, it was found that the Xenobots could self-heal and even store memories, but scientists have now learned that they can also create other cells of their kind. They do this by grouping nearby isolated cells, shaping them into new Xenobots that grow up to look like their parents.

When mature, the next generation of Xenobots can continue this cycle, so on and so forth.

Self-reproducing robots are one thing, but the team wanted to go further and boost the Xenobots’ fertility rate. The scientists thus turned to artificial intelligence to develop a shape that could spawn the most generations, AKA giving Xenobots the childbearing hips of the robot world.



What AI came up with was a C-shaped parent, resembling Pac-Man, which could use its “mouth” to lump cells together to form “babies.” As per TNW, these clusters ended up having grandchildren, then “great-grandchildren” and “great-great-grandchildren.”

Not only do scientists think this breakthrough can pave the way for innovations in the medical field, but they also hope to observe Xenobots and learn how Earth’s first organisms might have reproduced.



[via TNW and NewScientist, cover illustration 95407271 © Grandfailure | Dreamstime.com]]]>
http://www.designtaxi.com/news/416846/Living-Robots-Can-Reproduce-And-Make-Babies-That-Grow-Up-To-Look-Like-Them/ 412939@fever.esszett.org Wed, 01 Dec 2021 09:42:23 GMT
<![CDATA[Frustrating Design Patterns: Broken Filters]]> Filters are everywhere. While we often think of them appearing when booking flights or shopping online, filters are frequently used in pretty much every interface that features more than a handful of data points.

It’s not necessarily just the sheer amount of data that is difficult to make sense of though; it’s the complexity and lack of consistency that the data usually entails which requires some filtering — such a common scenario in data grids, enterprise dashboards, vaccine tracking and public records registries.

Part Of: Design Patterns

Designing For The Comfortable Range

As customers, we use filters to reduce a large set of options to a more manageable and highly relevant selection. Perhaps just a few dozens of payment slips instead of thousands, or just a handful of blouses rather than the entire collection.

We have specific attributes of interest, a specific intent, that we need to somehow communicate to the interface. We do so by breaking our intent down into a set of available features. That intent might be fairly specific or quite general, but in both cases, the design should minimize the time needed for customers to get from the default state (when no filters are selected) to the final state (when all filters are successfully applied).

That’s only one part of the story though. Applying relevant filters is the easy part, but showing just enough relevant results is slightly more difficult. In fact, for every interface, and for every intent, we have a particular comfortable range in mind, that is a preferred number of options that we think we can manage relatively effortlessly.

This range of options doesn’t have to fit on a single screen, or be displayed on a single page, or be limited to a small shortlist that we can easily remember. It can be anything from dozens to hundreds of items scattered over a number of pages.

The important part is that this range meets our expectations that:

  • we are looking at highly relevant options,
  • we can easily understand what we are exploring,
  • we can spot the differences between all options, and
  • we can process everything within a reasonable, foreseeable timeframe.

Unlike sorting, which merely rearranges the results according to some preferred attributes (soft boundaries), filters always represent hard boundaries. They strictly limit the scope of results. Not enough proper filters and users shoot way over the comfortable range; too many filters and users end up with zero-results and abandon the site altogether.

The comfortable range varies significantly from a product to product. The cue to where it lies can be inferred from how different the options actually are. In usability tests, we see people having no issues exploring 20–30 kinds of vehicles, 40–50 kinds of sneakers, 70–80 bouquets of flowers, or even paginating through 100–200 payment slips. Yet they feel utterly overwhelmed when exploring 15 different types of sharpies or AAA-batteries. As a rule of thumb, it seems that the more different the options are, the more comfortable we feel with a slightly larger set of options.

The ultimate question, then, is how to find that delicate balance, when our interface helps users quickly arrive at just enough results. One answer to that question lies in something that sounds awfully obvious: eliminate any roadblocks on users' path towards that comfortable range. It’s easier written than done though — especially when you have dozens or even hundreds of filters that have to be accessible on mobile, on desktop, and everywhere in-between.

The Complexity of Filtering

At the first glance, filtering doesn’t seem like a particularly complex endeavour. Of course we can have lengthy debates about the right form elements for different kind of filters — autocomplete, radios, toggles, select-dropdowns, sliders and buttons just to name a few — but in their essence, all of the form elements are just basic input, right?

Well, as it turns out, there are quite a few facets of the experience that make designing filters quite difficult:

  • filters can come in various flavours and shapes, for pricing, ratings, colors, dates, times, size, brand, capacity, features, level of experience, age range, symptoms, product status etc.
  • filters usually come in large numbers, and they need to be displayed across screens,
  • filters often have different states (selected, unselected, disabled)
  • filters often need sensible defaults, and they have to remember user’s input,
  • filters can be interdependent, and these dependencies need to be obvious,
  • filters can be difficult to validate, e.g. when users can type in complex data, such as time or dates,
  • filters need to support and show meaningful error messages,
  • and so many others.

Filters never exist on their own; in one way or another, they are always connected to the results that they are acting upon. This connection often causes filters and matching results to be somewhat synchronous, as the latter depend on how fast the UI registers an input, and how much time it needs to successfully process it.

Now, addressing all the fine intricacies of each of these challenges is nothing short of monumental work, yet some issues are slightly more frustrating than others, making the overall experience painful and annoying, and hence causing high abandonment and high bounce rates. Let’s explore some of the critical ones.

Avoid Tiny Scrollable Panes

After just a few usability sessions with customers who try to use filters on their own device, one can spot some common frustrations making rounds over and over again. One of the most annoying patterns comes from lengthy filter sections that contain dozens of options. These options often get tucked away in a tiny scrollable pane, showing 3–4 options at a time and requiring vertical scrolling to browse the options.

These sections often cause customers to scroll vertically, slowly, accurately, with extreme focus and precision. As they do so on mobile, some filters get activated by mistake, prompting the customer to be even more focused. A classic example of this pattern is the “Brands” filter, which often contains hundreds of options, sorted by popularity or by alphabet.

An alternative option would be to show as many as 7–10 options at a time with an accordion that would expand and show all options on tap/click. These options don’t have to be displayed in their full height, but can live in a larger scrollable pane. But then they shouldn’t be activated by scrolling through the pane.

It’s also a good idea to compliment the filter with a search autocomplete and an alphabetical view if some of the popular options are highlighted at the top. A good example of it is Rozetka.ua, an eCommerce retailer from Ukraine (see above).

Always Provide Text Input Fallback For Sliders

Whenever users can define a large range of values, be it pricing range in retail store, max duration of a train trip or a min/max coverage for an insurance plan, we probably will use some sort of a slider. All sliders have one thing in common: they are wonderful when we want to encourage customers to explore many options quickly, but they are quite frustrating when the user has something specific in mind and hence needs to be a little bit more precise.

Just think about the frustration we usually have to go through when bumping up the price a little bit, from $200 to $215, or adding another hour for the duration of a flight. Doing so with a slider is difficult because it requires incredible precision, and that always produces mistakes and causes frustration.

We’ve covered how to design a perfect slider in detail already, but probably the most important feature that every slider needs is to support different speeds of interaction. In fact, there are a few common types of interaction:

  • when customers want to explore many options quickly, a good ol’ slider with a track and a thumb works perfectly fine;
  • when customers want to be more precise in their exploration, we can help by adding steppers (+/-) for granular jumps forward and backwards,
  • when customers have an exact value in mind, we can help by providing text input fields for min/max values, so users can type in values directly without having to use the slider,
  • in all of these cases, solutions have to be accessible and support keyboard-only interaction.

Take a look at the Lloydsbank’s example below. A personal loan calculator supports all types of interaction beautifully. Also, notice the focus styles when the thumb is activated, and ranges displayed below the interest rate slider at the top to indicate where the customer is currently navigating. The interest rate changes depending on how much money the customer would like to borrow.

Another interesting example of a well-designed slider comes from Made.com’s Sofasizer, which allows you to filter couches based on the dimensions that they need to have. Rather than using a set of input fields, Made.com chose to use a visual interface with a “Resize” icon. You can drag the handle to adjust the size, or you can type in exact values in the height and width input fields.

Another option is to turn all filter sections into overlays and display them on tap/click above the results. In fact, you could even use floating filters, so as a customer scrolls down the page, the filters are still accessible all the time.

An example of this pattern is Adidas (see the image below). The filters bar is persistent; even as users are scrolling down the page, the filter overlay won’t close automatically — it requires user’s input, again handing over the control to the user. However, it does close automatically once one of the filters is selected. If the user wants to select multiple filters, they have to re-open the same filter group over and over again. Keeping the filters persistent might be a better idea. Still, the result: no layout shifts, no frustrating scrolling in narrow corridors, and filters are always accessible.

Not to say that displaying filters above the results is always better by default. On Asos, every filter input causes jumps to the top of the page, so customers have to manually scroll down to continue filtering. Instead of re-rendering the entire page, it would make more sense to re-render the filters area and the product list separately.

Ikea features filters at the top of the results. Sometimes filters appear in a drop-down overlay, and sometimes as a pill below the filters. But most of the time, unlike previous examples, when a filter is selected, it displays a sidebar mega-filter-overlay on the right with all available filtering options grouped there. As the customer is making their way through the filters, the product list is updated in the background asynchronously. More importantly, notice the “Apply” button which label changes depending on the input.

With every filter input, a new request is sent to the server, retrieving the number of results, and then showing that number in the UI. That’s a great way to give users a very clear sense of how far or how close they are towards their comfortable range.

Another example is Galaxus.ch (see below), a Swiss eCommerce retailer that provides a first-class experience when it comes to filtering. The filters are displayed above product results; a filter overlay appears on tap/click. No slowdowns, fast response times and a lovely integration of active filters with the filters area. A great reference example that is worth considering when designing any kind of filter.

In general, having an “Apply” button along with real-time updates of the content area seems to be working best. It really combines the best of both solutions: showing results immediately when they arrive, while keeping filters accessible at all times.

Avoid Split-Screens On Mobile

The issues that we’ve explored in the article apply equally to large and small screens. However, on small screens, and especially on slow connections, these issues become even more critical. Most of the time, interfaces tend to block the entire UI on a single filter input, causing massive delays for customers on the go (e.g. Crutchfield, Walgreens). On the other hand, it’s common to split the screen to display a filters overlay, while still showing the product list updated in the background (e.g. Nordstrom).

In general, though, it might be a better idea to experiment if a full-page overlay for filters would perform better. It gives more space to experiment with a multi-column view, or perhaps even display a swipeable area to choose filters without having to move between separate pages. In fact, using accordions that could collapse and expand instead of bringing the user to a separate page might be a good idea — similar to what we’ve discussed with mega-dropdowns.

Unlike on desktop, having an “Apply” button in all these examples matters, and you can make it slightly more useful by adding the amount of products as a label on the button and keeping the button sticky at the bottom as the user is scrolling down.

Filtering Design Checklist

As usual, here are all the things to keep in mind when designing any kind of filter — a little helper to avoid missing important details before heading into conversations with your fellows designers and developers. You can find a full deck of Smart Interface Design Patterns Checklists at yours truly Smashing Magazine as well.

  1. Can we avoid a filter icon and show filters as they are?
  2. If not, what icon do we choose to indicate filtering?
  3. Is the icon + padding large enough for comfortable tapping?
  4. Do we put the icon at the top, bottom or floating (mobile/desktop)?
  5. What exactly happens when the user clicks/taps on the icon?
  6. How will the icon change on tap/click?
  7. Will we have some sort of animation or transition on click?
  8. Will filters appear as full page/partial overlay or slide-in?
  9. Can we avoid sidebar filtering as it’s usually slow?
  10. Do we expose popular or relevant filters by default?
  11. Do we display the number of expected results for each filter?
  12. Can we use a horizontal swiper to move between filters?
  13. Can we avoid drop-downs and use only buttons/chips + toggles?
  14. For complex filters, do we provide search within filters?
  15. Do we use icons to explain differences between various filters?
  16. Do we use the right elements for filters, e.g. sliders, buttons, toggles?
  17. Do filters apply automatically (yes, for slide-ins)?
  18. Do filters apply manually on confirmation (“Apply”) (yes, for overlays)?
  19. How do we communicate already selected filters?
  20. Can selected filters appear as removable pills, chips or tags?
  21. Do we recommend relevant filters based on selection?
  22. Do we track incompatibility between selected filters?
  23. How do error messages or warning appear in the UI?
  24. Do we allow customers to reset all filters quickly, at once?
  25. Are filters (or filters button) floating on scroll on mobile/desktop?
  26. Can users tap on the same spot to open/close filters?
Wrapping Up

Too often the filtering experience on the web is broken and frustrating, making it just unnecessarily difficult for customers to get to that shiny comfortable range of relevant results. When designing the next filter, take a look at some of the common issues that you might want to avoid, and hopefully avoid all the frustration that comes from broken and inaccessible implementations.

  • Design for the comfortable range of options, for the case when a customer wants to add multiple filters quickly — one right after another.
  • For lengthy filter groups, avoid tiny scrollable panes and show as many as 7–10 options at a time with an accordion that would expand and show all options on tap/click. Add a search autocomplete and an alphabetical view as well.
  • Always add steppers (+/-) and text input fields when using sliders,
  • Customer often want to set a number of filters of the same type. Never auto-scroll users on a single input and never collapse a group of filters automatically.
  • Never freeze the UI on a single input, and never make your customer wait for an interface to respond back when setting filters.
  • Always update filters and show results asynchronously, so that on every filter input, matching results could be updated asynchronously, while the filters always remain accessible and at the same place.
  • Always avoid layout shifts on filter input and consider displaying filters above the results.
  • On mobile, “Apply”-button could be sticky at the bottom of the screen. Update the count of products and show them on the button.

Articles of The Series

If you find this article useful, here’s an overview of similar articles we’ve published over the years — and a few more are coming your way.

]]>
https://smashingmagazine.com/2021/07/frustrating-design-patterns-broken-frozen-filters/ 407835@fever.esszett.org Wed, 14 Jul 2021 13:30:00 GMT
<![CDATA[How To Migrate From jQuery To Next.js]]> When jQuery appeared in 2006, a lot of developers and organizations started to adopt it for their projects. The possibility of extending and manipulating the DOM that the library offers is great, and we also have many plugins to add behavior to our pages in case we need to do tasks that aren’t supported by the jQuery main library. It simplified a lot of the work for developers, and, at that moment, it made JavaScript a powerful language to create web applications or Single Page Applications.

The result of jQuery popularity is measurable still today: Almost 80% of the most popular websites of the world still use it. Some of the reasons why jQuery is so popular are:

  • It supports DOM manipulation.
  • It provides CSS manipulation.
  • Works the same on all web browsers.
  • It wraps HTML event methods.
  • Easy to create AJAX calls.
  • Easy to use effects and animations.

Over the years, JavaScript changed a lot and added several features that we didn’t have in the past. With the re-definition and evolution of ECMAScript, some of the functionalities that jQuery provided were added to the standard JavaScript features and supported by all the web browsers. With this happening, some of the behavior jQuery offers was not needed anymore, as we are able to do the same things with plain JavaScript.

On the other hand, a new way of thinking and designing user interfaces started to emerge. Frameworks like React, Angular or Vue allow the developers to create web applications based on reusable functional components. React, i.e., works with the “virtual DOM”, which is a DOM representation in the memory, whereas jQuery interacts directly with the DOM, in a less performant way. Also, React offers cool features to facilitate the development of certain features, such as state management. With this new approach and the popularity that Single Page Applications started to gain, a lot of developers started to use React for their web application projects.

And front end development evolved even more, with frameworks created on top of other frameworks. That is the case, for example, of Next.js. As you probably know, it’s an open-source React framework that offers features to generate static pages, create server-side rendered pages, and combine both types in the same application. It also allows creating serverless APIs inside the same app.

There is a curious scenario: Even though these frontend frameworks are more and more popular over the years, jQuery is still adopted by a vast majority of web pages. One of the reasons why this happens is that the percentage of websites using WordPress is really high, and jQuery is included in the CMS. Another reason is that some libraries, like Bootstrap, have a dependency on jQuery, and there are some ready-to-use templates that use it and its plugins.

But another reason for this amount of websites using jQuery is the cost of migrating a complete web application to a new framework. It’s not easy, it’s not cheap and it’s time-consuming. But, in the end, working with new tools and technologies brings a lot of benefits: wider support, community assistance, better developer experience, and ease of getting people working on the project.

There are many scenarios where we don’t need (or don’t want) to follow the architecture that frameworks like React or Next.js impose on us, and that is OK. However, jQuery is a library that contains a lot of code and features that are not needed anymore. Many of the features jQuery offers can be accomplished using modern JavaScript native functions, and probably in a more performant way.

Let’s discuss how we could stop using jQuery and migrate our website into a React or Next.js web application.

Define The Migration Strategy

Do We Need A Library?

Depending on the features of our web application, we could even have the case where a framework is not really needed. As mentioned before, several jQuery features were included (or at least a very similar one) to the latest web standard versions. So, considering that:

  • $(selector) pattern from jQuery can be replaced with querySelectorAll().

Instead of doing:

$("#someId");

We can do:

document.querySelectorAll("#someId");
  • We have now the property Element.classList if we want to manipulate CSS classes.

Instead of doing:

$(selector).addClass(className);

We can do:

element.classList.add(className);
  • Many animations can be done directly using CSS, instead of implementing JavaScript.

Instead of doing:

$(selector).fadeIn();

We can do:

element.classList.add('show');
element.classList.remove('hide');

And apply some CSS styling:

.show {
  transition: opacity 400ms;
}

.hide {
  opacity: 0;
}

Instead of doing:

$(selector).on(eventName, eventHandler);

We can do:

element.addEventListener(eventName, eventHandler);
  • Instead of using jQuery Ajax, we can use XMLHttpRequest.

Instead of doing:

$.ajax({
  type: 'POST',
  url: '/the-url',
  data: data
});

We can do:

var request = new XMLHttpRequest();
request.open('POST', '/the-url', true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.send(data);

For more details, you can take a look at these Vanilla JavaScript Code Snippets.

Identify Components

If we are using jQuery in our application, we should have some HTML content that is generated on the web server, and JavaScript code that adds interactivity to the page. We are probably adding event handlers on page load that will manipulate the DOM when the events happen, probably updating the CSS or the style of the elements. We could also be calling backend services to execute actions, that can affect the DOM of the page, or even reload it.

The idea would be to refactor the JavaScript code living in the pages and build React components. This will help us to join related code and compose elements that will be part of a larger composition. By doing this we will also be able to have better handling of the state of our application. Analyzing the frontend of our application, we should divide it into parts dedicated to a certain task, so we can create components based on that.

If we have a button:

<button id="btn-action">Click</button>

With the following logic:

var $btnAction = $("#btn-action");

$btnAction.on("click", function() {
  alert("Button was clicked");
});

We can migrate it to a React Component:

import React from 'react';

function ButtonComponent() {

  let handleButtonClick = () => {
    alert('Button clicked!')
  }

  return <button onClick={handleButtonClick}>Click</button>
}

But we should also evaluate how the migration process will be accomplished since our application is working and being used, and we don’t want to affect it (or, at least, affect it as little as possible).

Good Migration

A good migration is one where all the parts of the application are fully migrated to the new framework or technology. This would be the ideal scenario for our application since we would keep in sync all the parts, and we would be using a unified tool and a unique referred version.

A good and complete migration usually includes a complete re-write of the code of our app, and that makes sense. If we build an app from scratch, we have the possibility of deciding what direction we want to take with the new code. We could use a fresh point of view over our existing systems and workflow, and create a whole new app with the knowledge that we have at this moment, more complete than the one we had when we first created our web application.

But a complete rewrite has some problems. First of all, it requires a lot of time. The bigger the application is, the more time we will need to rewrite it. Another problem is the amount of work, and amount of developers, that it takes. And, if we don’t do a progressive migration, we have to think about how much time our application will be unavailable.

Normally, a complete rewrite can be accomplished with small projects, projects that don’t change frequently, or applications that are not so critical for our business.

Fast Migration

Another approach is dividing the application into parts or pieces. We migrate the app part by part, and we release those parts when they are ready. So, we have migrated parts of our application available for the users, and coexisting with our existing production app.

With this gradual migration, we deliver separated features of our project in a faster way to the users, since we don’t have to wait for the complete application to be re-written. We also get faster feedback from the users, which allows us to detect bugs or issues earlier.

But a gradual migration drives us to have different tools, libraries, dependencies, and frameworks. Or we could even have to support different versions from the same tool. This extended support could bring conflicts to our application.

We could even have problems if we are applying policies in the global scope since each one of the migrated parts could work in a different way, but being affected by the code that set global parameters to our system. An example of this is the use of a cascade logic for CSS styling.

Imagine we work with different versions of jQuery across our web application because we added functionalities from newer versions to the modules that have been created later. How complicated would it be to migrate all our app to a newer version of jQuery? Now, imagine the same scenario but migrating to a completely different framework like Next.js. That can be complicated.

Frankenstein Migration

Denys Mishunov wrote an article on Smashing Magazine presenting an alternative to these two migration ideas, trying to get the best of the previous two approaches: The Frankenstein Migration. It bases the migration process in two main components: Microservices and Web Components.

The migration process consists of a list of steps to follow:

1. Identify Microservices

Based on our app code, we should divide it into independent parts that are dedicated to one small job. If we are thinking about using React or Next.js, we could link the concept of microservices to the different components that we have.

Let’s think about a grocery list application as an example. We have a list of things to purchase, and an input to add more things to the list. So, if we want to split our app into small parts, we could think about an “item list” component and an “add item”. Doing this, we can separate the functionality and markup related to each one of those parts into different React components.

To corroborate the components are independent, we should be able to remove one of them from the app, and the other ones shouldn’t be affected by that. If we get an error when removing the markup and functionality from a service, we are not correctly not identifying the components, or we need to refactor the way our code works.

2. Allow Host-to-Alien Access

"Host" is our existing application. “Alien” is the one we will start creating, with the new framework. Both should work independently, but we should provide access from Host to Alien. We should be able to deploy any of the two applications without breaking the other one, but keeping the communication between them.

3. Write An Alien Component

Re-write a service from our Host application into our Alien application, using the new framework. The component should follow the same principle of independence that we mentioned before.

Let’s go back to the grocery list example. We identified an “add item” component. With jQuery, the markup of the component will look something like this:

<input class="new-item" />

And the JavaScript/jQuery code to add the items to the list will be something like this:

var ENTER_KEY = 13;

$('.new-item').on('keyup', function (e) {
  var $input = $(e.target);
  var val = $input.val().trim();

  if (e.which !== ENTER_KEY || !val) {
    return;
  }

  // code to add the item to the list

  $input.val('');
});

Instead of that, we can create an AddItem React component:

import React from 'react'

function AddItemInput({ defaultText }) {
  let [text, setText] = useState(defaultText)

  let handleSubmit = e => {
    e.preventDefault()
    if (e.which === 13) {
      setText(e.target.value.trim())
    }
  }

  return 
    <input type="text" 
      value={text} 
      onChange={(e) => setText(e.target.value)} onKeyDown={handleSubmit} />
}

4. Write Web Component Wrapper Around Alien Service

Create a wrapper component that imports our just created Alien service and renders it. The idea is to create a bridge between the Host app and the Alien app. Keep in mind that we could need a package bundler to generate JavaScript code that works in our current application since we will need to copy our new React components and make them work.

Following the grocery list example, we can create an AddItem-wrapper.js file in the Host project. This file will contain the code that wraps our already created AddItem component, and creates a custom element with it:

import React from "../alien/node_modules/react";
import ReactDOM from "../alien/node_modules/react-dom";
import AddItem from "../alien/src/components/AddItem";

class FrankensteinWrapper extends HTMLElement {
  connectedCallback() {
    const appWrapper = document.createElement("div");
    appWrapper.classList.add("grocerylistapp");

    ...

    ReactDOM.render(
      <HeaderApp />,
      appWrapper
    );

    …

  }
}

customElements.define("frankenstein-add-item-wrapper", FrankensteinWrapper);

We should bring the necessary node modules and components from the Alien application folders since we need to import them to make the component work.

5. Replace Host Service With Web Component

This wrapper component will replace the one in the Host application, and we will start using it. So, the application in production will be a mix of Host components and Alien wrapped components.

In our example Host application, we should replace:

<input class="new-item" />

With

<frankenstein-add-item-wrapper></frankenstein-add-item-wrapper> 

... 

<script type="module" src="http://www.smashingmagazine.com/js/AddItem-wrapper.js"></script>

6. Rinse And Repeat

Go through steps 3, 4, and 5 for each one of the identified microservices.

7. Switch To Alien

Host is now a collection of wrapper components that include all the web components we created on the Alien application. As we converted all the identified microservices, we can say that the Alien application is finished and all the services were migrated. We just need to point our users to the Alien application now.

The Frankenstein Migration method works as a combination of both the Good and the Fast approaches. We migrate the complete application but release the different components when they are done. So, they are available to be used sooner and evaluated by the users in production.

We have to consider, though, that we are doing some over-work with this approach. If we want to use the components we create for our Alien application, we have to create a wrapper component to include in the Host app. This makes us spend time developing the code for these wrapper elements. Also, by using them in our Host application, we are duplicating the inclusion of code and dependencies, and adding code that will affect the performance of our application.

Strangler Application

Another approach we can take is the Legacy Application Strangulation. We identify the edges of our existing web application, and whenever we need to add functionalities to our app we do it using a newer framework until the old system is “strangled”. This approach helps us to reduce the potential risk we can experiment while migrating an app.

To follow this approach, we need to identify different components, as we do in Frankenstein Migration. Once we divide our app into different pieces of related imperative code, we wrap them in new React components. We don’t add any additional behavior, we just create React components that render our existing content.

Let’s see an example for more clarification. Suppose we have this HTML code in our application:

<div class="accordion">
  <div class="accordion-panel">
    <h3 class="accordion-header">Item 1</h3>
    <div class="accordion-body">Text 1</div>
  </div>
  <div class="accordion-panel">
    <h3 class="accordion-header">Item 2</h3>
    <div class="accordion-body">Text 2</div>
  </div>
  <div class="accordion-panel">
    <h3 class="accordion-header">Item 3</h3>
    <div class="accordion-body">Text 3</div>
  </div>>
</div>

And this JavaScript code (we already replaced jQuery functions with new JavaScript standard features).

const accordions = document.querySelectorAll(".accordion");
for (const accordion of accordions) {
  const panels = accordion.querySelectorAll(".accordion-panel");
  for (const panel of panels) {
    const head = panel.querySelector(".accordion-header");
    head.addEventListener('click', () => {
      for (const otherPanel of panels) {
        if (otherPanel !== panel) {
          otherPanel.classList.remove('accordion-expanded');
        }
      }
      panel.classList.toggle('accordion-expanded');
    });
  }
}

This is a common implementation of an accordion component for JavaScript. As we want to introduce React here, we need to wrap our existing code with a new React component:

function Accordions() {
  useEffect(() => {
    const accordions = document.querySelectorAll(".accordion")
    for (const accordion of accordions) {
      const panels = accordion.querySelectorAll(".accordion-panel")
      for (const panel of panels) {
        const head = panel.querySelector(".accordion-header")
        head.addEventListener("click", () => {
          for (const otherPanel of panels) {
            if (otherPanel !== panel) {
              otherPanel.classList.remove("accordion-expanded")
            }
          }
          panel.classList.toggle("accordion-expanded")
        });
      }
    }
  }, [])

  return null
}

ReactDOM.render(<Accordions />, document.createElement("div"))

The component is not adding any new behavior or feature. We use useEffect because the component has been mounted in the document. That is why the function returns null because the hook doesn’t need to return a component.

So, we didn’t add any new functionality to our existing app, but we introduced React without changing its behavior. From now on, whenever we add new features or changes to our code, we will do it using the newer selected framework.

Client-side Rendering, Server-side Rendering, Or Static Generation?

Next.js gives us the possibility of choosing how we want to render each page of our web application. We can use the client-side rendering that React already offers us to generate the content directly in the user’s browser. Or, we can render the content of our page in the server using server-side rendering. Finally, we can create the content of our page at build time using static generation.

In our application, we should be loading and rendering code on page load, before we start interacting with any JavaScript library or framework. We may be using a server-side rendering programming language or technology, such as ASP.NET, PHP, or Node.js. We can get advantage of Next.js features and replace our current rendering method with the Next.js server-side rendering method. Doing this, we keep all the behavior inside the same project, that works under the umbrella of our selected framework. Also, we keep the logic of our main page and the React components within the same code that generates all the needed content for our page.

Let’s think about a dashboard page as an example. We can generate all the initial markup of the page at load time, in the server, instead of having to generate it with React in the user’s web browser.

const DashboardPage = ({ user }) => {
  return (
    <div>
       <h2>{user.name}</h2>

       // User data

    </div>
  )
}

export const getServerSideProps = async ({ req, res, params }) => {
    return {
      props: {
        user: getUser(),
      },
    }
  },
})

export default DashboardPage

If the markup that we render on page load is predictable and is based on data that we can retrieve at build time, static generation would be a good choice. Generating static assets at build time will make our application faster, more secure, scalable, and easier to maintain. And, in case we need to generate dynamic content on the pages of our app, we can use React’s client-side rendering to retrieve information from services or data sources.

Imagine we have a blog site, with many blog posts. If we use Static Generation, we can create a generic [blog-slug].js file in our Next.js application, and adding the following code we would generate all the static pages for our blog posts at build time.

export const getStaticPaths = async () => {
  const blogPosts = await getBlogPosts()

  const paths = blogPosts.map(({ slug }) => ({
    params: {
      slug,
    },
  }))

  return {
    paths,
    fallback: false,
  }
}

export const getStaticProps = async ({ params }) => {
  const { slug } = params

  const blogPost = await getBlogPostBySlug(slug)

  return {
    props: {
      data: JSON.parse(JSON.stringify(blogPost)),
    },
  }
}

Create An API Using API Routes

One of the great features Next.js offers is the possibility to create API Routes. With them, we can create our own serverless functions using Node.js. We can also install NPM packages to extend the functionality. A cool thing about this is that our API will leave in the same project/app as our frontend, so we won’t have any CORS issues.

If we maintain an API that is called from our web application using jQuery AJAX functionality, we could replace them using API Routes. Doing this, we will keep all the codebase of our app in the same repository, and we will make the deployment of our application simpler. If we are using a third-party service, we can use API Routes to “mask” the external URLs.

We could have an API Route /pages/api/get/[id].js that returns data that we use on our page.

export default async (req, res) => {
  const { id } = req.query

  try {
    const data = getData(id)
    res.status(200).json(data)
  } catch (e) {
    res.status(500).json({ error: e.message })
  }
}

And call it from the code of our page.

 const res = await fetch(`/api/get/${id}`, {
    method: 'GET',
  })

  if (res.status === 200) {
    // Do something
  } else {
    console.error(await res.text())
  }
Deploy to Netlify

Netlify is a complete platform that can be used to automate, manage, build, test, deploy and host web applications. It has a lot of features that make modern web application development easier and faster. Some Netlify highlights are:

  • Global CDN hosting platform,
  • Serverless functions support,
  • Deploy previews based on Github Pull Requests,
  • Webhooks,
  • Instant rollbacks,
  • Role-based access control.

Netlify is a great platform to manage and host our Next.js applications, and it’s pretty simple to deploy a web app with it.

First of all, we need to keep track of our Next.js app code in a Git repository. Netlify connects to GitHub (or the Git platform we prefer), and whenever a change is introduced to a branch (a commit or a Pull Request), an automatic “build and deploy” task will be triggered.

Once we have a Git repository with the code of our app, we need to create a “Netlify Site” for it. To do this, we have two options:

  1. Using Netlify CLI
    After we install the CLI (npm install -g netlify-cli) and log into our Netlify account (ntl login), we can go to the root directory of our application, run ntl init and follow the steps.
  2. Using Netlify web app
    We should go to https://app.netlify.com/start. Connect to our Git provider, choose our application’s repository from the list, configure some build options, and deploy.

For both methods, we have to consider that our build command will be next build and our directory to deploy is out.

Finally, the Essential Next.js plugin is installed automatically, which will allow us to deploy and use API routes, dynamic routes, and Preview Mode. And that's it, we have our Next.js application up and running in a fast and stable CDN hosting service.

Conclusion

In this article, we evaluated websites using jQuery library, and we compared them with new frontend frameworks like React and Next.js. We defined how we could start a migration, in case it benefits us, to a newer tool. We evaluated different migration strategies and we saw some examples of scenarios that we could migrate to Next.js web application projects. Finally, we saw how to deploy our Next.js application to Netlify and get it up and running.

Further Reading and Resources

]]>
https://smashingmagazine.com/2021/07/migrate-jquery-nextjs/ 407837@fever.esszett.org Tue, 13 Jul 2021 10:30:00 GMT
<![CDATA[Making A Strong Case For Accessibility]]> Imagine yourself as someone with a visual disability. Cataracts, or totally blind even. A site is not accessible because of many factors, willing and unwillingly. Accessibility may have been attended to at the end of the project or not in the budget, or maybe they just didn’t practice it. You can’t access the vital information on the site because it’s not accessible to people with visual disabilities.

Perhaps a person has arthritis, Multiple Sclerosis, or another form of motor skill disorder, and there is a part of the site that they cannot access because there is an issue that prevents them from obtaining that information they wish to on a site that they want to buy something on.

These are just a couple of examples of what disabled users face daily when they try and access a website that is inaccessible. The case for accessibility is this; we as stakeholders, managers, teams, designers and developers need to do better in not only practicing accessibility but advocating for it as well.

If you have ever read the WebAIM Million report, you can see where the breakdown is, and until 2021, there hasn’t been much in the way of improvement. Of the 1 million home pages that were tested, over 51 million errors were detected averaging 51.4 errors per page. While the number of errors decreased, home page complexity increased regarding the number of page elements that had detectable accessibility errors.

Inclusive design is a way of creating digital products that are accessible to a wide range of people regardless of who they are, disabled or not, where they are, and encapsulates a diverse spectrum of people. The British Standards Institution (2005) defines inclusive design as:

“The design of mainstream products and/or services that are accessible to, and usable by, as many people as reasonably possible ... without the need for special adaptation or specialized design.”

Practicing accessibility in your workflows and methodologies ensures people — disabled or not — that they can access your product, your website, and your brands. Inclusive design and accessibility go hand-in-hand. Let’s look at some examples of accessibility.

Examples Of Practical Digital Accessibility
  1. Your site has a color scheme that looks great after the designers are done with the mock-ups or the color scheme your brand uses is “perfect”’ in the eyes of people that do not have a visual disability. For people that have a visual disability like glaucoma, cataracts, or tritanopia (the deficiency of blue in one’s vision) they cannot make out that particular color and it does not meet WCAG standards.
  2. If your light blue font color on a darker blue background did not meet those guidelines set in WCAG, then it would be inaccessible. If you switched to a lighter blue or white font within the 4.5 to 1 ratio guideline that you can read about in (Success Criterion 1.4.3: Contrast (Minimum)), then it would meet the standard and be accessible to more people.

  1. You have a site that does not traverse well (or at all) when disabled users use assistive technologies such as a screen reader, keyboard, or voice recognition to navigate around the site because they lack the motor skills or dexterity to do so. An accessible site makes sure there is a way for those users to navigate through the site with no issues. Examples of keyboard navigation can be seen in this video and in this short video about voice recognition.
  2. An accordion component with information that creates content that is not scrollable. It is inaccessible to people that use the keyboard for navigation. Make sure that the content is accessible by keyboard in that instance.
  3. Using alternative text to describe the information in a picture for Blind users. Images that do not have alternative text that describes to screen reader users what the picture conveys are a barrier to blind people, e.g.
    <img src="http://www.smashingmagazine.com/" alt="This is my favorite kind of animal, a Maine Coon cat.">
    
  4. Users of newer technologies, people that live in metropolitan areas, or people that can afford to buy the latest tech, for example, have fewer barriers to break through than people that cannot afford a new phone or tablet, or are in very remote or rural areas.
  5. The glare of the sun on your mobile device as you’re on the beach on a sunny day. You’re shielding the screen or squinting to see the screen to read what restaurant to go to after you’re day at the beach is done. That is a situational impairment.
  6. A fussy child on your lap moving around while you are trying to read an email or an injured arm as you try to answer an email, hindering your ability to type as you normally would is a situational impairment.

There are a lot more examples of accessibility I could mention but that would take a very long time to write, so these are just a few examples.

Actionable Steps To Get Buy-In

Two of the most widely used reasons I hear as to why people or companies aren’t practicing accessibility are:

  • “The client has no budget for it.”
  • “My manager said we’ll get to it after launch.”
Buy-In And Support From Executives/Stakeholders

From the outset, advocating for accessibility starts at the top. Once you have stakeholder support, then you may see support trickle down to managers, then teams, and then individuals. It all starts with you first. Buy-in and support from executives will continuously be successful across the organization.

When the ethical approach doesn’t work, the approach I will take is the financial approach:

“You’ll be saving the company a lot of money when you do this from the start. When maintenance is needed, it won’t take the team as long to maintain the code because of accessibility and clean code.”

When, or if that fails, I’ll go for the legal ramifications and cite instances from the lawsuits that have been won against Target, Bank of America, Domino’s Pizza, and others. It’s amazing to see how fast executives and stakeholders do not want to get sued.

Keeping executives engaged and meeting with them regularly will ensure success with your accessibility initiatives, but will also provide support for when new accessibility initiatives need to be implemented or when there are disagreements among teams on the implementation or prioritization, you have the support of executives.

Being accessible is a good way for a company to differentiate itself from other companies, when you make a quality product, then the company buy-in becomes greater in some instances. Teams that push for accessibility usually lead the way to getting buy-in from other departments and executives. If the product is high quality and makes the company money, that’s when the company is swayed to adopt the practice.

Demonstrations of live testing with disabled users are also another way to get buy-in across the board. To humanize the decision-making process and get executives and colleagues on board by showing them when design choices do not meet user needs by disabled users using inaccessible products. Or one that I have used in the past, don’t ask, just do it.

Most of the time, however, it is how the practice of accessibility can make the company money or the legal consequences that a company can face, that sways an executive to adopt the practice. Then, in those instances, is when an executive or stakeholder starts learning about accessibility if they want to invest in that time.

Coordinating efforts across departments may be difficult and time-consuming at first so that support from the top will help alleviate the pressures and burnout that can happen when taking on the task of creating and implementing an accessibility strategy.

Have A Team Or Individual Who Is Your Accessibility Advocate(s)

Once you have buy-in from executives or stakeholders, having a person throughout each department or a team focused on accessibility. Throughout each department have an individual who is the liaison regarding accessibility.

Have someone that can answer questions and work with others to practice the guidelines and work with others to make accessible products. Help set up documentation and tooling, serve as an intermediary between departments.

Assess the Product and Proficiency Within the Company

Gauging the point where the product(s) are as far as how inclusive and accessible they are is a key priority. This ensures the team or individual that their efforts to make the product better and accessible are happening. What is the current state of the product? What is the current state of the website or mobile application?

Getting the general idea of the level of knowledge that teams and people in the company currently have is important going forward. How versed are they in accessibility guidelines and practices? Do they know anything about the Web Content Accessibility Guidelines (WCAG)? How much training do you have and will you need?

Maintaining a written record of all accessibility training done to meet the requirements that apply to your organization is a great way to keep data on all the training done within the organization. Recording the training and who and when it was completed. If there is no inter-organizational accessibility training available your organization can look into different methods of training like the kind WebAIM, the ADA, or Knowbility has to offer.

Establish Guidelines For The Company

Consistent implementation of the product greatly benefits the organization. It reduces the amount of work, which in turn can reduce the number of stress teams are under. Design systems should be used not only to ensure branding and consistency, but accessibility, inclusivity, and understanding of code better.

Accessible components help for obvious reasons and reduces the time it takes to implement, rather than start from nothing and try to re-invent something that has already been done. Testing procedures should be implemented so that departments do their jobs well and do them efficiently, especially QA and developers.

Documenting guidelines for your organization is as simple as creating a set of accessibility guidelines. You could internally document them in a collaborative software such as Notion or Dynalist; or an online documentation like Google Docs or Dropbox Paper. Somewhere that has a collaborative aspect where people can add to the documentation that the organization has.

Getting Fellow Colleagues To Buy-In

In this landscape of frameworks and libraries, “going fast and breaking things”, and overlooking and undervaluing accessibility, people need to be educated and that also needs to happen at the team level. The people that do not have voices, the “people on the other side of the glass” need YOU to be their voice.

As a freelancer, setting up meetings or training sessions to onboard organization members that you may be working with can be beneficial to all. Holding a workshop or webinar is also an option to training colleagues to buy-in as well.

Getting a team onboard because training brings the team together and people know the importance of accessibility, and they want to produce a quality product that people can use regardless of disability.

Pitching to those who do not or may not know that accessibility means less time spent working on what they work on, less stress and headaches, can sway a developer very fast from my experience.

Sharing The Importance Of The Rules

Whether you live in the EU, the UK, Canada, or the United States, most countries have rules regarding standards for accessibility. Familiarity with those rules and guidelines only ensures compliance on another level.

Whether it is the ADA (American Disabilities Act) or Section 508 (Government compliance) in the U.S., the ACT (Accessible Canada Act) in Canada, or EN 301 549 in the EU, sharing the importance of the guidelines can be crucial to getting departments, executives, and the organization as a whole on board.

Pick Examples From The Outside World As Use Cases

Test and record cases where a disabled user is trying to use the product, website, or mobile app. Showing colleagues and executives these tests and use cases will bolster the argument you have for implementing accessibility at your organization.

From there, you could get a source outside the organization that specializes in accessibility testing with disabled users, such as Applause, for instance. The organization and people within may turn around and embrace accessibility at the company and in the workflow.

Hire Disabled People

Whether it is internally or on a contract basis with an outside firm like Applause, there are the people with the lived experiences. They can benefit you and your company and team by having them aboard. These folks bring value to you and the organization.

Get executives and hiring managers on board to bring on people with disabilities to not only help with accessibility, but also teach and advocate for accessibility and inclusivity within the organization.

Best Practices For Maintaining Accessibility

Accessibility does not end at handoff or when the project is “finished” as is with the web, accessibility is ever-evolving and needs periodic checking when new features are implemented or changes are made to see if accessibility is still be practiced and adhered to.

Vigilance of the accessibility of the product(s) ensures a standard of accessibility. Automated testing of the product wherever possible that fits the strategy of the departments when it comes time to release new features or changes.

Any barriers that may arise (and they will) will be addressed and they can be handled in a manner that expedites the process and rolls out fixes for those barriers that take them down and makes the product accessible for those who need it.

Performing screen reader analysis before every release to ensure that users of screen readers and other assistive technologies can use the website or mobile app.

Annual audits and user testing is always important whether made internally by a team, or a third-party that specializes in accessibility auditing, especially with user testing by disabled users. What does that audit entail?

  • An executive summary for stakeholders that details the needs of the product so that it can become compliant as well as addressing the current state of affairs as well.
  • A developer report that details every possible path that can be taken through the website, mobile app, and product that addresses concerns and needs that will be encountered along the way.
Summary

Accessibility matters. It matters to those who are getting shut out on a daily basis from some form of digital creation they encounter. Whether it is by design or not, the fact that accessibility is an afterthought in most cases is a critical oversight we all have to correct.

Accessibility and accessible sites and apps make the web better, they make everyone feel included no matter what situation or disability. Inclusion and accessibility remove barriers for disabled people and accessibility and performance also make the web accessible for those that aren’t equipped with the latest and greatest phones or devices.

Getting on board with accessibility is something we should all do. Let’s remember the people on the other side of the glass. Accessibility is a right, not a privilege. Let’s make accessibility a priority.

]]>
https://smashingmagazine.com/2021/07/strong-case-for-accessibility/ 406937@fever.esszett.org Fri, 09 Jul 2021 10:30:00 GMT
<![CDATA[How to Reset a Forgotten iCloud Password from Mac]]> Read More
]]>
https://osxdaily.com/2021/06/11/how-reset-icloud-password-mac/ 405052@fever.esszett.org Fri, 11 Jun 2021 15:46:38 GMT
<![CDATA[NSFW: People Are Clad In Nothing But Masks To Show What Truly Needs Covering Up]]>
Image via Boys and Girls

Today, masking up is deemed just as much of a necessity as putting on underwear. However, one personal protective equipment (PPE) company believes that, if you must go nude outside, you should at least have a face cover on.

Tying concepts for body positivity and public health into one exciting Dress to suppress campaign, KN95 mask retailer The Good Mask Co. and Dublin-based advertising agency Boys and Girls have spotlighted naked non-models with the KN95 mask as their only garments, since this covering is able to safeguard both the wearer and anyone near them.

“If you only wear one thing… Dress to suppress,” the images read. “No one cares what else you wear.”

The visuals were shot by the International Photo Award’s 2017 photographer of the year, Alex Telfer, with consideration for social distancing regulations. Each model was unique, and was thus guided differently to showcase his or her vulnerability and strength.

Boys and Girls creative director Kris Clarkin explained in a statement via Best Ads on TV, “We needed to cut through the spread of misinformation [creating anti-mask sentiment] to draw attention to the fact that wearing a mask is the simplest act anyone can do to protect themselves and others.”


Image via Boys and Girls


Image via Boys and Girls


Image via Boys and Girls



[via Best Ads on TV, images via Boys and Girls]]]>
http://www.designtaxi.com/news/414002/NSFW-People-Are-Clad-In-Nothing-But-Masks-To-Show-What-Truly-Needs-Covering-Up/ 398403@fever.esszett.org Tue, 11 May 2021 19:36:07 GMT
<![CDATA[How to Reset MacOS Password with Terminal]]> Read More
]]>
https://osxdaily.com/2021/05/11/how-reset-macos-password-terminal/ 398828@fever.esszett.org Tue, 11 May 2021 15:54:35 GMT
<![CDATA[Apple Merging 'iCloud Documents and Data' Service With iCloud Drive in May 2022]]> iCloud Documents and Data service with iCloud Drive starting in May of 2022, according to a support document published late last week (via MacGeneration).

Mac-iphone-icloud
‌iCloud Drive‌ and ‌iCloud‌ Documents and Data share the fundamental ability to backup data from apps. However, ‌iCloud‌ Documents and Data was often a cumbersome, confusing experience. In contrast, ‌iCloud Drive‌ is more unified, with users able to access their files and content through the Files app across all their devices.

As Apple explains, starting in May of next year, users who are using ‌iCloud‌ Documents and Data will have their accounts automatically migrated to ‌iCloud Drive‌. However, users must manually enable ‌iCloud Drive‌ to view their files once the merger occurs.
In May 2022, the ‌iCloud‌ Documents and Data service, our former document synchronization service, will be interrupted and completely replaced by ‌iCloud Drive‌. Therefore, if you use ‌iCloud‌ Documents and Data, your account will be migrated to ‌iCloud Drive‌ after that date.

If you use the ‌iCloud‌ Documents and Data service, you must activate ‌iCloud Drive‌ by following the steps below to view your files. Upgrading to ‌iCloud Drive‌ does not change the storage space used by your files saved in ‌iCloud‌.
‌iCloud Drive‌ launched in 2014 as a unified, seamless way for Apple users to keep all their files, documents, and more synchronized across all their devices. To activate it, users on iOS or iPadOS devices can go to Settings -> ‌iCloud‌ and enable ‌iCloud Drive‌, or through System Preference -> ‌iCloud‌, and select ‌iCloud Drive‌ on macOS.
This article, "Apple Merging 'iCloud Documents and Data' Service With iCloud Drive in May 2022" first appeared on MacRumors.com

Discuss this article in our forums

]]>
https://www.macrumors.com/2021/05/11/icloud-documents-and-data-merging-icloud-drive/ 398822@fever.esszett.org Tue, 11 May 2021 09:36:08 GMT
<![CDATA[Murmuration: Starenschwarm vs. Adler]]> Murmuration: Starenschwarm vs. Adler Murmurations-Ornitographies-project

Xavi Bou hat die Bewegungen eines Schwarmes Staren genommen, was an sich bereits wunderschön anzuschauen ist. Durch unterstreichende Visualisierung kann man die Bewegungen und deren in den Himmel gemalten Muster noch etwas besser nachvollziehen. Wie ein grober Pinsel vermögen die dutzenden Vögel ein abstraktes Bild zu zeichnen. Und als wäre das alles nicht bereits sehenswert genug, gesellt sich noch ein angriffslustiger Adler hinzu, der zu originellen Ausweich-Manöver des Schwarmes führt. Die Natur ist halt noch immer der größte Unterstützer der Kunst!

„In winter, starlings join in flocks of thousands of individuals to try to confuse the hawks that attack them, doing a mesmerizing dance. This video is part of the Ornitografias project, a project in which Xavi Bou has been working for years, which consists in visualizing the beauty of bird flight paths.“

via: kraftfuttermischwerk

]]>
https://www.langweiledich.net/murmuration-starenschwarm-vs-adler/ 396521@fever.esszett.org Wed, 03 Mar 2021 12:23:01 GMT
<![CDATA[WIN Compilation März 2021]]> WIN Compilation März 2021 WIN21-03_blogteaser

Uff, so ein Erster des Monats, der auf einen Montag fällt, ist ja so ziemlich der Endgegner für mich. Da ist die perfekte Vier-Wochen-Datums-Verteilung des diesjährigen Februars nicht wirklich toll für… Entsprechend habe ich es auch erst gestern geschafft, die neue Ausgabe der „WIN Compilation“ fertig zu schneiden. 4K-Verarbeitung bei YouTube, Vorabansicht für unsere Unterstützenden auf Patreon und ein bisschen Blick auf die Wach-Zeiten unserer internationalen Zuschauer – entsprechend haben Martin und ich die neue Folge mal wieder am Zweiten abends für euch. Aber hey – bislang hat niemand gemeckert und vermutlich seid ihr das mittlerweile ja von uns gewohnt. So konnten wir wenigstens noch eine kleine Content-Erkundungs-Runde einlegen, auch wenn die im Februar doch verdammt mau ausgefallen ist. Aber für 42 tolle Videos hat es dann doch noch gereicht, die euch für neun Minuten die Langeweile vertreiben sollten!

Enjoy & share!

WIN Compilation: Die besten Videos des Monats Februar 2021

„The good thing about a short February is, that you don’t have to wait that long for a new WIN Compilation of ours. The bad thing about a short February is, that usually there are less cool clips for us to collect and show you. Nevertheless we found 42 original ones that should be able to brighten your day. Did you know that you can make our day by subscribing to our channel? Just saying…“

Du mochtest das? Dann abonniere doch unseren Kanal! Das würde uns nicht nur enorm freuen, sondern auch helfen, weiterhin mindestens monatlich Videos rauszuhauen.

Dabei kannst du helfen, indem du unser Video mit Freunden, Familie, Bekannten und Feinden teilst (am besten einfach mit ALLEN!). Neuerdings könnt ihr uns auch mittels Einkäufen bei Amazon über unseren Partnerlink unterstützen (Affiliate, ihr zahlt also das Gleiche, wir bekommen einen kleinen Anteil davon ab). Wer darüber hinaus noch seine Wertschätzung zeigen und sich coole Boni sichern möchte, darf das gerne über Patreon (oder alternativ indirekt über das deutsche Äquivalent Steady) machen. Aber auch wenn ihr „nur“ unsere Videos schauen solltet: HABT VIELEN DANK!

Liste der originalen Clips

Zum Schluss gibt es wie immer die Auflistung der Originalvideos zum Nachschauen und Einholen von Hintergrund-Infos. Die ist chronologisch geführt und entsprechend der oben links im Video jeweils pro Clip eingeblendeten Nummer sortiert. Einfach abgleichen, aufsuchen und in ganzer Länge anschauen. Plus: etwas Linkliebe für unsere Fundquellen.

1 . Kayaking in the snowstorm.
2 . Cats and Ping Pong Trick Shots (via)
3 . Controller Rumble is not enough to feel the game, Just Rumble Everything! (via)
4 . Three Year Old Climbs Fridge To Get Cookies
5 . #NatZooZen​: Giant Pandas Mei Xiang and Tian Tian in the Snow (via)
6 . Automatic pool stick vs. strangers
7 . Moving 807 Franklin house
8 . Did this mess with your head?
9 . CHOCOLATE HARP! (via)
10 . Axe Build – shaped like a human Hand (via)
11 . oh yes. (via)
12 . Diane, it’s 11:30 am, February 24th. Entering the town of #TwinPeaks … (via)
13 . LEGO T5 Affliction Mech Piloted by Human – 125,000 Pieces! (via)
14 . Playing Hades using a Pomegranate (via)
15 . Ski Jump Marble Machine! (via)
16 . Saturday’s
17 . Snow Trampoline on Skis towed by 245 HP Car | DD Squad (via)
18 . Spotify Streaming on my 17-year-old iPod Classic (via Raspberry Pi) (via)
19 . b i t c h (via)
20 . Building a Suspended LEGO Train (via)
21 . 👀👀👀 #OppoX (via)
22 . by Transylvanian Hunger Dark Throne played on an actual human skeleton (via)
23 . Hellcat on Horse & Buggy Wheels goes to town and does burnouts (via)
24 . Frozen Ice Racket Challenge
25 . Hot Wheels DecaLooper (via)
26 . I know, sat morning is screaming out for a video of a school bus arriving in Mongolia – so here you go – keep watching…. (via)
27 . Epic Cycling on Ice (via)
28 . Making a HYPERREALISTIC T-REX CAKE | Jurassic World Camp Cretaceous (via)
29 . Ice Cracking Eargasm on Baikal (via)
30 . I recreated the Super Mario Bros. theme song in Stardew Valley using flute and drum blocks.
31 . Jeopardy – A Lego Kinetic Sculpture Tribute to Alex Trebek (via)
32 . Will! Ich! Haben!!! (via)
33 . The stunt these kids performed (via)
34 . The Caged Ball Rolling Ball Sculpture part 1. Marble Machine. Marble Run (via)
35 . “Some men see things and ask ‘Why?’ Other men see tandem centaur bicycles and ask ‘Why not?’” (via)
36 . Wild Black Bear Dances to Live DJ Set Video- Techno and House Music Wildlife Blooper Encounter (via)
37 . Lego Wrapping Factory (via)
38 . Вероника Хистова. КДМШ 14 (via)
39 . Woman playing piano upside down
40 . February 19, 2021 (via)
41 . A Sympathetic Nail Violin? (via)
42 . This Shot is Unbelievable. Not A luck need Skills to make this shot.
]]>
https://www.langweiledich.net/win-compilation-maerz-2021/ 396524@fever.esszett.org Tue, 02 Mar 2021 19:00:56 GMT
<![CDATA[Trumps juristische Probleme: Jede Menge Ärger]]> US-Präsident Donald Trump (Archivbild vom 1. Oktober 2020)| Bildquelle: AFP

Ruhig wird es für Trump auch nach dem Ausscheiden aus dem Amt nicht. Da ist nicht nur das zweite Amtsenthebungsverfahren - gegen ihn laufen auch zahlreiche Ermittlungen. Was droht dem Ex-Präsidenten? Von Antje Passenheim. mehr

Meldung bei www.tagesschau.de lesen

]]>
https://www.tagesschau.de/ausland/trump-justiz-103.html 392364@fever.esszett.org Sat, 23 Jan 2021 07:09:57 GMT
<![CDATA[Apple's Stock Closed at All-Time High Today Ahead of Earnings Results Next Week]]>

The gains come just five days before Apple is set to report its earnings results for the first quarter of the 2021 fiscal year. Many analysts forecast that Apple's quarterly revenue will exceed the $100 billion mark for the first time thanks to strong iPhone 12 sales and the launch of several other products in the quarter, including the first three Macs with Apple silicon, HomePod mini, AirPods Max, and a redesigned iPad Air. Apple Fitness+ also launched last month and can be bundled with other services with Apple One.

Apple has thrived financially during the ongoing pandemic as many customers work, learn, and connect with others from home, leading to strong iPad and Mac sales in particular. Apple products are also popular gifts during the holidays.

Apple's earnings report will be released on Wednesday at 1:30 p.m. Pacific Time and will be followed by a conference call with Apple's CEO Tim Cook and CFO Luca Maestri at 2:00 p.m. Pacific Time. Apple's current quarterly revenue record is $91.8 billion, set in the first quarter of the 2020 fiscal year.
Tag: AAPL

This article, "Apple's Stock Closed at All-Time High Today Ahead of Earnings Results Next Week" first appeared on MacRumors.com

Discuss this article in our forums

]]>
https://www.macrumors.com/2021/01/22/aapl-closes-at-all-time-high/ 392292@fever.esszett.org Fri, 22 Jan 2021 22:15:21 GMT
<![CDATA[Apple Co-Founder Steve Jobs to be Memorialized in President Trump’s ‘National Garden of American Heroes’]]>

Apple co-founder and former CEO Steve Jobs will be memorialized in the National Garden of American Heroes along with hundreds of other notable American figures. The late Apple co-founder’s name appeared in a list of notables in an executive order signed by outgoing U.S. President Donald Trump.

The order, signed on Monday, says the garden will be built in honor of “legends of America’s past.” The order reads:

Each individual has been chosen for embodying the American spirit of daring and defiance, excellence and adventure, courage and confidence, loyalty and love. Astounding the world by the sheer power of their example, each one of them has contributed indispensably to America’s noble history, the best chapters of which are still to come.

The garden will include statues of Ansel Adams, John Adams, Samuel Adams, Muhammad Ali, Luis Walter Alvarez, Susan B. Anthony, Hannah Arendt, Louis Armstrong, Neil Armstrong, Crispus Attucks, John James Audubon, Lauren Bacall, Clara Barton, Todd Beamer, Alexander Graham Bell, Roy Benavidez, Ingrid Bergman, Irving Berlin, Humphrey Bogart, Daniel Boone, Norman Borlaug, William Bradford, Herb Brooks, Kobe Bryant, William F. Buckley, Jr., Sitting Bull, Frank Capra, Andrew Carnegie, Charles Carroll, John Carroll, George Washington Carver, Johnny Cash, Joshua Chamberlain, Whittaker Chambers, Johnny “Appleseed” Chapman, Ray Charles, Julia Child, Gordon Chung-Hoon, William Clark, Henry Clay, Samuel Clemens (Mark Twain), Roberto Clemente, Grover Cleveland, Red Cloud, William F. “Buffalo Bill” Cody, Nat King Cole, Samuel Colt, Christopher Columbus, Calvin Coolidge, James Fenimore Cooper, Davy Crockett, Benjamin O. Davis, Jr., Miles Davis, Dorothy Day, Joseph H. De Castro, Emily Dickinson, Walt Disney, William “Wild Bill” Donovan, Jimmy Doolittle, Desmond Doss, Frederick Douglass, Herbert Henry Dow, Katharine Drexel, Peter Drucker, Amelia Earhart, Thomas Edison, Jonathan Edwards, Albert Einstein, Dwight D. Eisenhower, Duke Ellington, Ralph Waldo Emerson, Medgar Evers, David Farragut, the Marquis de La Fayette, Mary Fields, Henry Ford, George Fox, Aretha Franklin, Benjamin Franklin, Milton Friedman, Robert Frost, Gabby Gabreski, Bernardo de Gálvez, Lou Gehrig, Theodor Seuss Geisel, Cass Gilbert, Ruth Bader Ginsburg, John Glenn, Barry Goldwater, Samuel Gompers, Alexander Goode, Carl Gorman, Billy Graham, Ulysses S. Grant, Nellie Gray, Nathanael Greene, Woody Guthrie, Nathan Hale, William Frederick “Bull” Halsey, Jr., Alexander Hamilton, Ira Hayes, Hans Christian Heg, Ernest Hemingway, Patrick Henry, Charlton Heston, Alfred Hitchcock, Billie Holiday, Bob Hope, Johns Hopkins, Grace Hopper, Sam Houston, Whitney Houston, Julia Ward Howe, Edwin Hubble, Daniel Inouye, Andrew Jackson, Robert H. Jackson, Mary Jackson, John Jay, Thomas Jefferson, Steve Jobs, Katherine Johnson, Barbara Jordan, Chief Joseph, Elia Kazan, Helen Keller, John F. Kennedy, Francis Scott Key, Coretta Scott King, Martin Luther King, Jr., Russell Kirk, Jeane Kirkpatrick, Henry Knox, Tadeusz Kościuszko, Harper Lee, Pierre Charles L’Enfant, Meriwether Lewis, Abraham Lincoln, Vince Lombardi, Henry Wadsworth Longfellow, Clare Boothe Luce, Douglas MacArthur, Dolley Madison, James Madison, George Marshall, Thurgood Marshall, William Mayo, Christa McAuliffe, William McKinley, Louise McManus, Herman Melville, Thomas Merton, George P. Mitchell, Maria Mitchell, William “Billy” Mitchell, Samuel Morse, Lucretia Mott, John Muir, Audie Murphy, Edward Murrow, John Neumann, Annie Oakley, Jesse Owens, Rosa Parks, George S. Patton, Jr., Charles Willson Peale, William Penn, Oliver Hazard Perry, John J. Pershing, Edgar Allan Poe, Clark Poling, John Russell Pope, Elvis Presley, Jeannette Rankin, Ronald Reagan, Walter Reed, William Rehnquist, Paul Revere, Henry Hobson Richardson, Hyman Rickover, Sally Ride, Matthew Ridgway, Jackie Robinson, Norman Rockwell, Caesar Rodney, Eleanor Roosevelt, Franklin D. Roosevelt, Theodore Roosevelt, Betsy Ross, Babe Ruth, Sacagawea, Jonas Salk, John Singer Sargent, Antonin Scalia, Norman Schwarzkopf, Junípero Serra, Elizabeth Ann Seton, Robert Gould Shaw, Fulton Sheen, Alan Shepard, Frank Sinatra, Margaret Chase Smith, Bessie Smith, Elizabeth Cady Stanton, Jimmy Stewart, Harriet Beecher Stowe, Gilbert Stuart, Anne Sullivan, William Howard Taft, Maria Tallchief, Maxwell Taylor, Tecumseh, Kateri Tekakwitha, Shirley Temple, Nikola Tesla, Jefferson Thomas, Henry David Thoreau, Jim Thorpe, Augustus Tolton, Alex Trebek, Harry S. Truman, Sojourner Truth, Harriet Tubman, Dorothy Vaughan, C. T. Vivian, John von Neumann, Thomas Ustick Walter, Sam Walton, Booker T. Washington, George Washington, John Washington, John Wayne, Ida B. Wells-Barnett, Phillis Wheatley, Walt Whitman, Laura Ingalls Wilder, Roger Williams, John Winthrop, Frank Lloyd Wright, Orville Wright, Wilbur Wright, Alvin C. York, Cy Young, and Lorenzo de Zavala.


Read More...]]>
https://www.mactrast.com/2021/01/apple-co-founder-steve-jobs-to-be-memorialized-in-president-trumps-national-garden-of-american-heroes/ 392125@fever.esszett.org Tue, 19 Jan 2021 13:39:54 GMT
<![CDATA[Steve Jobs to Be Memorialized in National Garden of American Heroes]]>

According to the order, signed on Monday, the garden will be built in honor of "legends of America's past," and Jobs will be honored with a statue to commemorate his life and work. The order reads:
Each individual has been chosen for embodying the American spirit of daring and defiance, excellence and adventure, courage and confidence, loyalty and love. Astounding the world by the sheer power of their example, each one of them has contributed indispensably to America's noble history, the best chapters of which are still to come.
Other names in the list include Emily Dickinson, Walt Disney, Aretha Franklin, Jesse Owens, Miles Davis, Rosa Parks, Nikola Tesla, John Wayne, Martin Luther King Jr., and several former U.S. presidents.
This article, "Steve Jobs to Be Memorialized in National Garden of American Heroes" first appeared on MacRumors.com

Discuss this article in our forums

]]>
https://www.macrumors.com/2021/01/19/steve-jobs-national-garden-american-heroes/ 391889@fever.esszett.org Tue, 19 Jan 2021 09:49:10 GMT
<![CDATA[Nach 23 Todesfällen überarbeitet Norwegen die Covid-19-Impf-Richtlinien]]> Seniorin bei Corona-Impfung| Bildquelle: dpa

Das Norwegische Institut für Öffentliche Gesundheit hat seine Richtlinien für die Covid-19-Impfung überarbeitet und erweitert - und zwar für hochbetagte Senioren, die unter Vorerkrankungen leiden. Von Ralph Sina. mehr

Meldung bei www.tagesschau.de lesen

]]>
https://www.tagesschau.de/ausland/corona-impfung-norwegen-101.html 391859@fever.esszett.org Mon, 18 Jan 2021 20:00:46 GMT
<![CDATA[Apple CEO Tim Cook Discusses Parler’s Possible App Store Return]]>

Apple CEO Tim Cook sat down for a brief interview with Chris Wallace on Fox News SundayCook discussed social reform, as well as the possible return of social platform Parler to the App Store.

Cook told Wallace that Parler could return to the App Store if it begins following Apple’s Terms of Service.

When asked if Apple and other tech companies are restricting free speech, Cook pointed out that the App Store is a private platform that can make its own rules.

“We have an app store that has about 2 million apps in it. And we have terms of services for these apps,” Cook responded.

“We obviously don’t control what’s on the internet, but we’ve never viewed that our platform should be a simple replication of the internet,” Cook continued. “We have rules and regulations, and we just ask that people abide by those.”

Cook also discussed his company’s racial justice initiative. He was asked what inspired Apple to start the program.

“Last year with the murder of George Floyd, it brought an urgency to this,” Cook replied. “We are thrilled to do be able to do our part here, and we hope that more people will follow.”

Projects include the Propel Center. Apple is working with Southern Company and a range of community stakeholders to support the launch of the Propel Center, a first-of-its-kind innovation and learning hub for the HBCU community.

Apple is contributing $25 million, which will enable the Propel Center to support HBCU students and faculty through a robust virtual platform, a physical campus in the historic Atlanta University Center, as well as on-campus activations at partner institutions.

Later this year, Apple will open an Apple Developer Academy in Detroit — the first of its kind in the US.

The academy is designed to empower young Black entrepreneurs, creators, and coders, helping them cultivate the skills necessary for jobs in the rapidly growing iOS app economy.

When asked by Wallace what he expects to accomplish with the initiative, Cook responded, “I remember periods of time, Chris, where, whether you were in high school or college or beyond, where you look around and there are only white people around, whether it’s a college or a university or a graduate school or something. It doesn’t feel right.”

“I think it’s the absence of opportunity. It goes back to that,” Cook continued. “And so what we’re trying to do with this program is give people the opportunity.”


Read More...]]>
https://www.mactrast.com/2021/01/apple-ceo-tim-cook-discusses-parlers-possible-app-store-return/ 391619@fever.esszett.org Mon, 18 Jan 2021 13:28:45 GMT
<![CDATA[Today Marks the Ninth Anniversary of Steve Jobs' Death]]> iPhone 4s at a media event on the company's Infinite Loop headquarters campus.


In the days following his passing, Apple started posting comments from fans on its "Remembering Steve" webpage. Apple continues to maintain the page highlighting a few of the over one million submissions from people around the world who "shared their memories, thoughts, and feelings about Steve."

The company marked the first anniversary of his passing with a photo and audio slideshow on its website, and on this day Tim Cook traditionally shares words of remembrance with Apple staff and on social media.


This article, "Today Marks the Ninth Anniversary of Steve Jobs' Death" first appeared on MacRumors.com

Discuss this article in our forums

]]>
https://www.macrumors.com/2020/10/05/ninth-anniversary-of-steve-jobs-death/ 379994@fever.esszett.org Mon, 05 Oct 2020 09:55:33 GMT
<![CDATA[How to Use App Library on iPhone]]> Read More
]]>
https://osxdaily.com/2020/10/01/how-to-use-app-library-on-iphone/ 379125@fever.esszett.org Thu, 01 Oct 2020 21:59:46 GMT
<![CDATA[Apple Pulls Problematic Safari 14 and Security Updates for macOS Mojave [Updated]]]> macOS Catalina 10.15.7 update. Apple has also removed Safari 14 for macOS Mojave from download.


Both the Mojave Security Update and the Safari 14 update were causing numerous problems for those still running macOS Mojave, as outlined by Mr. Macintosh.

macOS Mojave users who installed the updates have been noticing memory issues, slow boot times and Finder stalling, numerous system.log entires, and crashes when attempting to use Migration assistant, among other problems. Complaints about the update started shortly after it was released, but Apple did not pull the updates until yesterday.

Those who had already downloaded the Mojave Security Update or installed Safari 14 should soon be getting a fix in the form of updated software that addresses the bugs that were introduced. Reverting to a Time Machine backup, reinstalling macOS Mojave, or installing ‌macOS Catalina‌ also seem to successfully fix the issues.

(Thanks, Jeff!)

Update: Apple has released a supplemental update for Mojave which presumably addresses the issues above. It should become available in your macOS software update.
This article, "Apple Pulls Problematic Safari 14 and Security Updates for macOS Mojave [Updated]" first appeared on MacRumors.com

Discuss this article in our forums

]]>
https://www.macrumors.com/2020/10/01/apple-pulls-macos-mojave-security-update/ 378961@fever.esszett.org Thu, 01 Oct 2020 18:28:42 GMT
<![CDATA[Accountsd: How to Fix High CPU Usage on Mac]]> macOS Catalina version 10.15.7, an increasing number of users have experienced an issue with a system process named "accountsd" showing very high CPU usage in Activity Monitor, causing their Mac to slow down.

One user in the Apple Support Communities shared a screenshot of "accountsd" with CPU usage above 400%, rendering their 2018 MacBook Pro "useless."


While this issue has popped up occasionally over the years, there has been a noticeable uptick in complaints across the Apple Support Communities, MacRumors Forums, Twitter, Reddit, Stack Exchange, and elsewhere since the release of macOS Catalina version 10.15.7, with users attempting to troubleshoot the issue.

What is accountsd?


Accountsd is a daemon, part of the Accounts framework. Apple's developer documentation says this framework helps users access and manage their external accounts from within apps, without requiring them to enter login credentials.
The Accounts framework provides access to user accounts stored in the Accounts database, which is managed by the system. An account stores the login credentials of a particular service, such as Twitter, and you use those credentials to authenticate with the service. When you integrate the Accounts framework into your app, you don't need to store account logins yourself. Instead, the user grants your app access to use their account login credentials, bypassing the need to type their username and password. If no account for a particular service exists in the user's Accounts database, you can let them create and save an account from within your app.

How to fix accountsd CPU usage?

Affected users have offered a wide range of potential solutions, but your mileage may vary.

Some users have managed to solve the issue by signing out of their Apple ID account under System Preferences > Apple ID > Overview > Sign Out, restarting their Mac, and then signing back in to the account, but this has not worked for everyone.

Some users have solved the issue by resetting their Mac's SMC and/or NVRAM.

One user on Stack Exchange believes the issue relates to a bug with file indexing on the Mac. Their solution involves resetting the indexing by navigating to System Preferences > Spotlight > Privacy and adding (+) your storage drive ("Macintosh HD" by default) to the "Prevent Spotlight from searching these locations" list. Then, remove (-) the drive from the list, and the Mac will begin reindexing. The indexing process can temporarily slow down your Mac, so these steps are recommended to be completed overnight.

As for more advanced troubleshooting, some users have had success with navigating to "~/Library/Accounts" and renaming the file "Accounts4.sqlite" to "Accounts4.sqlite.testbackup" or using more complex Terminal commands, but proceed with caution, as these solutions could impact your iCloud accounts or syncing.

Apple has yet to acknowledge this issue. Should a software update be released with a fix, we will update this article accordingly.
Related Roundup: macOS Catalina

This article, "Accountsd: How to Fix High CPU Usage on Mac" first appeared on MacRumors.com

Discuss this article in our forums

]]>
https://www.macrumors.com/guide/accountsd/ 378966@fever.esszett.org Thu, 01 Oct 2020 15:32:18 GMT
<![CDATA[Insektenflüge in Superzeitlupe]]> Insektenflüge in Superzeitlupe insekten-in-superzeitlupe

Vergangenes Jahr hatte ich bereits Zeitlupenaufnahmen abhebender Flugkäfer hier im Blog, jetzt hat der YouTube-Kanal Ant Lab ein ganz ähnliches Video online gestellt. Mit bis zu 3.200 Frames die Sekunde bekommen wir das zu sehen, was das menschliche Auge sonst nicht zu erkennen imstande ist. Allerfeindes Bewegungen von Flügeln, Fühlern und Beinen. Beeindruckend!

„Takeoff and flight sequences of insects spanning 8 different taxonomic orders captured at 3,200 fps!“

TIME MARKS:
00:00 – intro
01:17 – plume moth
01:20 – firefly
02:32 – painted lichen moth
03:14 – leafroller moth
03:31 – rosy maple moth
04:00 – stonefly (see comment for correct ID)
05:14 – mayflies
06:07 – fishfly
07:00 – aphid
07:42 – scorpionfly
08:10 – lacewing

via: thekidshouldseethis

]]>
https://www.langweiledich.net/insektenfluege-in-superzeitlupe/ 378472@fever.esszett.org Wed, 30 Sep 2020 08:59:02 GMT
<![CDATA[Tischtennis Level 1-100]]> Tischtennis Level 1-100 tischtennis-level-1-bis-100

Ein bisschen schummeln die Leute von Pongfinity ja schon in ihrem neuesten Video, denn statt dem Titel entsprechender 100 Fähigkeitsstufen erhalten wir ledigliches jede fünfte. Aber klar, „1 to 100“ klingt halt cooler als „1 to 20“. Dennoch sind da viele richtig gute Einlagen bei und wenn wir ehrlich sind startet das nicht mal wirklich im Normalobereich, bereits spätestens ab Level 15 bin ich raus…

]]>
https://www.langweiledich.net/tischtennis-level-1-100/ 376142@fever.esszett.org Mon, 14 Sep 2020 12:52:14 GMT
<![CDATA[Epic Games vs. Apple: Timeline of Events Surrounding Fortnite's Removal From App Store]]>

In August 2020, Apple removed Fortnite from the App Store after Epic Games introduced a direct payment option in the app for its in-game currency V-Bucks, defying the App Store rules. In what appears to have been an orchestrated move, Epic Games promptly filed a lawsuit against Apple, accusing the company of anti-competitive actions.

Below, we've put together a timeline of the Epic Games vs. Apple saga.

June 16

  • Epic Games CEO Tim Sweeney tells The Washington Post that "the iOS App Store's monopoly protects only Apple profit, not device security."

  • Sweeney quote tweets The Washington Post's story: "Here Apple speaks of a level playing field. To me, this means: All iOS developers are free to process payments directly, all users are free to install software from any source. In this endeavor, Epic won't seek nor accept a special deal just for ourselves."

June 23


  • Sweeney tweets: "Opening iOS and Android up as truly open platforms with a genuinely level playing field between first party and third party apps and stores is the only way to ensure a competitive, healthy, and fair app economy."

July 24


  • Sweeney tells CNBC that the App Store is an "absolute monopoly," arguing that "Apple has locked down and crippled the ecosystem by inventing an absolute monopoly on the distribution of software, on the monetization of software."

July 28

  • Sweeney tweets: "It pains me to complain about Apple in this way. Apple is one of the greatest companies that has ever existed, perhaps the greatest. But they're fundamentally wrong in blocking competition and choice on devices they make, and that holds up entire fields of technological progress."

  • Sweeney tweets: "This is a critical consideration in these 30% store fees. They come off the top, before funding any developer costs. As a result, Apple and Google make more profit from most developers' games than the developers themselves. That is terribly unfair and exploitative."

August 1

  • Sweeney tweets: "Apple's intentional anti-competitive strategy has been running for much longer than most realize. Here they are in 2011 muscling Kindle purchases off of iPhone by demanding 30% of e-book revenue, 'which we acknowledge is prohibitive for many things.'"

August 13

  • Epic Games introduces a direct payment option in the Fortnite app for iPhone and iPad, allowing players to purchase in-game V-Bucks at a 20 percent discount by sidestepping Apple's in-app purchase mechanism. This functionality violates Apple's App Store Review Guidelines, which indicate that apps offering in-game currency must use Apple's in-app purchase mechanism only.

  • The direct payment option is also added to the Fortnite app on Android in violation of Google's Play Store rules.

  • Epic Games describes Apple's and Google's 30 percent cut on in-app purchases as "exorbitant." Epic also notes that apps that offer real-life goods and services like Uber, DoorDash, and StubHub are not required to use Apple's in-app purchase mechanism, a rule that it believes should apply to all developers.

  • Apple removes Fortnite from the App Store. In a statement shared with MacRumors, the company said that "Epic Games took the unfortunate step of violating the App Store guidelines that are applied equally to every developer and designed to keep the store safe for our users." The full statement is below.

    Today, Epic Games took the unfortunate step of violating the App Store guidelines that are applied equally to every developer and designed to keep the store safe for our users. As a result their Fortnite app has been removed from the store. Epic enabled a feature in its app which was not reviewed or approved by Apple, and they did so with the express intent of violating the App Store guidelines regarding in-app payments that apply to every developer who sells digital goods or services.

    Epic has had apps on the App Store for a decade, and have benefited from the App Store ecosystem - including its tools, testing, and distribution that Apple provides to all developers. Epic agreed to the App Store terms and guidelines freely and we're glad they've built such a successful business on the App Store. The fact that their business interests now lead them to push for a special arrangement does not change the fact that these guidelines create a level playing field for all developers and make the store safe for all users. We will make every effort to work with Epic to resolve these violations so they can return Fortnite to the App Store.

  • Epic Games files a lawsuit [PDF] against Apple in California, describing the company as a "monopoly power" and accusing it of "unfair and anti-competitive actions." The complaint alleges that "Apple has become what it once railed against: the behemoth seeking to control markets, block competition, and stifle innovation."

  • Epic Games shares a video called "Nineteen Eighty-Fortnite," parodying Apple's iconic "1984" ad. Whereas Apple's ad portrayed IBM as the evil "Big Brother," Epic Games aims to show that Apple is now the dominant power. "Epic Games has defied the App Store Monopoly. In retaliation, Apple is blocking Fortnite from a billion devices. Join the fight to stop 2020 from becoming '1984.'"




  • In a blog post, Epic Games encourages Fortnite players to fight against Apple's "app tax" by using the hashtag #FreeFortnite on social platforms.

  • In an FAQ, Epic Games says that "all mobile developers and consumers have the right to choose alternate payment providers that charge less, as is the norm on all other general-purpose computing platforms, including Web, Windows, and Mac." Epic adds that "Apple even allows Amazon Prime Video to process payments directly as a special deal while holding other apps to a different standard."

  • Spotify sides with Epic Games.

  • Google removes Fortnite from the Play Store.

  • Epic Games files a similar anti-competitive lawsuit against Google.

  • Sweeney tweets: "Today, Apple said Epic is seeking a special deal, but that's not true. We're fighting for open platforms and policy changes equally benefiting all developers. And it'll be a hell of a fight!"

August 14

  • Sweeney tweets: "At the most basic level, we're fighting for the freedom of people who bought smartphones to install apps from sources of their choosing, the freedom for creators of apps to distribute them as they choose, and the freedom of both groups to do business directly."
We will keep this timeline updated as further developments unfold in the Epic Games vs. Apple saga, so keep this page bookmarked to stay up to date.
This article, "Epic Games vs. Apple: Timeline of Events Surrounding Fortnite's Removal From App Store" first appeared on MacRumors.com

Discuss this article in our forums

]]>
https://www.macrumors.com/guide/epic-games-vs-apple/ 372637@fever.esszett.org Fri, 14 Aug 2020 17:12:48 GMT
<![CDATA[Videomix zeigt 40 Jahre Deutschrap / Hip Hop in 7:30 Minuten]]> Videomix zeigt 40 Jahre Deutschrap / Hip Hop in 7:30 Minuten 40-Jahre-Deutschrap-DJ-Primetime

Was für ein gewaltiges Mashup! Nicht nur musikalisch, sondern auch in Sachen Video-Edit, haut DJ Primetim auf seinem YouTube-Kanal PRIMETIMEVIDEO einfach mal ein absolutes Brett raus. Insgesamt 300 Lieder aus der mittlerweile rund 40 Jahre andauernden Ära des deutschen Hip Hop (oder heutzutage „Deutschrap“) wurden in 7:30 Minuten vermixt. Von Fettes Brot über Dendemann bis hin zu dem, was da heute in den Charts rumlungert. Vor allem der nostalgische Blick auf die frühen Zeiten ist natürlich absolutes Gold!

„300 Songs aus vierzig Jahren Deutschrap-Geschichte im wilden Video-Mix by DJ Primetime! Leicht anachronistisch, entkontextualisiert! und leider (natürlich) unvollständig!“

via: @falkschacht

]]>
https://www.langweiledich.net/videomix-zeigt-40-jahre-deutschrap-hip-hop-in-730-minuten/ 369943@fever.esszett.org Thu, 06 Aug 2020 08:04:28 GMT
<![CDATA[Demonstration gegen Corona-Maßnahmen: Stuttgarts Querdenker fahren nach Berlin]]>
Bei einer Demo der Stuttgarter Initiative Querdenken 711 gegen die Corona-Maßnahmen werden am Samstag 10 000 Menschen erwartet. Zunächst war von einer halben Million die Rede. In der Hauptstadt wird es Wochenende trotzdem voll werden.]]>
https://www.stuttgarter-zeitung.de/inhalt.demonstration-gegen-corona-massnahmen-stuttgarts-querdenker-fahren-nach-berlin.52f2e45c-c08d-4501-914e-520a358bed46.html 368157@fever.esszett.org Fri, 31 Jul 2020 18:34:00 GMT