4,548 Matching Annotations
  1. Jan 2021
    1. Great, I can use vw to scale text so it doesn't look puny on a desktop! Perfect... Oh. Huh, now the text is too small to read when viewed on a phone. Okay, well I can just use "max(x,y)" to make sure it doesn't get shrunk beyond a minimum size. Perfect... Oh. Hmm. Looks like "max" isn't supported properly by Chrome. Okay, well guess I'll just use "px" again.
    1. overflow-wrap: break-word; makes sure the long string will wrap and not bust out of the container. You might as well use word-wrap as well because as the spec says, they are literally just alternate names for each other. Some browsers support one and not the other.
    1. It won't work if $HOME is not under /home. Really. Not even if you softlink. You need a bind mount
    2. Flatpak as a truly cross-distro application solution that works equally well and non-problematic for all
    3. Canonical would do well to make sure they dont complicate things for whatever the next big Linux shift is.
    4. What's wrong here is Canonical trying to position itself as a powerhouse and ascertain control over Linux users.
    5. If upstream code presumes things will work that dont in snap (e.g. accesses /tmp or /etc) the snap maintainer has to rewrite that code and maintain a fork. Pointless work. Packaging for .deb is a no-brainer.
    6. Why did I put the kdb in the snap file system? Because the app is sandboxed, so I had no choice.
    7. +1 For Devuan here, running it on my home and work machines, and on my son's laptop, despite his IT teacher telling him to install a proper operating system like Windows 10....
    8. >Linux needs an app delivery format Yeah, it's incredible that it has managed to survive for so long without one.
    9. It's Snap that drove me to Arch, so it did me a huge favour. Seeing things like GNOME as a snap and other 'core' products wasn't something I was comfortable with. Personally, I prefer flatpaks as a packaging format when compared to snap and appimage. I agree that Linux needs an app delivery format, but snap's current implementation isn't it.
    10. You stick with what you know. It's trouble free because you know how to use it. That's achievable on any of the main OSs, even (gasp!) Windows.
    11. Its not too complicated but it is an annoyance. I want /etc/hosts, /etc/resolv.conf, /etc/nsswitch.conf, /etc/rc.local and all the standard stuff to work. The heavy lifting is done in the kernel. All they need to do is leave it alone. Its getting harder to make Ubuntu behave like Linux.
    1. If components gain the slot attribute, then it would be possible to implement the proposed behavior of <svelte:fragment /> by creating a component that has a default slot with out any wrappers. However, I think it's still a good idea to add <svelte:fragment /> so everyone who encounters this common use case doesn't have to come up with their own slightly different solutions.
    2. I think this is very important feature to implement. Because for now we need to wrap target components by useless wrapper nodes.
    1. Moving DOM elements around made me anxious and I wanted to preserve natural tab order without resorting to setting tabindex, so I also made a flexbox version that never moves DOM elements around. I think it's the superior solution, at least for the layouts I was going for. https://github.com/wickning1/svelte-components/blob/master/src/FlexCardLayout.svelte
    2. The CardLayout creates a store in context and the Card creates a standardized div container and registers it to the store so that the CardLayout has access to that DOM element. Then in afterUpdate you can move the DOM elements into columns and Svelte will not try to put them back where they go. It's a bit messy but it works.
    1. // read-only, but visible to consumers via bind:start export let start = 0;

      Can't do

      export const start = 0
      

      (because it needs to be mutable/assignable within this local component), so we have to do

      export let start = 0
      

      with a comment saying that it's read-only (by the consumer).

    1. While it is easy to imagine that all iterators could be expressed as arrays, this is not true. Arrays must be allocated in their entirety, but iterators are consumed only as necessary. Because of this, iterators can express sequences of unlimited size, such as the range of integers between 0 and Infinity.
    1. I've reproduced, in a very simple way, what I would like it to do: https://svelte.dev/repl/2b0b7837e3ba44b5aba8d7e774094bb4?version=3.19.1

      This is the same URL as the original example given in issue description.

      I'm guessing what happened is they started with that one, made some changes, and then I think they must have forgot to save their modified REPL (which would have generated a new, unique URL).

    1. https://github.com/sveltejs/svelte/issues/1037#issuecomment-737872461

      Explanation (from https://github.com/sveltejs/svelte/issues/1037#issuecomment-739458005):

      @AlexGalays register is an action created and passed in from the parent node (Wrapper) which allows the child to register with it. Not builtin to svelte.

      That's very clever @PatrickG. Nice one. I was a bit confused when first looking at it to understand what was going on, but I think that will be a handy tool in the toolbox.

      But why do we need this? If we remove all use:register, it still toggles just fine. Seems the only benefit is that this allows cleanup.

    1. Popper for Svelte with actions, no wrapper components or component bindings required! Other Popper libraries for Svelte (including the official @popperjs/svelte library) use a wrapper component that takes the required DOM elements as props. Not only does this require multiple bind:this, you also have to pollute your script tag with multiple DOM references. We can do better with Svelte actions!
    1. It’s fairly common to assume that there is an onHover event handler in React, especially when you consider the naming conventions of the other event handlers, such as onClick, onSubmit, and onDrag.Why wouldn’t there be an onHover event in React?
    1. JSONP is really a simply trick to overcome XMLHttpRequest same domain policy. (As you know one cannot send AJAX (XMLHttpRequest) request to a different domain.) So - instead of using XMLHttpRequest we have to use script HTMLl tags, the ones you usually use to load JS files, in order for JS to get data from another domain. Sounds weird?
    1. “JSONP is JSON with extra code” would be too easy for the real world. No, you gotta have little discrepancies. What’s the fun in programming if everything just works? Turns out JSON is not a subset of JavaScript. If all you do is take a JSON object and wrap it in a function call, one day you will be bitten by strange syntax errors, like I was today.
    1. No doubt privacyis valuable to people who have mischief to hide, but that is not enoughto make it generally worth protecting. However, it is enough to re-mind us that whatever value privacy has, it also has costs. The moreprivacy we have, the more difficult it is to get the information that

      Privacy is valuable to people who have mischief to hide. This is not enough to make it worth protecting, but it tells us that there is also a cost.

    1. Miracles are teaching devices for demonstrating it is as blessed to give as to receive.

      Please do not use this statement to justify a charity of any kind. The author speaks about the level of the Mind. When a musician shares his song with others, it hardly means for him it's lost; the spreading makes it stronger and gives him opportunities he didn't have before. The Course takes this idea and brings it to the level where you will be amazed for sure.

      If you share a physical possession, you do divide its ownership. If you share an idea, however, you do not lessen it. All of it is still yours although all of it has been given away. T-5.1.1

      A major learning goal this course has set is to reverse your view of giving, so you can receive ... God's gifts will never lessen when they are given away. They but increase thereby. W-105.3

      To learn that giving and receiving are the same has special usefulness, because it can be tried so easily and seen as true. W-108.6

      All that I give is given to myself. W-126

  2. view.connect.americanpublicmedia.org view.connect.americanpublicmedia.org
    1. The 2019 eponymous documentary from director Justin Pemberton is our choice for this month’s Econ Extra Credit film series.

      Film: Capital in the Twenty-First Century

      This looks interesting to watch

    1. While the very same software might be in a PPA and a snap, the fact that the snap is shown in Ubuntu Software is the point I’m making. Many people use that to install software. So making software appear there is beneficial for developers - their software is found, and beneficial for users - they discover new software.
    2. Most users frankly don’t care how software is packaged. They don’t understand the difference between deb / rpm / flatpak / snap. They just want a button that installs Spotify so they can listen to their music.
    3. Frankly, if the Ubuntu Desktop team “switch” from making a deb of Chromium to making a snap, I doubt they’d switch back. It’s a tremendous amount of work for developer(s) to maintain numerous debs across all supported releases. Maintaining a single snap is just practically and financially more sensible.
    4. The best place to let the developers know, and track those bugs is in the bug tracker. There are hundreds of forums online, all over the place in many languages. We can’t be expected to read all of them. Anyone with a launchpad ID (thus, anyone who has an account on this discourse instance) has the capability to file a bug. I’d strongly recommend doing so, for each specific issue. Taking just a few minutes to do that will help tremendously.
    5. When there are imperfections, we rely on users and our active community to tell us how the software is not working correctly, so we can fix it. The way we do that, and have done for 15 years now, is via bug reports. Discussion is great, but detailed bug reports are better for letting developers know what’s wrong.
    6. The benefits for developers do reflect on benefits for users, with more software delivered faster and more securely.
    7. « Half solved » because, hey, still it’s proprietary so who knows ? You have to trust the software editor then, it’s just moving the trust cursor.
    8. ( sorry for 2 answers, can’t we edit posts here ? )
    9. What’s the use of ie. snap libreoffice if it can’t access documents on a samba server in my workplace ? Should I really re-organize years of storage and work in my office for being able to use snap ? A too high price to pay, for the moment.
    10. I - we all - totally agree about the benefits of snap for developers. But the loss of comfort and flexibility for end user is eventually a no-go option.
    11. And Unity ditching for something that’s still not on par with it, had already broken a bit my trust in Ubuntu as a stable option at work. Now snap is coming closer and broader…
    12. Users want work be done. Not struggling about how allowing access to removable medias or such a file on another partition… Not breaking their habits or workflows each time a snap replaces a deb.
    1. The trouble with leaving the verb off is that if a user experiencing low or no vision is browsing with the aid of a screen reader, they may not be able to determine what the noun is for. Screen readers can scrape the current page and create lists by content type (headings, links, buttons, etc.) for easer navigation. Static text that is placed in visual proximity to the download links will not come along for the ride if accessed via this method. While it might seem redundant to show the word “download” over and over again, including it can go a long way to providing context for users navigating without visual aids, or who have zoomed the page’s content to the point where the layout may not communicate the visual relationship.
    2. One lesser-appreciated user-behaviour is when a user would like to choose an alternative download location. On a download link, your user can right-click -> “save link as…” and place the download directly into a folder of their choice. Handy if you want something to go directly to removable media, for example. On a download button, there’s no such option.
    3. For larger files, the wait time can be especially problematic. A standard download is an all-or-nothing affair—interruptions can corrupt them and render them useless. Worse, it can waste valuable data on a metered data plan, an unfortunately all-too-relevant concern.
    1. I'd like to spin up a couple of these, both for my personal box (localhost-only) and for the development network.

  3. Dec 2020
    1. Add this to my toolchain (in particular, configure Lighthouse to run in our CI/CD pipeline).

    1. RFC 3463 [25], specifies further structuring of the reply strings, including the use of supplemental and more specific completion codes (see also RFC 5248 [26]).

      To-do: look at the mentioned RFCs.

    1. Or maybe a better standard was in the humanitarian world. “There’s a core ethical principle called the responsibility to protect, which is about organizations having a primary responsibility to protect their own personnel,” said Abramowitz. “What’s very clear is that many teachers are distrustful because they have been in deeply unsafe situations for a very long time.” Teachers are asked to deal with school shootings, violent children, aggressive adults, poverty, online bullying—a host of complex social problems that aren’t part of their job description, she said. “Educators are so abandoned, they no longer trust in their own system to protect them.
    1. Is motivated partisan cognition bipartisan?The extent to which each side exhibits motivated partisan (or biased) cognition is a focus of ongoing debate. Some scholars argue for symmetry (SM). For example, a recent meta-analysis demonstrates equivalent levels of motivated partisan cognition across 51 experiments investigating the tenden cy to evaluate otherwise identical in-formation more favorably when it supports versus challenges one’s political beliefs or allegiances (14). In an illu strative experiment, liberals and conservatives viewed a film clip of a political demonstration in which protestors clashed with police. Despite view-ing the identical clip, liberals rated the protesters as more violent when they believed it was an anti-abortion protest (a conservative cause) rather than a gay-rights protest (a liberal cause), whereas conservatives exhibited the opposite pattern (SM). Other scholars argue for asymmetry. For example, some evidence suggests that, relative to Democrats, Republicans have a higher need for order and greater trust in their gut-level intuitions. Such tendencies appear to motivate them to favor explana-tions that are straightforward and intuitive rather than complex and abstract, even when the latter types of explanation might be more accurate (15) (SM). Such findings are representative of the existing evidence, but conclusions remain tentative.

      This is classic material to add to that which i dug up in 2016 about non-attachment to views.

    1. I guess it's about "preloading" and not "navigation", if it's the case, then I guess there is still no way to attach to navigation events, and this issue should be kept open.
    2. No JS event is fired, so there currently isn't any clean way to do this that I can see.
    1. The only solution that I can see is to ensure that each user gets their own set of stores for each server-rendered page. We can achieve this with the context API, and expose the stores like so: <script> import { stores } from '@sapper/app'; const { page, preloading, session } = stores(); </script> Calling stores() outside component initialisation would be an error.

      Good solution.

    1. This would be cumbersome, and would encourage developers to populate stores from inside components, which makes accidental data leakage significantly more likely.
    2. which makes it much harder to accidentally keep logged-in state visible after a client-side logout
    1. This is an opportunity to fix a bug: if you're on a page that redirects to a login page if there's no user object, or otherwise preloads data specific to that user, then logging out won't automatically update the page — you could easily end up with a page like HOME ABOUT LOG IN ----------------------------------------------------------------------------------------- Secret, user-specific data that shouldn't be visible alongside a 'log in' button:
    1. No athlete has embodied the soul of a city and the spirit of its people as Richard did in the 1940s and '50s in Montreal. The Rocket's triumphs were the people's triumphs. In a match the previous Sunday, Richard had twice viciously slashed his nemesis, Hal Laycoe of the Boston Bruins, and then assaulted a linesman. Richard was then suspended for the remaining regular season. Richard had led the Canadiens to three Stanley Cups and had scored 50 goals in 50 games, but he had never won a scoring title and was on the brink of his first. The Richard Riot is generally considered the first explosion of French-Canadian nationalism, the beginning of a social and political dynamic that shapes Canada to this day.

    2. This is a letter by Buteux to the father general, dated at Three Rivers, September 21, 1649. The little settlement of Three Rivers is so slightly defended that the French are in daily peril of their lives. Christophe Regnaut was one of the donnés in the Huron mission, although he did not witness this tragedy, he obtained full particulars of it from the Christian Hurons taken captive by the Iroquois, who were present throughout the horrible torments inflicted upon the unfortunate Jesuits. He relates these in detail, and then describes the condition of the martyrs' remains. Abraham Martin is imprisoned on a scandalous charge connected with the poor girl, but his trial is postponed till the arrival of the vessels. A few weeks later the second execution of Justice took place. September 20 - 22, Father Bressani arrived from the Huron country, with two bands of Indians, and the French traders and soldiers come down. Bringing 5,000 livres' weight of beaver skins. Bressani sets out on his return to the Huron mission but a few days later he comes back with his Huron companions, who probably through fear of the Iroquoi refuse to go beyond the river Des Prairies. When the last vessel returns to France it conveys an Iroquois captive. This year's trade amounts to 100,000 livres. A number of Hurons come down to three Rivers and Quebec to spend the winter; they are aided by the Jesuits with food, blankets, and more. Early September a reinforcement arrived consisting of four additional missionaries and a lot of Frenchmen besides. This gave the Fathers new courage and they even strive to extend their labors to more distant tribes.

    1. We usually only see people launching projects once they're already done. I'm sure there are countless more unfinished and unlaunched side projects that the world will never know about. Don't let your side project become one of them.
    2. They say that perfect is the enemy of good, and I'm coming to realise that something like a video course can never be perfect anyway. I can only do my best with the time and energy I have available. I'd rather finish this course and share my experience and insights on using Svelte with the world, than to plan it forever and never launch.
    1. People really don't stress enough the importance of enjoying what you're programming. It aids creativity, makes you a better teammate, and makes it significantly easier to enter a state of flow. It should be considered an important factor in choosing a web development framework (or lack thereof). Kudos!
    1. You can afford to make a proper PR to upstream.
    2. The change would be useful to other people as-is.
    3. No more waiting around for pull requests to be merged and published. No more forking repos just to fix that one tiny thing preventing your app from working.

      This could be both good and bad.

      potential downside: If people only fix things locally, then they may be less inclined/likely to actually/also submit a merge request, and therefore it may be less likely that this actually (ever) gets fixed upstream. Which is kind of ironic, considering the stated goal "No more waiting around for pull requests to be merged and published." But if this obviates the need to create a pull request (does it), then this could backfire / work against that goal.

      Requiring someone to fork a repo and push up a fix commit -- although a little extra work compared to just fixing locally -- is actually a good thing overall, for the community/ecosystem.

      Ah, good, I see they touched on some of these points in the sections:

      • Benefits of patching over forking
      • When to fork instead
    4. Yarn only runs the postinstall hook after yarn and yarn add, but not after yarn remove. The postinstall-postinstall package is used to make sure your postinstall hook gets executed even after a yarn remove.
    5. # fix a bug in one of your dependencies vim node_modules/some-package/brokenFile.js # run patch-package to create a .patch file npx patch-package some-package

      I love how directly this allows you to make the change -- directly on the source file itself -- and then patch-package does the actual work of generating a patch from it. Brilliant.

    1. Huh, to be honest, I'd expect assigning multiple elements to the same slot to fail at compile time unless the multiples were inside mutually exclusive conditionals. If the multiples were outside statically resolvable mutually exclusive conditionals I'd expect to see a runtime error.
    1. Some devs prefer Svelte’s minimal approach that defers problems to userland, encouraging more innovation, choice, and fragmentation, and other devs prefer a more fully integrated toolkit with a well-supported happy path.

      tag?: what scope of provided features / recommended happy path is needed?

    2. It’s worth mentioning that Svelte limits its scope to being only a UI component framework. Like React, it provides the view layer, but it has more batteries included with its component-scoped CSS and extensible stores for state management. Others like Angular and Vue provide a more all-in-one solution with official routers, opinionated state management, CLIs, and more. Sapper is Svelte’s official app framework that adds routing, server-side rendering, code splitting, and some other essential app features, but it has no opinions about state management and beyond. Some devs prefer Svelte’s minimal approach that defers problems to userland, encouraging more innovation, choice, and fragmentation, and other devs prefer a more fully integrated toolkit with a well-supported happy path.

      tag?: what scope of provided features / recommended happy path is needed?

    3. It’s worth mentioning that Svelte limits its scope to being only a UI component framework. Like React, it provides the view layer, but it has more batteries included with its component-scoped CSS and extensible stores for state management.
    4. With some frameworks, you may find your needs at odds with the enterprise-level goals of a megacorp owner, and you may both benefit and sometimes suffer from their web-scale engineering. Svelte’s future does not depend on the continued delivery of business value to one company, and its direction is shaped in public by volunteers.
    5. but really, the whole is what feels so good.
    6. Making UIs with Svelte is a pleasure. Svelte’s aesthetics feel like a warm cozy blanket on the stormy web. This impacts everything — features, documentation, syntax, semantics, performance, framework internals, npm install size, the welcoming and helpful community attitude, and its collegial open development and RFCs — it all oozes good taste. Its API is tight, powerful, and good looking — I’d point to actions and stores to support this praise, but really, the whole is what feels so good. The aesthetics of underlying technologies have a way of leaking into the end user experience.
    1. It seems being able to bind:this={slotEl} directly on a slot element is a popular request. I'll add my +1 as adding div wrappers just to get dom references gets old really fast.
  4. developer.mozilla.org developer.mozilla.org
    1. In a browser, the chrome is any visible aspect of a browser aside from the webpages themselves (e.g., toolbars, menu bar, tabs). This is not to be confused with the Google Chrome browser.
    1. Better community building: At the moment, MDN content edits are published instantly, and then reverted if they are not suitable. This is really bad for community relations. With a PR model, we can review edits and provide feedback, actually having conversations with contributors, building relationships with them, and helping them learn.
    2. Better contribution workflow: We will be using GitHub’s contribution tools and features, essentially moving MDN from a Wiki model to a pull request (PR) model. This is so much better for contribution, allowing for intelligent linting, mass edits, and inclusion of MDN docs in whatever workflows you want to add it to (you can edit MDN source files directly in your favorite code editor).
    3. Less developer maintenance burden: The existing (Kuma) platform is complex and hard to maintain. Adding new features is very difficult. The update will vastly simplify the platform code — we estimate that we can remove a significant chunk of the existing codebase, meaning easier maintenance and contributions.
    1. Everything Lives in GitWith a Jamstack project, anyone should be able to do a git clone, install any needed dependencies with a standard procedure (like npm install), and be ready to run the full project locally. No databases to clone, no complex installs. This reduces contributor friction, and also simplifies staging and testing workflows.
    1. I think the main difference between the two are the way API are served. Some smelte components need you to input big chunk of json as props, while i prefer keep props as primitive types and in the other hand give you different components tags to compose.
    2. I don't think this is what really matters at the end, since whatever is the implementation the goal should be to provide a library that people actually like to use.
    3. I personally think that starting from google's components makes easier to keeping update to material specs updates.
    1. Ariela had written a book about the history of theeveryday law of slavery in the U.S. Deep South that emphasized localculture and law,

      2019-12-30 12:12:53 AM

    2. Martha S. Jones,Birthright Citizens: A History of Race and Rights in AntebellumAmerica

    Tags

    Annotators

    1. p. 198:

      Given any five points on a sphere, show that some four of them lie on a hemisphere that includes its boundary.

      I'll admit, I already looked at the hint for this problem, and yes, my initial approach did indeed consist of trying to find the 'worst' configuration.

      I can think of two ways to determine whether or not two points on a sphere lie within the same hemisphere:

      • First off, since any two points on a sphere may be connected by a great circle, they're in the same hemisphere if they're separated by no more than \(\frac{\tau}{2}\) radians along this shortest path.
      • Equivalently, the length of the line segment connecting them must be less than or equal to \(2r\), where \(r\) is the radius of the sphere.

      One other note:

      • It's always possible to divide the sphere in half in such a way that any two points lie within the same hemisphere. (This is a corollary of the first point, above. Note that two antipodal points must necessarily fall on the boundary of such a division.)

      So, I have a picture in my mind of the sphere divided into eight regions of equal area by way of three great circles which intersect one another at right angles. (Think the Equator, the Prime Meridian, and a third great circle drawn through the poles at 90 degrees longitude.) My thinking now tends more toward combinatorics and the pigeonhole principle than geometry proper.

    1. But something about the comforting rigidity of the process, its seductive notation, but perhaps mostly its connotations of intellectual privilege, has drawn a diverse selection of disciplines to the altar of mathematical reasoning. Indeed, the widespread misappropriation of the language of mathematics in the social and biological sciences has to be one of the great tragedies of our time.

      The deliberate misappropriation of the language of mathematics.

  5. Nov 2020
    1. Mold allergy is caused by mold spores, which are microscopic fungi that are present everywhere in the air. In a few cases, indoor mold allergy can get more serious leading to breathing-related problems like bronchitis and asthma. Before anything else, the only way to treat an allergy to mold is by taking preventive measures to avoid exposure to triggers of mold allergy. Whenever you suspect mold allergy symptoms, do consult your doctor or a leading allergist for your condition.

    1. Traditional online funnels — more often than not — require you to have a separate:Content management system (ex. WordPress, Joomla)Web host (ex. SiteGround, Bluehost)Page builder (ex. Elementor, Beaver)Email autoresponder (ex. MailChimp, Aweber, GetResponse)Order formShopping cartWeb analyticsOther marketing tools
    1. Svelte by itself is great, but doing a complete PWA (with service workers, etc) that runs and scales on multiple devices with high quality app-like UI controls quickly gets complex. Flutter just provides much better tooling for that out of the box IMO. You are not molding a website into an app, you are just building an app. If I was building a relatively simple web app that is only meant to run on the web, then I might still prefer Svelte in some cases.
    1. I open this issue to announce that i'm actively working on a rewrite of this library to accomplish these goals:
    2. I hope @hperrin you're still alive to discuss about this and eventually for a pull request.
    3. Preview/beta release (I wish @hperrin allows it to pull request it here)
    4. For use$ since svelte is never going to support actions for components, i designed something that reminds React hooks that will in some ways replace this feature.

      Isn't that what use$ is trying to do already? How is that "something that reminds React hooks" any different? Will be interested to see...

    5. It is very important that "production ready" UI libraries are available because otherwise the use of Svelte cannot be argued. A key point would be to make it easy possible that people can contribute
    6. @monkeythedev can your work be used already? I would suggest not yet, i'm still doing core changes every day
    7. @monkeythedev I am curious how do you "organize" your work - You forked https://github.com/hperrin/svelte-material-ui and https://github.com/hperrin/svelte-material-ui is not very active. Do you plan an independent project ? I hope the original author would return at some times, if not, i'll see
    8. This one gets the SEO, so I hope you're successful @raythurnevoid.

      I assume this gets search traffic because people hope/assume that since there's a React "material-ui" that there might already be a "svelte-material-ui" port/adaptation available. So they search for exactly that (like I did). That and being the first to create that something (with that name).

    9. I agree, it would be great to join forces and speed up development... Svelte really needs one safe material library option.
    10. Maybe @hperrin would be able to make an appearance and select a few additional maintainers to help out.
    1. In the case of email, it can be argued that the widespread use of the unhyphenated spelling has made this compound noun an exception to the rule. It might also be said that closed (unhyphenated) spelling is simply the direction English is evolving, but good luck arguing that “tshirt” is a good way to write “t-shirt.”