234 Matching Annotations
  1. Dec 2024
    1. Der temperatur anstieg des jahres zwanzig dreiundzwanzig lässt sich mit großer wahrscheinlichkeit auf den rückgang der albedo der erde zurückführen punkt dabei spielt der rückgang niedriger wolken die hauptrolle punkt eine neue studie zeigt komma das diese veränderungen die null komma zwei grad temperaturanstieg erklären kommen die beobachtet wurden komme aber deren ursache noch nicht bekannt ist punkt der rückgang der niedrigen wolken bedeckung lässt sich zum teil auf weniger eu sohle zurückführen komma er könnte aber auch durch die globale erhitzung selbst verursacht sein komma also ein rückblicks effekt darstellen punkt Nun nun https://www.derstandard.at/story/3000000248101/raetselhafter-temperatursprung-durch-rueckgang-von-wolken

      Studie: https://www.science.org/doi/10.1126/science.adq7280

  2. Nov 2024
    1. for - AI - progress trap - interview Eric Schmidt - meme - AI progress trap - high intelligence + low compassion = existential threat

      Summary - After watching the interview, I would sum it up this way. Humanity faces an existential threat from AI due to: - AI is extreme concentration of power and intelligence (NOT wisdom!) - Humanity still have many traumatized people who want to harm others - low compassion - The deadly combination is: - proliferation of tools that give anyone extreme concentration of power and intelligence combined with - a sufficiently high percentage of traumatized people with - low levels of compassion and - high levels of unlimited aggression - All it takes is ONE bad actor with the right combination of circumstances and conditions to wreak harm on a global scale, and that will not be prevented by millions of good applications of the same technology

    1. #ifdef CONFIG_ARCH_HAS_HUGEPD static unsigned long hugepte_addr_end(unsigned long addr, unsigned long end, unsigned long sz) { unsigned long __boundary = (addr + sz) & ~(sz-1); return (__boundary - 1 < end - 1) ? __boundary : end; } static int gup_hugepte(pte_t *ptep, unsigned long sz, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long pte_end; struct page *page; struct folio *folio; pte_t pte; int refs; pte_end = (addr + sz) & ~(sz-1); if (pte_end < end) end = pte_end; pte = huge_ptep_get(ptep); if (!pte_access_permitted(pte, flags & FOLL_WRITE)) return 0; /* hugepages are never "special" */ VM_BUG_ON(!pfn_valid(pte_pfn(pte))); page = nth_page(pte_page(pte), (addr & (sz - 1)) >> PAGE_SHIFT); refs = record_subpages(page, addr, end, pages + *nr); folio = try_grab_folio(page, refs, flags); if (!folio) return 0; if (unlikely(pte_val(pte) != pte_val(ptep_get(ptep)))) { gup_put_folio(folio, refs, flags); return 0; } if (!folio_fast_pin_allowed(folio, flags)) { gup_put_folio(folio, refs, flags); return 0; } if (!pte_write(pte) && gup_must_unshare(NULL, flags, &folio->page)) { gup_put_folio(folio, refs, flags); return 0; } *nr += refs; folio_set_referenced(folio); return 1; } static int gup_huge_pd(hugepd_t hugepd, unsigned long addr, unsigned int pdshift, unsigned long end, unsigned int flags, struct page **pages, int *nr) { pte_t *ptep; unsigned long sz = 1UL << hugepd_shift(hugepd); unsigned long next; ptep = hugepte_offset(hugepd, addr, pdshift); do { next = hugepte_addr_end(addr, end, sz); if (!gup_hugepte(ptep, sz, addr, end, flags, pages, nr)) return 0; } while (ptep++, addr = next, addr != end); return 1; } #else static inline int gup_huge_pd(hugepd_t hugepd, unsigned long addr, unsigned int pdshift, unsigned long end, unsigned int flags, struct page **pages, int *nr) { return 0; } #endif /* CONFIG_ARCH_HAS_HUGEPD */ static int gup_huge_pmd(pmd_t orig, pmd_t *pmdp, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { struct page *page; struct folio *folio; int refs; if (!pmd_access_permitted(orig, flags & FOLL_WRITE)) return 0; if (pmd_devmap(orig)) { if (unlikely(flags & FOLL_LONGTERM)) return 0; return __gup_device_huge_pmd(orig, pmdp, addr, end, flags, pages, nr); } page = nth_page(pmd_page(orig), (addr & ~PMD_MASK) >> PAGE_SHIFT); refs = record_subpages(page, addr, end, pages + *nr); folio = try_grab_folio(page, refs, flags); if (!folio) return 0; if (unlikely(pmd_val(orig) != pmd_val(*pmdp))) { gup_put_folio(folio, refs, flags); return 0; } if (!folio_fast_pin_allowed(folio, flags)) { gup_put_folio(folio, refs, flags); return 0; } if (!pmd_write(orig) && gup_must_unshare(NULL, flags, &folio->page)) { gup_put_folio(folio, refs, flags); return 0; } *nr += refs; folio_set_referenced(folio); return 1; } static int gup_huge_pud(pud_t orig, pud_t *pudp, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { struct page *page; struct folio *folio; int refs; if (!pud_access_permitted(orig, flags & FOLL_WRITE)) return 0; if (pud_devmap(orig)) { if (unlikely(flags & FOLL_LONGTERM)) return 0; return __gup_device_huge_pud(orig, pudp, addr, end, flags, pages, nr); } page = nth_page(pud_page(orig), (addr & ~PUD_MASK) >> PAGE_SHIFT); refs = record_subpages(page, addr, end, pages + *nr); folio = try_grab_folio(page, refs, flags); if (!folio) return 0; if (unlikely(pud_val(orig) != pud_val(*pudp))) { gup_put_folio(folio, refs, flags); return 0; } if (!folio_fast_pin_allowed(folio, flags)) { gup_put_folio(folio, refs, flags); return 0; } if (!pud_write(orig) && gup_must_unshare(NULL, flags, &folio->page)) { gup_put_folio(folio, refs, flags); return 0; } *nr += refs; folio_set_referenced(folio); return 1; } static int gup_huge_pgd(pgd_t orig, pgd_t *pgdp, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { int refs; struct page *page; struct folio *folio; if (!pgd_access_permitted(orig, flags & FOLL_WRITE)) return 0; BUILD_BUG_ON(pgd_devmap(orig)); page = nth_page(pgd_page(orig), (addr & ~PGDIR_MASK) >> PAGE_SHIFT); refs = record_subpages(page, addr, end, pages + *nr); folio = try_grab_folio(page, refs, flags); if (!folio) return 0; if (unlikely(pgd_val(orig) != pgd_val(*pgdp))) { gup_put_folio(folio, refs, flags); return 0; } if (!pgd_write(orig) && gup_must_unshare(NULL, flags, &folio->page)) { gup_put_folio(folio, refs, flags); return 0; } if (!folio_fast_pin_allowed(folio, flags)) { gup_put_folio(folio, refs, flags); return 0; } *nr += refs; folio_set_referenced(folio); return 1; } static int gup_pmd_range(pud_t *pudp, pud_t pud, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; pmd_t *pmdp; pmdp = pmd_offset_lockless(pudp, pud, addr); do { pmd_t pmd = pmdp_get_lockless(pmdp); next = pmd_addr_end(addr, end); if (!pmd_present(pmd)) return 0; if (unlikely(pmd_trans_huge(pmd) || pmd_huge(pmd) || pmd_devmap(pmd))) { /* See gup_pte_range() */ if (pmd_protnone(pmd)) return 0; if (!gup_huge_pmd(pmd, pmdp, addr, next, flags, pages, nr)) return 0; } else if (unlikely(is_hugepd(__hugepd(pmd_val(pmd))))) { /* * architecture have different format for hugetlbfs * pmd format and THP pmd format */ if (!gup_huge_pd(__hugepd(pmd_val(pmd)), addr, PMD_SHIFT, next, flags, pages, nr)) return 0; } else if (!gup_pte_range(pmd, pmdp, addr, next, flags, pages, nr)) return 0; } while (pmdp++, addr = next, addr != end); return 1; } static int gup_pud_range(p4d_t *p4dp, p4d_t p4d, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; pud_t *pudp; pudp = pud_offset_lockless(p4dp, p4d, addr); do { pud_t pud = READ_ONCE(*pudp); next = pud_addr_end(addr, end); if (unlikely(!pud_present(pud))) return 0; if (unlikely(pud_huge(pud) || pud_devmap(pud))) { if (!gup_huge_pud(pud, pudp, addr, next, flags, pages, nr)) return 0; } else if (unlikely(is_hugepd(__hugepd(pud_val(pud))))) { if (!gup_huge_pd(__hugepd(pud_val(pud)), addr, PUD_SHIFT, next, flags, pages, nr)) return 0; } else if (!gup_pmd_range(pudp, pud, addr, next, flags, pages, nr)) return 0; } while (pudp++, addr = next, addr != end); return 1; } static int gup_p4d_range(pgd_t *pgdp, pgd_t pgd, unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; p4d_t *p4dp; p4dp = p4d_offset_lockless(pgdp, pgd, addr); do { p4d_t p4d = READ_ONCE(*p4dp); next = p4d_addr_end(addr, end); if (p4d_none(p4d)) return 0; BUILD_BUG_ON(p4d_huge(p4d)); if (unlikely(is_hugepd(__hugepd(p4d_val(p4d))))) { if (!gup_huge_pd(__hugepd(p4d_val(p4d)), addr, P4D_SHIFT, next, flags, pages, nr)) return 0; } else if (!gup_pud_range(p4dp, p4d, addr, next, flags, pages, nr)) return 0; } while (p4dp++, addr = next, addr != end); return 1; } static void gup_pgd_range(unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { unsigned long next; pgd_t *pgdp; pgdp = pgd_offset(current->mm, addr); do { pgd_t pgd = READ_ONCE(*pgdp); next = pgd_addr_end(addr, end); if (pgd_none(pgd)) return; if (unlikely(pgd_huge(pgd))) { if (!gup_huge_pgd(pgd, pgdp, addr, next, flags, pages, nr)) return; } else if (unlikely(is_hugepd(__hugepd(pgd_val(pgd))))) { if (!gup_huge_pd(__hugepd(pgd_val(pgd)), addr, PGDIR_SHIFT, next, flags, pages, nr)) return; } else if (!gup_p4d_range(pgdp, pgd, addr, next, flags, pages, nr)) return; } while (pgdp++, addr = next, addr != end); } #else static inline void gup_pgd_range(unsigned long addr, unsigned long end, unsigned int flags, struct page **pages, int *nr) { }

      policy use functions for gup_huge pte policy code function above (not right above, gotta scroll probably to find it)

    2. static int internal_get_user_pages_fast(unsigned long start, unsigned long nr_pages, unsigned int gup_flags, struct page **pages) { unsigned long len, end; unsigned long nr_pinned; int locked = 0; int ret; if (WARN_ON_ONCE(gup_flags & ~(FOLL_WRITE | FOLL_LONGTERM | FOLL_FORCE | FOLL_PIN | FOLL_GET | FOLL_FAST_ONLY | FOLL_NOFAULT | FOLL_PCI_P2PDMA | FOLL_HONOR_NUMA_FAULT))) return -EINVAL; if (gup_flags & FOLL_PIN) mm_set_has_pinned_flag(&current->mm->flags); if (!(gup_flags & FOLL_FAST_ONLY)) might_lock_read(&current->mm->mmap_lock); start = untagged_addr(start) & PAGE_MASK; len = nr_pages << PAGE_SHIFT; if (check_add_overflow(start, len, &end)) return -EOVERFLOW; if (end > TASK_SIZE_MAX) return -EFAULT; if (unlikely(!access_ok((void __user *)start, len))) return -EFAULT; nr_pinned = lockless_pages_from_mm(start, end, gup_flags, pages); if (nr_pinned == nr_pages || gup_flags & FOLL_FAST_ONLY) return nr_pinned; /* Slow path: try to get the remaining pages with get_user_pages */ start += nr_pinned << PAGE_SHIFT; pages += nr_pinned; ret = __gup_longterm_locked(current->mm, start, nr_pages - nr_pinned, pages, &locked, gup_flags | FOLL_TOUCH | FOLL_UNLOCKABLE); if (ret < 0) { /* * The caller has to unpin the pages we already pinned so * returning -errno is not an option */ if (nr_pinned) return nr_pinned; return ret; } return ret + nr_pinned; } /** * get_user_pages_fast_only() - pin user pages in memory * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying pin behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * * Like get_user_pages_fast() except it's IRQ-safe in that it won't fall back to * the regular GUP. * * If the architecture does not support this function, simply return with no * pages pinned. * * Careful, careful! COW breaking can go either way, so a non-write * access can get ambiguous page results. If you call this function without * 'write' set, you'd better be sure that you're ok with that ambiguity. */ int get_user_pages_fast_only(unsigned long start, int nr_pages, unsigned int gup_flags, struct page **pages) { /* * Internally (within mm/gup.c), gup fast variants must set FOLL_GET, * because gup fast is always a "pin with a +1 page refcount" request. * * FOLL_FAST_ONLY is required in order to match the API description of * this routine: no fall back to regular ("slow") GUP. */ if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_GET | FOLL_FAST_ONLY)) return -EINVAL; return internal_get_user_pages_fast(start, nr_pages, gup_flags, pages); } EXPORT_SYMBOL_GPL(get_user_pages_fast_only); /** * get_user_pages_fast() - pin user pages in memory * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying pin behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * * Attempt to pin user pages in memory without taking mm->mmap_lock. * If not successful, it will fall back to taking the lock and * calling get_user_pages(). * * Returns number of pages pinned. This may be fewer than the number requested. * If nr_pages is 0 or negative, returns 0. If no pages were pinned, returns * -errno. */ int get_user_pages_fast(unsigned long start, int nr_pages, unsigned int gup_flags, struct page **pages) { /* * The caller may or may not have explicitly set FOLL_GET; either way is * OK. However, internally (within mm/gup.c), gup fast variants must set * FOLL_GET, because gup fast is always a "pin with a +1 page refcount" * request. */ if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_GET)) return -EINVAL; return internal_get_user_pages_fast(start, nr_pages, gup_flags, pages); } EXPORT_SYMBOL_GPL(get_user_pages_fast); /** * pin_user_pages_fast() - pin user pages in memory without taking locks * * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying pin behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * * Nearly the same as get_user_pages_fast(), except that FOLL_PIN is set. See * get_user_pages_fast() for documentation on the function arguments, because * the arguments here are identical. * * FOLL_PIN means that the pages must be released via unpin_user_page(). Please * see Documentation/core-api/pin_user_pages.rst for further details. * * Note that if a zero_page is amongst the returned pages, it will not have * pins in it and unpin_user_page() will not remove pins from it. */ int pin_user_pages_fast(unsigned long start, int nr_pages, unsigned int gup_flags, struct page **pages) { if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_PIN)) return -EINVAL; return internal_get_user_pages_fast(start, nr_pages, gup_flags, pages); } EXPORT_SYMBOL_GPL(pin_user_pages_fast); /** * pin_user_pages_remote() - pin pages of a remote process * * @mm: mm_struct of target mm * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying lookup behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * @locked: pointer to lock flag indicating whether lock is held and * subsequently whether VM_FAULT_RETRY functionality can be * utilised. Lock must initially be held. * * Nearly the same as get_user_pages_remote(), except that FOLL_PIN is set. See * get_user_pages_remote() for documentation on the function arguments, because * the arguments here are identical. * * FOLL_PIN means that the pages must be released via unpin_user_page(). Please * see Documentation/core-api/pin_user_pages.rst for details. * * Note that if a zero_page is amongst the returned pages, it will not have * pins in it and unpin_user_page*() will not remove pins from it. */ long pin_user_pages_remote(struct mm_struct *mm, unsigned long start, unsigned long nr_pages, unsigned int gup_flags, struct page **pages, int *locked) { int local_locked = 1; if (!is_valid_gup_args(pages, locked, &gup_flags, FOLL_PIN | FOLL_TOUCH | FOLL_REMOTE)) return 0; return __gup_longterm_locked(mm, start, nr_pages, pages, locked ? locked : &local_locked, gup_flags); } EXPORT_SYMBOL(pin_user_pages_remote); /** * pin_user_pages() - pin user pages in memory for use by other devices * * @start: starting user address * @nr_pages: number of pages from start to pin * @gup_flags: flags modifying lookup behaviour * @pages: array that receives pointers to the pages pinned. * Should be at least nr_pages long. * * Nearly the same as get_user_pages(), except that FOLL_TOUCH is not set, and * FOLL_PIN is set. * * FOLL_PIN means that the pages must be released via unpin_user_page(). Please * see Documentation/core-api/pin_user_pages.rst for details. * * Note that if a zero_page is amongst the returned pages, it will not have * pins in it and unpin_user_page*() will not remove pins from it. */ long pin_user_pages(unsigned long start, unsigned long nr_pages, unsigned int gup_flags, struct page **pages) { int locked = 1; if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_PIN)) return 0; return __gup_longterm_locked(current->mm, start, nr_pages, pages, &locked, gup_flags); } EXPORT_SYMBOL(pin_user_pages); /* * pin_user_pages_unlocked() is the FOLL_PIN variant of * get_user_pages_unlocked(). Behavior is the same, except that this one sets * FOLL_PIN and rejects FOLL_GET. * * Note that if a zero_page is amongst the returned pages, it will not have * pins in it and unpin_user_page*() will not remove pins from it. */ long pin_user_pages_unlocked(unsigned long start, unsigned long nr_pages, struct page **pages, unsigned int gup_flags) { int locked = 0; if (!is_valid_gup_args(pages, NULL, &gup_flags, FOLL_PIN | FOLL_TOUCH | FOLL_UNLOCKABLE)) return 0; return __gup_longterm_locked(current->mm, start, nr_pages, pages, &locked, gup_flags); }

      fast gup functions

    3. /** * unpin_user_pages() - release an array of gup-pinned pages. * @pages: array of pages to be marked dirty and released. * @npages: number of pages in the @pages array. * * For each page in the @pages array, release the page using unpin_user_page(). * * Please see the unpin_user_page() documentation for details. */ void unpin_user_pages(struct page **pages, unsigned long npages) { unsigned long i; struct folio *folio; unsigned int nr; /* * If this WARN_ON() fires, then the system *might* be leaking pages (by * leaving them pinned), but probably not. More likely, gup/pup returned * a hard -ERRNO error to the caller, who erroneously passed it here. */ if (WARN_ON(IS_ERR_VALUE(npages))) return; sanity_check_pinned_pages(pages, npages); for (i = 0; i < npages; i += nr) { folio = gup_folio_next(pages, npages, i, &nr); gup_put_folio(folio, nr, FOLL_PIN); } }

      gup unpin function, not actual logic

    4. void unpin_user_page_range_dirty_lock(struct page *page, unsigned long npages, bool make_dirty) { unsigned long i; struct folio *folio; unsigned int nr; for (i = 0; i < npages; i += nr) { folio = gup_folio_range_next(page, npages, i, &nr); if (make_dirty && !folio_test_dirty(folio)) { folio_lock(folio); folio_mark_dirty(folio); folio_unlock(folio); } gup_put_folio(folio, nr, FOLL_PIN); } }

      unpin logic but for dirty pages

    5. if ((flags & FOLL_DUMP) && (vma_is_anonymous(vma) || !vma->vm_ops->fault)) return ERR_PTR(-EFAULT); return NULL;

      explained in comments

    6. static void __maybe_unused undo_dev_pagemap(int *nr, int nr_start, unsigned int flags, struct page **pages) { while ((*nr) - nr_start) { struct page *page = pages[--(*nr)]; ClearPageReferenced(page); if (flags & FOLL_PIN) unpin_user_page(page); else put_page(page); } }

      policy use function that undoes mapping

    7. #ifdef CONFIG_MIGRATION /* * Returns the number of collected pages. Return value is always >= 0. */ static unsigned long collect_longterm_unpinnable_pages( struct list_head *movable_page_list, unsigned long nr_pages, struct page **pages) { unsigned long i, collected = 0; struct folio *prev_folio = NULL; bool drain_allow = true; for (i = 0; i < nr_pages; i++) { struct folio *folio = page_folio(pages[i]); if (folio == prev_folio) continue; prev_folio = folio; if (folio_is_longterm_pinnable(folio)) continue; collected++; if (folio_is_device_coherent(folio)) continue; if (folio_test_hugetlb(folio)) { isolate_hugetlb(folio, movable_page_list); continue; } if (!folio_test_lru(folio) && drain_allow) { lru_add_drain_all(); drain_allow = false; } if (!folio_isolate_lru(folio)) continue; list_add_tail(&folio->lru, movable_page_list); node_stat_mod_folio(folio, NR_ISOLATED_ANON + folio_is_file_lru(folio), folio_nr_pages(folio)); } return collected; }
    8. #ifdef CONFIG_ELF_CORE struct page *get_dump_page(unsigned long addr) { struct page *page; int locked = 0; int ret; ret = __get_user_pages_locked(current->mm, addr, 1, &page, &locked, FOLL_FORCE | FOLL_DUMP | FOLL_GET); return (ret == 1) ? page : NULL; } #endif /* CONFIG_ELF_CORE */

      part of policy use code likely

    9. int __mm_populate(unsigned long start, unsigned long len, int ignore_errors) { struct mm_struct *mm = current->mm; unsigned long end, nstart, nend; struct vm_area_struct *vma = NULL; int locked = 0; long ret = 0; end = start + len; for (nstart = start; nstart < end; nstart = nend) { /* * We want to fault in pages for [nstart; end) address range. * Find first corresponding VMA. */ if (!locked) { locked = 1; mmap_read_lock(mm); vma = find_vma_intersection(mm, nstart, end); } else if (nstart >= vma->vm_end) vma = find_vma_intersection(mm, vma->vm_end, end); if (!vma) break; /* * Set [nstart; nend) to intersection of desired address * range with the first VMA. Also, skip undesirable VMA types. */ nend = min(end, vma->vm_end); if (vma->vm_flags & (VM_IO | VM_PFNMAP)) continue; if (nstart < vma->vm_start) nstart = vma->vm_start; /* * Now fault in a range of pages. populate_vma_page_range() * double checks the vma flags, so that it won't mlock pages * if the vma was already munlocked. */ ret = populate_vma_page_range(vma, nstart, nend, &locked); if (ret < 0) { if (ignore_errors) { ret = 0; continue; /* continue at next VMA */ } break; } nend = nstart + ret * PAGE_SIZE; ret = 0; } if (locked) mmap_read_unlock(mm); return ret; /* 0 or negative error code */ }

      policy use function that populates pages like the func before this.

    10. long populate_vma_page_range(struct vm_area_struct *vma, unsigned long start, unsigned long end, int *locked) { struct mm_struct *mm = vma->vm_mm; unsigned long nr_pages = (end - start) / PAGE_SIZE; int local_locked = 1; int gup_flags; long ret; VM_BUG_ON(!PAGE_ALIGNED(start)); VM_BUG_ON(!PAGE_ALIGNED(end)); VM_BUG_ON_VMA(start < vma->vm_start, vma); VM_BUG_ON_VMA(end > vma->vm_end, vma); mmap_assert_locked(mm); /* * Rightly or wrongly, the VM_LOCKONFAULT case has never used * faultin_page() to break COW, so it has no work to do here. */ if (vma->vm_flags & VM_LOCKONFAULT) return nr_pages; gup_flags = FOLL_TOUCH; /* * We want to touch writable mappings with a write fault in order * to break COW, except for shared mappings because these don't COW * and we would not want to dirty them for nothing. */ if ((vma->vm_flags & (VM_WRITE | VM_SHARED)) == VM_WRITE) gup_flags |= FOLL_WRITE; /* * We want mlock to succeed for regions that have any permissions * other than PROT_NONE. */ if (vma_is_accessible(vma)) gup_flags |= FOLL_FORCE; if (locked) gup_flags |= FOLL_UNLOCKABLE; /* * We made sure addr is within a VMA, so the following will * not result in a stack expansion that recurses back here. */ ret = __get_user_pages(mm, start, nr_pages, gup_flags, NULL, locked ? locked : &local_locked); lru_add_drain(); return ret; }

      policy use code.

    11. if (!(flags & FOLL_INTERRUPTIBLE)) return false;

      fatal fault signal handler

    12. #ifdef CONFIG_STACK_GROWSUP return vma_lookup(mm, addr); #else static volatile unsigned long next_warn; struct vm_area_struct *vma; unsigned long now, next; vma = find_vma(mm, addr); if (!vma || (addr >= vma->vm_start)) return vma; /* Only warn for half-way relevant accesses */ if (!(vma->vm_flags & VM_GROWSDOWN)) return NULL; if (vma->vm_start - addr > 65536) return NULL; /* Let's not warn more than once an hour.. */ now = jiffies; next = next_warn; if (next && time_before(now, next)) return NULL; next_warn = now + 60*60*HZ; /* Let people know things may have changed. */ pr_warn("GUP no longer grows the stack in %s (%d): %lx-%lx (%lx)\n", current->comm, task_pid_nr(current), vma->vm_start, vma->vm_end, addr); dump_stack(); return NULL;

      helper func to lookup vma(virtual mem area) that warns per hour about half way relevant acc and changes in stack

    13. if (*flags & FOLL_NOFAULT) return -EFAULT; if (*flags & FOLL_WRITE) fault_flags |= FAULT_FLAG_WRITE; if (*flags & FOLL_REMOTE) fault_flags |= FAULT_FLAG_REMOTE; if (*flags & FOLL_UNLOCKABLE) { fault_flags |= FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; /* * FAULT_FLAG_INTERRUPTIBLE is opt-in. GUP callers must set * FOLL_INTERRUPTIBLE to enable FAULT_FLAG_INTERRUPTIBLE. * That's because some callers may not be prepared to * handle early exits caused by non-fatal signals. */ if (*flags & FOLL_INTERRUPTIBLE) fault_flags |= FAULT_FLAG_INTERRUPTIBLE; } if (*flags & FOLL_NOWAIT) fault_flags |= FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_RETRY_NOWAIT; if (*flags & FOLL_TRIED) { /* * Note: FAULT_FLAG_ALLOW_RETRY and FAULT_FLAG_TRIED * can co-exist */ fault_flags |= FAULT_FLAG_TRIED; } if (unshare) { fault_flags |= FAULT_FLAG_UNSHARE; /* FAULT_FLAG_WRITE and FAULT_FLAG_UNSHARE are incompatible */ VM_BUG_ON(fault_flags & FAULT_FLAG_WRITE); } ret = handle_mm_fault(vma, address, fault_flags, NULL); if (ret & VM_FAULT_COMPLETED) { /* * With FAULT_FLAG_RETRY_NOWAIT we'll never release the * mmap lock in the page fault handler. Sanity check this. */ WARN_ON_ONCE(fault_flags & FAULT_FLAG_RETRY_NOWAIT); *locked = 0; /* * We should do the same as VM_FAULT_RETRY, but let's not * return -EBUSY since that's not reflecting the reality of * what has happened - we've just fully completed a page * fault, with the mmap lock released. Use -EAGAIN to show * that we want to take the mmap lock _again_. */ return -EAGAIN; } if (ret & VM_FAULT_ERROR) { int err = vm_fault_to_errno(ret, *flags); if (err) return err; BUG(); } if (ret & VM_FAULT_RETRY) { if (!(fault_flags & FAULT_FLAG_RETRY_NOWAIT)) *locked = 0; return -EBUSY; }

      Seems it's just setting flags for page faults based on flags param

    14. if (likely(!pmd_trans_huge(pmdval))) return follow_page_pte(vma, address, pmd, flags, &ctx->pgmap); if (pmd_protnone(pmdval) && !gup_can_follow_protnone(vma, flags)) return no_page_table(vma, flags); ptl = pmd_lock(mm, pmd); if (unlikely(!pmd_present(*pmd))) { spin_unlock(ptl); return no_page_table(vma, flags); } if (unlikely(!pmd_trans_huge(*pmd))) { spin_unlock(ptl); return follow_page_pte(vma, address, pmd, flags, &ctx->pgmap); }

      branch prediction to check if pmd is there and if it's big

    15. if (pmd_none(pmdval)) return no_page_table(vma, flags); if (!pmd_present(pmdval)) return no_page_table(vma, flags); if (pmd_devmap(pmdval)) { ptl = pmd_lock(mm, pmd); page = follow_devmap_pmd(vma, address, pmd, flags, &ctx->pgmap); spin_unlock(ptl); if (page) return page; }

      checks if pmd is there. im assuming it's page middle dir.

    16. void unpin_user_pages_dirty_lock(struct page **pages, unsigned long npages, bool make_dirty) { unsigned long i; struct folio *folio; unsigned int nr; if (!make_dirty) { unpin_user_pages(pages, npages); return; } sanity_check_pinned_pages(pages, npages); for (i = 0; i < npages; i += nr) { folio = gup_folio_next(pages, npages, i, &nr); /* * Checking PageDirty at this point may race with * clear_page_dirty_for_io(), but that's OK. Two key * cases: * * 1) This code sees the page as already dirty, so it * skips the call to set_page_dirty(). That could happen * because clear_page_dirty_for_io() called * page_mkclean(), followed by set_page_dirty(). * However, now the page is going to get written back, * which meets the original intention of setting it * dirty, so all is well: clear_page_dirty_for_io() goes * on to call TestClearPageDirty(), and write the page * back. * * 2) This code sees the page as clean, so it calls * set_page_dirty(). The page stays dirty, despite being * written back, so it gets written back again in the * next writeback cycle. This is harmless. */ if (!folio_test_dirty(folio)) { folio_lock(folio); folio_mark_dirty(folio); folio_unlock(folio); } gup_put_folio(folio, nr, FOLL_PIN); } }

      unpins and dirties page

    17. static inline struct folio *gup_folio_next(struct page **list, unsigned long npages, unsigned long i, unsigned int *ntails) { struct folio *folio = page_folio(list[i]); unsigned int nr; for (nr = i + 1; nr < npages; nr++) { if (page_folio(list[nr]) != folio) break; } *ntails = nr - i; return folio; }

      gets folio of next page along with reference to end of folio

    18. static inline struct folio *gup_folio_range_next(struct page *start, unsigned long npages, unsigned long i, unsigned int *ntails) { struct page *next = nth_page(start, i); struct folio *folio = page_folio(next); unsigned int nr = 1; if (folio_test_large(folio)) nr = min_t(unsigned int, npages - i, folio_nr_pages(folio) - folio_page_idx(folio, next)); *ntails = nr; return folio; }

      gets the folio of the next page from start to 'i' range. also gets the tail folio/reference

    19. folio_ref_add(folio, GUP_PIN_COUNTING_BIAS);

      function for adding reference

    20. void unpin_user_page(struct page *page) { sanity_check_pinned_pages(&page, 1); gup_put_folio(page_folio(page), 1, FOLL_PIN); } EXPORT_SYMBOL(unpin_user_page);

      actual policy use logic

    21. struct folio *folio = page_folio(page); if (WARN_ON_ONCE(folio_ref_count(folio) <= 0)) return -ENOMEM; if (unlikely(!(flags & FOLL_PCI_P2PDMA) && is_pci_p2pdma_page(page))) return -EREMOTEIO; if (flags & FOLL_GET) folio_ref_inc(folio);

      checks for code that is involved in policy but is not the actual logic

    22. else if (flags & FOLL_PIN) { /* * Don't take a pin on the zero page - it's not going anywhere * and it is used in a *lot* of places. */ if (is_zero_page(page)) return 0; /* * Similar to try_grab_folio(): be sure to *also* * increment the normal page refcount field at least once, * so that the page really is pinned. */ if (folio_test_large(folio)) { folio_ref_add(folio, 1); atomic_add(1, &folio->_pincount); } else { folio_ref_add(folio, GUP_PIN_COUNTING_BIAS); } node_stat_mod_folio(folio, NR_FOLL_PIN_ACQUIRED, 1); }

      Logic that actually tries to grab the folio. Also policy use code and not actual policy

    23. if (!put_devmap_managed_page_refs(&folio->page, refs)) folio_put_refs(folio, refs);

      Definitely a vital and straightforward policy use section of gup that simples places a reference on the folio

    24. if (flags & FOLL_PIN) { if (is_zero_folio(folio)) return; node_stat_mod_folio(folio, NR_FOLL_PIN_RELEASED, refs); if (folio_test_large(folio)) atomic_sub(refs, &folio->_pincount); else refs *= GUP_PIN_COUNTING_BIAS; }

      Checks if the folio is zero/large

    25. if (folio_test_large(folio)) atomic_add(refs, &folio->_pincount); else folio_ref_add(folio, refs * (GUP_PIN_COUNTING_BIAS - 1))

      maintaining reference counts. Part of policy logic most likely

    26. if (unlikely((flags & FOLL_LONGTERM) && !folio_is_longterm_pinnable(folio))) { if (!put_devmap_managed_page_refs(&folio->page, refs)) folio_put_refs(folio, refs); return NULL;

      checks for longterm folio pins.

    27. if (WARN_ON_ONCE((flags & (FOLL_GET | FOLL_PIN)) == 0)) return NULL; if (unlikely(!(flags & FOLL_PCI_P2PDMA) && is_pci_p2pdma_page(page))) return NULL;

      Time saving predictions(unlikely) and single time warning func(WARN_ON_ONCE) for flags. Not actual policy logic so low confidence.

    28. if (is_zero_page(page) || !folio_test_anon(folio)) continue; if (!folio_test_large(folio) || folio_test_hugetlb(folio))

      Sanity checks for pinned pages wouldn't classify as policy logic but common sense pre-checks for the actual policy. But I think it's worth tagging this to gain a sense of what is not policy code

    29. if (is_zero_page(page)) return page_folio(page); folio = try_get_folio(page, refs); if (!folio) return NULL;

      Just trying to check for zero pages and trying to retrieve folios. Unlikely policy logic

    1. the Mythic religions of like I'm going to kill you because my Mythic God has a different name from yours and that's that's the level of 2.0 like concrete operational like literally if the word is different I'll kill you that that is the level of the Sacred right

      for - the word "sacred" - sacred 2.0 - low level of the sacred

    1. People do not actually spend a lot of time browsing junk content,

      The vast majority of people browsing social media streams via the web are doing just this: spending a lot of time browsing junk content.

      While much of this "junk content" is for entertainment or some means of mental and/or emotional health, at root it becomes the opiate of the masses.

    1. “There are a lot of people who mistakenly think intelligibility is the standard. ‘Oh, you knew what I was saying.’ Well, that’s not the standard. That’s a really bottom-of-the-barrel standard,” he says. “People who are concerned with English usage usually want to have their words taken seriously, either as writers or as speakers. And if you don’t use the language very well, then it hard to have people take your ideas seriously. That’s just the reality.”
  3. Oct 2024
    1. 2023 haben Böden und Landpflanzen fast kein CO2 absorbiert. Dieser Kollaps der Landsenken vor allem durch Dürren und Waldbrände wurde in diesem Ausmaß kaum vorausgesehen, und es ist nicht klar, ob auf ihn eine Regeneration folgt. Er stellt Klimamodelle ebenso in Frage wie die meisten nationalen Pläne zum Erreichen von CO2-Neutralität, weil sie auf natürlichen Senken an Land beruhen. Es gibt Anzeichen dafür, dass die steigenden Temperaturen inzwischen auch die CO2-Aufnahmefähigkeit der Meere schwächen. Überblicksartikel mit Links zu Studien https://www.theguardian.com/environment/2024/oct/14/nature-carbon-sink-collapse-global-heating-models-emissions-targets-evidence-aoe

    1. Noch nie ist die CO2-Konzentration in der Atmosphäre so stark gestiegen wie im vergangenen Jahr, nämlich um 3,37 parts per million (PPM). Die Konzentration liegt jetzt bei 422 PPM. Vor allem die sehr geringe CO2-Aufnahme durch Ozean- und Landsenken hat diese Steigerung verursacht https://taz.de/Hiobsbotschaft-fuers-Klima/!6040258/

  4. Sep 2024
    1. for - search - google - results of interest returned for - DIY low cost aerogel insulation construction

      search - google - results of interest returned for - DIY low cost aerogel insulation construction - search - https://www.google.com/search?q=DIY+low+cost+aerogel+insulation+construction&sca_esv=bd7a621486b420d8&sca_upv=1&biw=1920&bih=911&sxsrf=ADLYWIJbLVcmfHCe3shwB0ftDpM-CmnC0g%3A1727597242320&ei=ugr5ZtWjE6aGkdUP2ZjqoA8&ved=0ahUKEwjV6MWf2eeIAxUmQ6QEHVmMGvQ4ChDh1QMIDw&uact=5&oq=DIY+low+cost+aerogel+insulation+construction&gs_lp=Egxnd3Mtd2l6LXNlcnAiLERJWSBsb3cgY29zdCBhZXJvZ2VsIGluc3VsYXRpb24gY29uc3RydWN0aW9uMggQABiABBiiBDIIEAAYgAQYogQyCBAAGIAEGKIEMggQABiABBiiBEi7QVAAWJo-cAB4AJABAJgBkAOgAY0RqgEFMy01LjG4AQPIAQD4AQGYAgOgAtwImAMAkgcFMy0yLjGgB9MM&sclient=gws-wiz-serp - search results of interest returned - ResearchGate (PDF) Low cost silica aerogel production - ResearchGate Our group developed an alternative route for the silica aerogel production using low cost silica precursors and ambient pressure drying technique. - https://www.researchgate.net/publication/283581307_Low_cost_silica_aerogel_production - This is a chemical technique - Fraunhofer-Gesellschaft Sustainable, affordable building insulation with aerogels A sustainable, affordable mineral-based insulation material that is far more effective than options such as polystyrene. - https://www.fraunhofer.de/en/press/research-news/2023/may-2023/sustainable-affordable-building-insulation-with-aerogels.html

  5. Aug 2024
    1. according to the Intergovernmental Panel on Climate Change’s (IPCC) 6th Assessment Report (AR6), US$384 billion has so far been spent on climate action in urban areas, representing just 10% of what is necessary to build low-carbon and climate-resilient cities.

      for - stats - planetary emergency - 2024 - still low investment in cities

      stats - planetary emergency - 2024 - still low investment in cities - IPCC 6th Assessment Report - US $384 billion invested globally in urban areas - This is 10% of what is necessary to build low-carbon and climate resilient cities

    1. here you see a company with three different departments depicted in blue red and green

      for - neuroscience - example - diverse and low density connections beats non-diverse and high connections

      neuroscience - example diverse and low density connections vs non-diverse high density connections - having access to many diverse perspectives is a key enabler of good problem-solving and innovation

  6. Jul 2024
    1. If the link you are trying to send is just some kind of harmless confirmation link (e.g. subscribe/unsubscribe from a newsletter), then at least use a form inside the web page to do the actual confirmation through a POST request (possibly also using a CSRF token), otherwise you will unequivocally end up with false positives.
    1. Confirmations are a little more difficult, as senders really do want to keep the transaction as low friction as possible. Adding a confirm button may result in people abandoning the confirmation process.
    1. I sort of take the easy way out and say well I know Earth history so maybe I'm 00:32:53 helping people by uh understanding the science of this stuff

      for - educator - polycrisis - individual action - levers - climate and earth history specialists help with education

      educator - earth climate history specialist can help with education about the past to help understand what we face in the present

      climate education - low impact due to - ignoring perspectival knowing - and salience landscapes - It may help to look at the problem of education through the lens of Michael Levin's multi-scale competency architecture - https://hyp.is/FFxzRL2nEe6ghzeLcJGM7A/www.ncbi.nlm.nih.gov/pmc/articles/PMC10167196/ - Applied to cognitive and cultural evolution within the lifetime of a single individual (human) - The salience landscape of an individual can vary depending on their educational and cultural background - There are multiple categories of concepts, each with their own degree of salience: - immediate phenomenological experience - high salience - second hand, linguistically communicated experience - moderate and dependent on source - scientific reported phenomena - moderate, high or low, dependent on source and cultural / educational background - second hand, linguistically communicated experience - low, moderate or high, dependent on source and cultural / educational background - A key observation is that humans are evolved to detect specific environmental cue but miss many others - The rate of cultural evolution is so rapid that our biologically adapted processes cannot adapt quickly enough to the rapid cultural changes, resulting in the experience of "hyperobjects" - https://jonudell.info/h/facet/?max=100&expanded=true&user=stopresetgo&exactTagSearch=true&any=+hyperobject - education that is done haphazardly and in an adhoc manner will fail to discriminate between this large variety of salience landscape, with the overall impact of low educational impact

    1. you can take these medications you can expose yourself to the risk of the medications 00:26:57 or or you can change the way you eat you can deal with the true underlying problem insulin resistance

      for - health - heart - root cause of heart disease - lifestyle choices - dietary choice

      health - heart - root causes of heart disease - lifestyle choices - dietary choice - root cause of insulin resistance is poor diet with too much sugar and carbs and other variables such as excessive alcohol - dietary changes can shift lipid particles to large, fluffy LD particles - high sugar and carbs is a main factor leading to insulin resistance

      to - Root cause of insulin resistance - interview with Robert Lustig - https://hyp.is/l14UvjzwEe-cUVPwiO6lIg/docdrop.org/video/WVFMyzQE-4w/

  7. Jun 2024
    1. here are so many loopholes in our current top AI Labs that we could literally have people who are infiltrating these companies and there's no way to even know what's going on because we don't have any true security 00:37:41 protocols and the problem is is that it's not being treated as seriously as it is

      for - key insight - low security at top AI labs - high risk of information theft ending up in wrong hands

    1. Overall, this alternate cri-teria of assessment (in relation to Rubin) is indeed tenable because,as Menand noted, by the mid-1960s “the whole high-low paradigm”would “end up in the dustbin of history,” replaced by a “culture ofsophisticated entertainment.”25

      This would seem to be refuted by the thesis of Poor White Trash in which there was still low brow entertainment which only intensified over time into the social media era.

  8. Apr 2024
  9. Feb 2024
    1. Résumé de la vidéo [00:00:00][^1^][1] - [00:48:00][^2^][2] :

      Cette vidéo est une conférence sur les low-tech, c'est-à-dire les technologies utiles, durables et accessibles, comme alternative à notre système de production et de consommation actuel. Elle présente les principes, les exemples et les enjeux des low-tech, ainsi que les recherches et les expérimentations menées par le Low-tech Lab et le Centre de sociologie de l'innovation.

      Points forts : + [00:00:00][^3^][3] Introduction du cycle "Agir en temps de crise" * Présentation des partenaires et du thème * Présentation des intervenants Quentin Mateus et Morgan Meyer + [00:02:31][^4^][4] Définition et exemples de low-tech * Trois piliers : utile, durable, accessible * Exemples : toilettes sèches, capteur air chaud, four solaire, etc. * Changement de rapport à la technologie et aux besoins + [00:10:46][^5^][5] Diffusion et capitalisation des savoirs low-tech * Encyclopédie participative en ligne avec des tutoriels open source * Réseau de communautés locales qui se forment et s'entraident * Enquêtes auprès d'acteurs professionnels qui utilisent ou proposent des low-tech + [00:18:04][^6^][6] Recherches et analyses sociologiques sur les low-tech * Intérêt croissant des chercheurs et des institutions pour le sujet * Exemples de travaux sur l'ergonomie, l'agriculture paysanne, la boulangerie au four solaire, etc. * Réflexion sur l'innovation, la technologie, la transition et la société + [00:36:46][^7^][7] Questions du public et conclusion * Réponses sur les jeunes générations, le niveau européen, le rôle de l'industrie, etc. * Perspectives d'avenir et de développement des low-tech * Remerciements et annonce de la prochaine séance

  10. Jan 2024
    1. Jochen Kopp, Jürgen Elsässer und noch ein paar andere verdienen sehr gut daran.

      wenn geld euer einziges "argument" ist dann...<br /> danke, dass ihr "uns" in allen anderen punkten "recht" gebt : )

      dass "big pharma" milliardenfach geld verdient an den chemischen waffen die sie produziert...?<br /> das ist wohl "nur whataboutism" und wer weisse kittel trägt und grinst, der muss gut sein, ne?<br /> wie war das, die grünen wollten cannabis legalisieren? oder hat "big pharma" doch "veto" gesagt?

      aber spoiler: ich bin einzelgänger, autonom, und alle gruppen und promis sind mir grundsätzlich suspekt.<br /> weil "traukeinempromi". weil in der öffentlichkeit gibts nur "controlled opposition".<br /> die wenigen echten radikalos die ich interessant finde, sitzen im knast oder bleiben leise...

      deswegen: ihr kämpft die ganze zeit nur gegen irgendwelche strohmänner (low hanging fruits)<br /> aber "echte gegner" sind schwer zu finden, auch auf den wohlfühl-"demos"...

      dass es hier im forum politische zensur gibt, das stört euch wohl auch nicht?<br /> ist ja nicht euere meinung die zensiert wird...<br /> mir egal, es gibt ja genug andere seiten wie annas-archive.org

      "was ist mit der realness? alle nur noch wellness..."

    1. The model of Spotify in particular - paid tier alongside a free tier with ads - seems like the simplest sustainable solution I see. Having paid features is the most obvious way to make money, but you want to enable adoption as much as you can. It's the same idea as companies dangling "free trial" in front of you at every turn - in a competitive environment, you want to remove barriers for users to try your product or service. This is essentially the idea of a "loss leader" for a grocery store, or any business really.
    1. Zusammenfassender Artikel über Studien zu Klimafolgen in der Antarktis und zu dafür relevanten Ereignissen. 2023 sind Entwicklungen sichtbar geworden, die erst für wesentlich später in diesem Jahrhundert erwartet worden waren. Der enorme und möglicherweise dauerhafte Verlust an Merreis ist dafür genauso relevant wie die zunehmende Instabilität des westantarktischen und möglicherweise inzwischen auch des ostantarktischen Eisschilds. https://www.theguardian.com/world/2023/dec/31/red-alert-in-antarctica-the-year-rapid-dramatic-change-hit-climate-scientists-like-a-punch-in-the-guts

  11. Dec 2023
    1. almost all wealthy countries now is dominated 00:13:37 by the car it's not about moving people it's about moving lumps of metal around with one person in them You' have to move away from that
      • for: inefficiencies - example - cars, low carbon futures - reduce cars
    1. Find a better bank
  12. Nov 2023
    1. Die englische Regierung hat in der letzten Oktoberwoche 27 Lizenzen zur Öl- und Gasförderung in der Nordsee vergeben. George Monbiot konfrontiert diese Entscheidung mit aktuellen Erkenntnissen zum sechsten Massenaussterben und dem drohenden Zusammenbruch lebensunterstützender Systeme des Planeten https://www.theguardian.com/commentisfree/2023/oct/31/flickering-earth-systems-warning-act-now-rishi-sunak-north-sea

    1. In der Repubblica stellt Jaime d'Alessandro fest, dass Italien dabei ist, den Kampf um ein neues Energiesystem und damit auch eine Erneuerung der Wirtschaft zu verlieren. Seit den 90ern befinde sich das Land im Stillstand. D'Alessandro beruft sich auf Studien zur besonderen Betroffenheit des Mittelmeerraums von der globalen Erhitzung und zur schon bald bevorstehenden Eisfreiheit der Arktis. https://www.repubblica.it/green-and-blue/2023/11/01/news/decarbonizzazione_greenblue_novembre-418935623/

      Studie zur eisfreien Arktis: https://www.nature.com/articles/s41467-023-38511-8

      Studie zur Erhitzung in Europa: doi:10.2760/93257

  13. Oct 2023
    1. so we take two uh things that whose size we know could be our thumbs it could be oranges could be poker chips and look at them have one twice as far away as the other first thing to think about is you know as far as our brain and our

      Poker chip example really well explained at the Reality Distortion Kit at the stanford lecture

  14. Sep 2023
      • for: futures - food production, futures - water production, desalination, ocean solar farm, floating solar farm, floating city
      • title: An interfacial solar evaporation enabled autonomous double-layered vertical floating solar sea farm
      • author: Pan Wu, Xuan We, Huimin Yu, Jingyuan Zhao, Yida Wang, Kewu Pi, Gary Owens, Haolan Xu
      • date: Oct. 1, 2023
      • source: https://www.sciencedirect.com/science/article/pii/S1385894723041839?via%3Dihub#f0005
      • comment
        • Since this simple design integrates fresh water and food production, it can be integrated as a module for a floating city.
      • for: velocar, low carbon transportation
      • Title: The Velomobile as a Vehicle for more Sustainable Transportation
  15. Aug 2023
    1. contacting your city council members running for office yourself donating to projects like black space and getting involved in zoning board meetings that could help change the density and makeup of the 00:20:08 communities where you live
      • for: zoning, city council, re-zoning, low carbon city, walkable city
  16. May 2023
      • Title: What a 1.5C lifestyle actually looks like
      • Summary
        • Many people want to participate in the transition
        • to a regenerative, low carbon future
          • but the existing high carbon infrastructure
          • makes it very challenging to do so
        • This article features interviews with activists who are trying to live a lifestyle
          • that is consistent with a 1.5C world
          • WITHIN infrastructure that is not yet consistent with a 1.5C world.
          • It is challenging, to say the least!
            • and demonstrates the lock-in feedbacks,
            • a chicken-and-egg situation
            • that creates the challenge holding the masses back
        • From a Stop Reset Go (SRG) perspective
          • this illustrates the entangled relationship between
            • the individual and
            • the collective
          • and how each has an important role to play
            • to influence the other.
          • As an organization working on helping accelerate a bottom-up movement, this brings up the question:
            • what are the leverage points for citizens to accelerate top down actors such as
              • government to establish new policies and
              • manufacturers to create affordable regenerative products aligned with a 1.5C world?
      • Interviewee:
        • Carys mainprize
        • Rosalind Readhead
  17. Jan 2023
    1. civilizations have risen and Fallen based on their ability to manage their 00:08:45 scarce Water Resources we are no different

      !- water boundary : technological assistance -low cost ocean water purification

    1. get control over psychological stress oh yeah why is this so important well the the main problem is you have 00:16:15 high levels of cortisol when you're stressed out psychologically and it it's clear that people who have high levels of really high levels of stress uh are chronically ill

      !- grateful list : low stress - stress increases cortisol which can age you

  18. Dec 2022
  19. Nov 2022
    1. Aram Saroyam and, I believe, Jackson Maclow produced something similar. MacLow's The Pronouns was super important to me back in grad school.

      reply to Bob Doto on https://www.reddit.com/r/antinet/comments/z3f8kb/comment/ixlocl7/?utm_source=reddit&utm_medium=web2x&context=3

      Do you have something particular on Saroyam for this? I found The Pronouns by Jackson Mac Low, but only tangential hits on Saroyam.

      Similar useful efforts, though not in as clear-cut card format are: * Project Zero's thinking routines: https://pz.harvard.edu/thinking-routines * Untools: https://untools.co/

  20. Oct 2022
    1. In the interest of reducing warranty claims (which are much more expensive than that incremental manufacturing cost) carmakers are sizing the whole unit to reliably accommodate the worst case draw (driver turns everything on at the same time, at idle).
  21. Sep 2022
  22. Aug 2022
    1. Citation: Kirkpatrick, Keith. The Road to 6G. Communications of the ACM, September 2022, Vol. 65 No. 9, Pages 14-16 10.1145/3546959

      Although it is early in the commercial rollout of 5G mobile networks, countries, companies and standards bodies are gearing up for what will be in the next version—so called “6G” mobile network. There are already experimental allocation of high frequency radio bands and testing that has occurred at about 100m distances. The high frequency will mean higher bandwidth, but over shorter distances. There are experiments to make passive graphene reflectors on common surfaces to help with propagation. What may come is a convergence of 6G with WiFi 6 to support connectivity from body-area networks to low earth orbit satellites.

  23. Jul 2022
    1. Thanks for your making your first contribution to Cucumber, and welcome to the Cucumber committers team! You can now push directly to this repo and all other repos under the cucumber organization! In return for this generous offer we hope you will: Continue to use branches and pull requests. When someone on the core team approves a pull request (yours or someone else's), you're welcome to merge it yourself. Commit to setting a good example by following and upholding our code of conduct in your interactions with other collaborators and users. Join the community Slack channel to meet the rest of the team and make yourself at home. Don't feel obliged to help, just do what you can if you have the time and the energy. Ask if you need anything. We're looking for feedback about how to make the project more welcoming, so please tell us!
  24. Jun 2022
    1. Energy efficiency has never been more crucial! The time to unleashing its massive potential has come

      Will this conference debate rebound effects of efficiency? If not, it will not have the desirable net effect.

      My linked In comments were:

      Alessandro Blasi, will this conference address the rebound effect? In particular, Brockway et al. have done a 2021 meta-analysis of 33 research papers on rebound effects of energy efficiency efforts and conclude:

      "...economy-wide rebound effects may erode more than half of the expected energy savings from improved energy efficiency. We also find that many of the mechanisms driving rebound effects are overlooked by integrated assessment and global energy models. We therefore conclude that global energy scenarios may underestimate the future rate of growth of global energy demand."

      https://www.sciencedirect.com/science/article/pii/S1364032121000769?via%3Dihub

      Unless psychological and sociological interventions are applied along with energy efficiency to mitigate rebound effects, you will likely and ironically lose huge efficiencies in the entire efficiency intervention itself.

      Also, as brought up by other commentators, there is a difference between efficiency and degrowth. Intelligent degrowth may work, especially applied to carbon intensive areas of the economy and can be offset by high growth in low carbon areas of the economy.

      Vaclav Smil is pessimistic about a green energy revolution replacing fossil fuels https://www.ft.com/content/71072c77-53b3-4efd-92ae-c92dc02f09ad, which opens up the door to serious consideration of degrowth, not just efficiency improvements. Perhaps the answer is in a combination of all of the above, including targeted degrowth.

      Technology moves quickly and unexpectedly. At the time of Smil's book release, there was no low carbon cement. Now there is a promising breakthrough: https://www.cnbc.com/2022/04/28/carbon-free-cement-breakthrough-dcvc-put-55-million-into-brimstone.html

      As researchers around the globe work feverishly to make low carbon breakthroughs, there is obviously no guarantee of when they will occur. In that case then, with only a few years to peak, it would seem the lowest risk pathway would be to prioritize the precautionary principle over a gambling pathway (such as relying on Negative Emissions Technology breakthroughs) and perhaps consider along with rebound effect conditioned efficiency improvements also include a strategy of at least trialing a temporary, intentional degrowth of high carbon industries / growth of low carbon industries.

  25. Apr 2022
    1. Julia Raifman. (2021, July 25). Policymakers are pointing fingers at “the unvaccinated” What if they gave them a hand instead? - Bring vax & food to workplaces, schools, homes -Fund local doctors, including pediatricians, to call patients & deliver vax—Learn from success of Indian Health Service approach [Tweet]. @JuliaRaifman. https://twitter.com/JuliaRaifman/status/1419288641885593604

  26. Mar 2022
    1. Capybara can get us part of the way there. It allows us to work with an API rather than manipulating the HTML directly, but what it provides isn't an application specific API. It gives us low-level API methods like find, fill_in, and click_button, but it doesn't provide us with high-level methods to do things like "sign in to the app" or "click the Dashboard item in the navigation bar".
  27. Feb 2022
  28. Jan 2022
  29. Dec 2021
    1. As described and developed by Riva and Wiederhold (2020) we suggest that the use of a low-cost spherical, video-based virtual reality mindfulness intervention could reduce the psychological burden of COVID-19 for autistic people, alongside a developed package of at-home educational and support materials to empower families/caregivers delivered via an online eLearning platform to support effective implementation.

      low-end approach, as we rally for it

  30. Nov 2021
    1. ReconfigBehSci. (2021, November 4). RT @DrTedros: We continue to hear excuses about why low-income countries have only received 0.4% of #COVID19 vaccines: 1. They can’t absorb… [Tweet]. @SciBeh. https://twitter.com/SciBeh/status/1456588731155165189

    1. Critical to historical and ongoing carbon lock-in has been the pervasive failure in industrial, modern societies to imagine desirable ways of living that are neither wedded to the carbon economy nor dependent on narratives of progress reliant on perpetual economic growth (see Section 4.1). This scarcity of plausible imaginaries underpins many of the factors discussed in this article and persists for a number of interconnected reasons.

      It is critical to create stories and narratives of what an ecologically regenerative society living within planetary boundaries looks like at a local level that we are familiar with. We need enliven and enact futures studies and backcast to our current reality.

      Imaginative storytelling by the artists is critical at this time so that we can imagine and not be so afraid of what a transformed future looks like. Indeed, if we do it right, it can be FAR BETTER than our current unbalanced civilization.

  31. Oct 2021
  32. Sep 2021
    1. Recent studies found when teachers gave trainee pharmacists frequent low-stakes questions with feedback, students performed better on tests and were more satisfied with the course.  

      references for this?

  33. Jul 2021
    1. Leah McElrath 🏳️‍🌈. (2021, July 12). One reason the right-wing outrage machine is focused on attacking Biden’s plan for door-to door outreach isn’t because they actually fear confiscation of guns or Bibles. It’s because they don’t want poor people to have access to life-saving vaccinations. Https://t.co/GnZMmlBfqK [Tweet]. @leahmcelrath. https://twitter.com/leahmcelrath/status/1414660179061264388

  34. Jun 2021
  35. May 2021
    1. select * from users

      We can preview the data, and since that looks good, let's add a table to the canvas to display it. When we do this, it helpful pre-fills the data from our last query.

  36. Apr 2021
    1. Game looks great, ignore the 1 score review. Disgruntle co worker, perhaps? Perhaps a jealous fellow pupil... When all ither reviews are 7 or more and there's one review with a 1 score and a novel saying just why they thinks... you know something's not quite right. Hopefully this will go some way to normalising the score.
    1. This game is severely underrated. I genuinely do not understand all of the negative backlash it gets. It's a solid scribblenauts game with a ton of replay value and a way to past the time with friends. It's not perfect, as the motion controls do drag it down slightly, and some of the minigames offered are less than great, however it does not deserve the overwhelming hate it gets. It's a solid title in the series.
    2. I truly TRULY do not get the hate of this game. I am in my 40's. Played with 2 boys, 10 and 12. And we all had an amazing time playing the board game version of this for an hour. When it was over, the boys said, LETS PLAY IT AGAIN! The game is deep. Also has original sandbox mode with new levels. When they were about to leave, I surprise them by giving them the game as a gift. They were SO excited (and, I will simply buy another one for myself) I am simply BAFFLED at the hate and negativity for this game. Sure, a couple of the mini-games are not top notch. But there are many great ones within. At $40, solid deal. At $20 sale in most places, you have got to be kidding me. Steal it at that price. If you like Scribblenauts or are new to the Scribblenauts world, just buy it.
    1. Unstoppable CrapsterThis is crap shovelwareRe-skinned exact same other 10 games this sad excuse for a developer been farting out.No sound, no gameplay, no nothing.Can't press two buttons at the same time like jump and move.Plays like sonic the hedgehog just had sex with painbrushWhile having a stroke, heart attack and anal prolapse at the same time.Don't support this developer.Steam get your sh!t together, start filtering out this crap.
    1. We are continuing an overhaul of our default startup editor in order to provide relevant extension-contributed tips and walkthroughs, intended to make both core VS Code features and extension contributions more approachable to new users.
  37. Mar 2021
    1. A Low Bar to Entry, and then What?There is an interesting tension between making something accessible and making it boring. Lowering the barrier of entry is a good thing, but if all you do is low-bar stuff, you end up losing the people again that you managed to attract. There needs to be a path forward beyond the entry level.
    1. This is yet another one of the sad, sad list of excellent games that Asmodee contracted someone to digitize for the least amount of money possible, and it shows. It's a pity, because they're excellent games, but if you don't have the patience for them, it's infuriating to go through all those hoops. Any user doing a QA session for 10 minutes would have told them most of these.
    1. Microlibraries are easier to understand, develop and test. They make it easier for new people to get involved and contribute. They reduce the distinction between a “core module” and a “plugin”, and increase the pace of development in D3 features.
    1. Personal loans are one of the costliest loans in the market with relatively high interest rates. Get easy low interest personal loans in Hyderabad with Loans Paradise. Apply now

  38. Feb 2021
    1. i dont know why everyone wants to **** on everything that is not a "AAA" game, its not in its perfect state, but far from deserve a 3, i will give it a 9 so it counters the "just hate
    1. But all of these attempts misunderstand why the Open Source ecosystem is successful as a whole. The ecosystem of fairly standard licenses provides a level playing field that allows collaboration with low friction, and produces massive value for everyone involved – both to those that contribute and to those that don't. It is not without problems (there are many essential but unsexy projects that are struggling with funding), but introducing more friction won't improve the success of this ecosystem – it will just lead to some parts of the ecosystem to break off.
  39. Jan 2021
  40. Dec 2020
    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.
  41. Nov 2020
  42. Oct 2020
    1. The unique Umami characteristic of Dried Shiitake is Guanylate. This Umami component is created during the drying and rehydrating process, and not available in Fresh Shiitake.

      Interesting. This makes it likely that shiitake extract is the type of mushroom used in mushroom seasoning or takii. Most products just say "mushroom powder" and "mushroom extract". Some products list "shiitake powder" and "mushroom extract". I can find no product listing the type of extract used.

      Edit: The linked table shows dried shiitake has the highest guanylate and glutamate of the listed mushrooms. Given that the website is about umami generally, this dramatically increases the odds that it is shiitake extract used in said products. It implies that dried shiitake may be the most umami mushroom (though no other dried mushroom is listed).

  43. Sep 2020
    1. Did you know that you can create a Svelte component and with almost no extra steps distribute- and use it like any classic old Javascript library through a global constructor (let myComponent = new MyComponent())?
    1. This happens because npm makes it ridiculously easy for people to release their half-baked experiments into the wild. The only barrier to entry is the difficulty of finding an unused package name. I’m all in favour of enabling creators, but npm lowers the barriers right to the floor, with predictable results.
    2. I offer an additional explanation: that we in the JavaScript world have a higher tolerance for nonsense and dreck.
  44. Aug 2020
    1. Hogan, A. B., Jewell, B. L., Sherrard-Smith, E., Vesga, J. F., Watson, O. J., Whittaker, C., Hamlet, A., Smith, J. A., Winskill, P., Verity, R., Baguelin, M., Lees, J. A., Whittles, L. K., Ainslie, K. E. C., Bhatt, S., Boonyasiri, A., Brazeau, N. F., Cattarino, L., Cooper, L. V., … Hallett, T. B. (2020). Potential impact of the COVID-19 pandemic on HIV, tuberculosis, and malaria in low-income and middle-income countries: A modelling study. The Lancet Global Health, 0(0). https://doi.org/10.1016/S2214-109X(20)30288-6

    1. Guo, L., Boocock, J., Tome, J. M., Chandrasekaran, S., Hilt, E. E., Zhang, Y., Sathe, L., Li, X., Luo, C., Kosuri, S., Shendure, J. A., Arboleda, V. A., Flint, J., Eskin, E., Garner, O. B., Yang, S., Bloom, J. S., Kruglyak, L., & Yin, Y. (2020). Rapid cost-effective viral genome sequencing by V-seq. BioRxiv, 2020.08.15.252510. https://doi.org/10.1101/2020.08.15.252510

    1. However, even moderate intake places women at higher risk for breast cancer and bone fractures

      This minimizes the chances that the benefits are due to abstainer bias. Nonetheless, I'm finding it hard to verify that there are benefits to low dose alcohol.

  45. Jul 2020