📈
wiki
  • Introduction
  • Books
    • Technical books
      • Elements of Programming
    • Psychology books
      • Mindset
  • Computer Science
    • Data Structures
      • Skip Lists
    • Algorithms
      • Hashing
      • Eller's Algorithm
    • Formal verification
      • Coq
      • Lean
      • TLA+
    • Garbage Collection
  • Programming
    • Functional programming
      • Functional data structures
      • Algebraic Effects
      • Dependent Types
        • Agda
        • Idris
      • Continuations
      • Category Theory
      • Total functional programming
      • Uniqueness Typing
      • GADT
      • Tagless Final
    • Concurrent Programming
      • Mutex
      • Semaphores
    • Parallel Programming
    • Systems Programming
      • Tagged pointers
    • Unicode
  • Competitive Programming
  • Source control
    • Git
  • Programming languages
    • Java
      • Java Garbage Collection
      • Java Performance
      • Java Modules
      • Graal
      • Java libraries
        • Spring
          • Spring Cloud
        • Guava
        • JUnit 5
        • Hamcrest
        • Logging
        • Google Auto
        • Lombok
        • JOOQ
        • duct-tape
        • args4j
        • Netty
    • Scala
      • Dotty
      • Specialization
      • Benchmarking Scala
      • Scala libraries
        • ZIO
    • Haskell
      • Haskell tools
        • Haskell tools
    • Lisp
      • Lisp books
    • Rust
      • Rust Async
    • C++
      • C++ libraries
        • Boost
        • Poco
        • Abseil
        • facebook folly
        • Intell TBB
      • C++ tools
        • Valgrind
        • CMake
        • Bazel
      • C++ books
    • C
      • C libraries
      • C books
    • Python
      • Testing
      • Cython
      • Python performance
      • Python libraries
        • requests
        • httpx
        • boto3
      • Python tools
        • pyenv
        • Pipenv
        • mypy
      • Python Cookbook
    • Prolog
      • Prolog Cookbook
    • Clojure
      • Clojure Cookbook
    • Julia
      • Julia libraries
        • DataFrames
  • Networking
    • TCP
    • UDP
    • QUIC
  • Mindfullness
    • Mediatation
      • Samatha
      • Vipassana
    • Flow
  • LLVM
    • Clang tools
  • Operating systems
    • Securing operating systems
      • Capsicum
  • Linux
    • Packaging
    • RPM
    • Deblian
      • Linux tools
    • APT package manager
    • sxhkd
    • playerctl
    • fish
    • w3m browser
      • NixOS
    • Nix package manager
  • macOS
    • macOS tools
      • Hammerspoon
  • Windows
    • Windows tools
      • AutoHotkey
  • CLI
    • tmux
    • screen
    • ripgrep
    • fd
    • bat
    • tldr
    • install
    • chflags
  • Technology
    • Search
      • Google
      • DuckDuckGo
      • Algolia
      • Elastic search
  • Databases
    • MySQL
    • PostgreSQL
    • Oracle
  • Text editors
    • Emacs
      • Emacs plugins
      • Org mode
    • Vim
      • Vim plugins
      • Text objects
    • Sublime Text
  • IDEs
    • IntelliJ IDEA
      • IDEA plugins
        • IdeaVim
  • Philosophy
    • Stoicism
      • Parallels with Buddhism
    • Buddhist philosophy
  • Learning
    • Spaced Repetition
      • Anki
  • History
    • People
      • Benjamin Franklin
  • Buddhism
    • Theravada
      • Dhammapada
      • Eight Worldly Concerns
    • Mahayana
      • Zen
        • Zen Koans
  • Psychology
    • CBT
    • Cognitive biases
  • Logic
    • Classical logic
    • Intuitionistic logic
    • Logical fallacies
  • Literature
    • Western literature
    • Oriental literature
      • Bhagavad Gita
    • Mythology
    • Aphorisms
  • Research
    • Problem solving
    • Questioning
    • Blogs
  • Papers
    • Computer Science
      • Higher-order logic programming in Prolog
      • The Rise of Worse is Better
      • Advantages and Disadvantages of a Monolithic Repository
      • Coccinelle
      • Total Functional Programming
      • Scalable Component Abstractions
    • Psychology
    • Literature
      • Euclid and Pāṇini
  • Courses
    • Computer Science
  • Devops
    • Ansible
    • Puppet
    • TerraForm
  • Life
    • Happiness
    • Journaling
  • Meetups
    • Rust Meetups
      • LDN Talks January, 2020
    • Scala Meetups
      • Scala in the City - January, 2020
    • Papers We Love
      • CREST/PWL Special Event - January, 2020
  • Sports
    • Running
      • Running books
      • Running shoes
    • Chess
      • Chess openings
    • Hiking
      • Outdooraholics
        • Box Hill, Surrey
  • Music
    • Classical
      • Western classical music
      • Indian classical music
    • Popular music
    • Sinhala music
    • Indian music
  • Podcasts
  • Movies
  • TV Series
  • Log
    • 2019 logs
      • September
      • October
      • November
      • December
    • 2020 logs
      • January logs
      • February logs
      • March logs
      • April logs
      • May logs
      • June logs
  • TIL
    • TIL in 2020
      • January
      • February
      • March
      • April
      • May
      • June
      • October
      • November
Powered by GitBook
On this page
  • Chris Whealy on Pororus_Absorber
  • Andrius Aucinas on Brave adblock improvements with Rust
  1. Meetups
  2. Rust Meetups

LDN Talks January, 2020

PreviousRust MeetupsNextScala Meetups

Last updated 5 years ago

Chris Whealy on Pororus_Absorber

  • Speaker -

    • He is a drummer and home practice is what motivated him to build an acoustic environment

  • Project -

    • App is designed to assist acousticians when designing environments such as home cinemas

    • It calculates the acoustic absorption curve of a variety of absorption devices mounted against a rigid backing such as a brick wall

    • This is a Rust-WASM project which is a port of an Excel sheet he wrote about 15 years ago using VBScript!

  • This was his first Rust WASM project and due to that it took about three months for this project.

  • Maths for acoustic calculations were not new to him and they were basically ports from Excel to Rust.

  • If done again, he mentioned that he would be able to do the project in a couple of weeks now.

  • Some design decisions, such as using JavaScript for event handling could be revisited if reimplemented from scratch.

    • Since WASM allows capturing the DOM at the start, even handling can be done completely within Rust-WASM.

    • For some functions he is passing simply JSObjects, which can stand for anything - this is something he found that he preferred from experience given that obscure error messages one gets if type conversions fail w.r.t. more specific parameters.

Andrius Aucinas on Brave adblock improvements with Rust

  • is a performance researcher at Brave and was previously the Head of Engineering at HAT (Hub of All Things), which he co-founded.

  • Andrius' Twitter -

  • Project -

  • He is part of the team responsible for porting Brave Browser's AdBlock engine over from C++ to Rust, he'll be sharing some insights and experiences of that development process.

  • Pointers from the talk

    • Used Apple Instruments for profiling

    • Algorithmic improvements were far more important than the optimisation potential of Rust vs C++

    • Blocking alogorithm is now close to uBlock's implementation

    • Brave does uBlock like filtering but also some fingerprinting protectoin which uBlock cannot do since it is not as integrated to the core

    • Brave and other vendors fund the Easylist maintainer which is an open source collaborative effort

    • Thanks to really optimised libraries (which does use unsafe for performance reasons) this new code did not have to use unsafe

      • Rust unsafe code can be disabled by setting following macro - ,

        #![forbid(unsafe_code)]
    • One of the surprising speedups was using ASCII for string processing, instead of UTF when it was possible to. This is something I have also observed even in Java code. It is a known optimisation in , for example, to use Ascii internally, when possible.

    • Even though not used by this specific code, SMID optimisations used by the libraries make a huge difference.

Chris Whealy
https://twitter.com/LogaRhythm
Pororus_Absorber
Andrius Aucinas
https://twitter.com/AndriusAuc
https://github.com/brave/adblock-rust
https://doc.rust-lang.org/nomicon/safe-unsafe-meaning.html
InternetDomainName