profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/ethanjli/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Ethan Li ethanjli Stanford, CA http://ethanj.li Bioengineering PhD student at @prakashlab. Studying strategies & challenges for open-source medical devices for global health equity. (they/them)

ethanjli/dotfiles 16

Custom dotfiles and configs.

ethanjli/dye-transport-simulation 15

Fluid dynamics simulation of the transport of dye in milk with soap droplets.

deepakkrishnamurthy/gravitymachine-research 8

Scale-free Vertical Tracking Microscopy (a.k.a Gravity Machine) repo.

apienc/dfp-portal 1

The Dragon Fruit Project's digital portal.

deepakkrishnamurthy/gravitymachine-analysis-gui 1

Data analysis library for the gravity machine project

ethanjli/aapi-disaggregated-vis 1

Interactive data visualization of some disaggregated data on Asian Americans and Pacific Islanders

ethanjli/chariot-cameras 1

Server+clients for synchronized recording across multiple Raspberry Pi cameras

ethanjli/em-visualizer 1

A webapp to model electric and magnetic fields

issue closedsargassum-eco/latreutes

Join ZeroTier network by raw network ID

It should be possible to join a ZeroTier network by providing a raw network ID.

closed time in a day

ethanjli

push eventsargassum-eco/latreutes

Ethan Li

commit sha b5c9edceac7f24f9d2e2829aac9d5defd17d52fd

Provide a graphical interface to ZeroTier One for joining networks (#14) * Add loading & saving of local copy of authtoken.secret for ZeroTier One * Display raw info about the node status (#3) * Add missing useEffect deps * Add button to reload authtoken from file * Add proof-of-concept display of raw ZeroTier network and peer info * Join/leave network by ID (#4, #5); auto-refresh peers & networks lists * Use React Query for Tauri's async API (#9) * Add ESLint and prettier for auto-formatting and Github Actions checks * Use Chakra UI components for layout and styling (#8) * Improve layout, ialways keep the navbar visible * Add DNS hostname lookup functionality (#7) * Improve display of network information * Fix typography problems * Improve display of peer information * Improve nav menu behavior * Improve rendering of loading messages and network IDs * Display the networks hosted by each peer * Reduce tauri API bundle, improve information display * Move/add some information to the Home page * Add onboarding flow in the homepage * Show better error message if running in browser or if ZeroTierOne's down * Tighten the Content Security Policy * Validate the network join form inputs before submission * Don't do TXT lookup on ZeroTier network names which aren't FQDNs * Replace references to hostnames with references to domain names * Add button to disconnect from network if name is unexpected upon joining * Add placeholder icon for the applictaion * Make the content security policy work in the built binary * Improve tauri build CI workflows * Add command and button for copying the authtoken file on Linux * Enable aarch64 build * Make the config dir when buttons related to it are pressed * Fix issues with aarch64 build workflow * Make project descriptions more consistent

view details

push time in a day

PR merged sargassum-eco/latreutes

Provide a graphical interface to ZeroTier One for joining networks stage: dev type: feature

This PR provides an initial implementation for the Latreutes desktop application. Specifically, it:

  • Provides a first-iteration implementation for #1 based on the approach described in https://github.com/sargassum-eco/latreutes/issues/1#issuecomment-900153936 : the user must copy ZeroTier's authtoken.secret file into a directory accessible to Latreutes (e.g. on Linux it's at ~/.config/sargassum/latreutes), and then Latreutes will automatically load the ZeroTier One auth token from that copy of the file. This PR also provides a one-click way for the user to copy that file on Linux (specifically, any system which provides the pkexec command from PolicyKit), buried in a bunch of instructions; on macOS and Windows, the user still needs to manually copy the file.
  • Resolves #2 by displaying information about each network and peer inside accordions in an "entity info card" UI element per network/peer
  • Resolves #3 by displaying information about the node on the home screen, in an "info panel" UI element
  • Resolves #4 by providing a button to leave a network inside an accordion in the entity info card for the network
  • Resolves #5 and resolves #7 by providing a wizard sidepanel (with a modal interaction style) to join a network, with a non-default form option to join the network by its ZeroTier network ID, and with a default form option to join the network by its domain name (which causes a lookup at the domain name for a DNS TXT record of format zerotier-net-id=8056c2e21c000001.
  • Resolves #8 by using Chakra UI as a very flexible and easy-to-use UI components library.
  • Resolves #9 by using React Query to perform and cache HTTP API requests in a reasonably simple way.
  • Resolves #11 by defaulting to displaying the names of ZeroTier networks as their network ID in a monospace font (where the node address component is highlighted in pastel blue and the network number component is highlighted in pastel green) combined with their self-declared network name in the Atkinson Hyperlegible font (which helps disambiguate capital-i with lowercase-L and makes each character distinctly recognizable) in bold; this is not as usable, but it's what would get displayed for untrusted and non-Sargassum networks. When a network's self-declared name is domain name which has a TXT record pointing to the network's ZeroTier network ID (which is part of the specifications for Sargassum networks), then only that domain name is shown (in Atkinson Hyperlegible bold font), because it's confirmed to be a unique name - and this is a human-readable, actually usable name.

Additionally, it improves the Github Actions workfows by having build artifacts be attached to the job rather than having them try to be uploaded into a new tagged release; and it adds an automatic build for the aarch64 architecture (however, Debian and Ubuntu expect the arm64 architecture, which is equivalent except for the name; building for ARM64 on Ubuntu 18.04 should still be done manually; and the built binary does not work properly on Ubuntu 18.04 with the NVIDIA Jetson Nano).

+6008 -727

0 comment

55 changed files

ethanjli

pr closed time in a day

issue closedsargassum-eco/latreutes

Show more usable names for networks

We can standardize that ZeroTier networks should have their domain name as their network name; then, if the domain name has a TXT record matching the network name, we can display the network's domain name as "confirmed"/"corroborated" - so instead of displaying the long string as the network's name, we show its proposed name as its actual name (and in a different format than the network ID names, e.g. with a badge). For security we'd need the TXT record to be secured by DNSSEC (I believe deSEC does this). For a separate issue (implementing personal registries), perhaps the operator can assign their own petname to the network to have that be displayed as the network's name; but it'd be displayed differently from a DNS-based domain name.

It would also be nice to highlight the different parts of the network ID names in backgrounds of different colors, while still allowing them to be highlighted/selected and copied as a single unit.

closed time in a day

ethanjli

issue closedsargassum-eco/latreutes

Improve handling of server state

The approach for issuing HTTP requests and processing responses through Tauri's API in c1f6f676e3fe4308e936e1223527fe51f388c081 is a bit crude. For example, repeatedly issuing GET requests to the ZeroTier One service is hacked together with useEffect, and not in a robust way. We need a cleaner way of doing these requests.

closed time in a day

ethanjli

issue closedsargassum-eco/latreutes

Add a React components library

Right now it's barely possible to understand the information presented by the proof-of-concept, because we're not using any styling. We should choose a React UI components library suitable for writing desktop applications.

closed time in a day

ethanjli

issue closedsargassum-eco/latreutes

Leave ZeroTier network

It should be possible to use the application to leave a selected network.

closed time in a day

ethanjli

issue closedsargassum-eco/latreutes

Join ZeroTier network by entering hostname

The user should be able to type in a hostname (e.g. prakashlab.dedyn.io) to try to join a network, rather than having to type in the full network ID. In the future we'll default to having user-friendly domain names from registries instead of requiring typing a domain name, but this is enough for now as a proof-of-concept.

closed time in a day

ethanjli

issue closedsargassum-eco/latreutes

Display raw information about the node

As a proof-of-concept for using React in Tauri, we can make a tab for displaying the raw information provided by ZeroTier One's service about the node status (including node ID, onlineness, and whether we're on the slow TCP fallback).

closed time in a day

ethanjli

issue closedsargassum-eco/latreutes

Display raw information about connected networks and peers

As a proof-of-concept for using React in Tauri, we can make tabs for displaying the raw information provided by ZeroTier One's service about connected networks (including assigned IP addresses as copyable text, network ID, network name, and status) and peers (including address, paths, and role).

closed time in a day

ethanjli

startedsolidjs/solid

started time in 2 days

PullRequestReviewEvent

issue openedsargassum-eco/latreutes

Make Latreutes run properly on low-power ARM64 CPUs

Right now Latreutes takes significant CPU usage on ARM64 CPUs (used in e.g. the NVIDIA Jetson Nano), which is very undesirable. For example, idling on the home page causes 8 - 25% usage of a single CPU core, and idling on the Peers page causes 40 - 50% usage of a single CPU core - which is unacceptable. So React + Chakra UI is probably too heavyweight for these low-power CPUs. Should we consider Svelte + SvelteKit (perhaps with the Smelte UI framework?)?

Even worse, when Chakra UI tries to perform animations (e.g. opening an accordion or a drawer), the frontend completely freezes. I was able to confirm this by adding the "reduceMotion" param to Chakra UI's Accordion component, which fixes the freezing behavior when opening accordions; unfortunately, the drawer component doesn't have a similar "reduceMotion" parameter.

created time in 2 days

push eventsargassum-eco/latreutes

Ethan Li

commit sha c4fe77505e3ccd9e85067b0b4b7f3a52758a87cc

Make project descriptions more consistent

view details

push time in 2 days

PR opened sargassum-eco/latreutes

Provide a graphical interface to ZeroTier One for joining networks stage: dev type: feature

This PR provides an initial implementation for the Latreutes desktop application. Specifically, it:

  • Provides a first-iteration implementation for #1 based on the approach described in https://github.com/sargassum-eco/latreutes/issues/1#issuecomment-900153936 : the user must copy ZeroTier's authtoken.secret file into a directory accessible to Latreutes (e.g. on Linux it's at ~/.config/sargassum/latreutes), and then Latreutes will automatically load the ZeroTier One auth token from that copy of the file. This PR also provides a one-click way for the user to copy that file on Linux (specifically, any system which provides the pkexec command from PolicyKit), buried in a bunch of instructions; on macOS and Windows, the user still needs to manually copy the file.
  • Resolves #2 by displaying information about each network and peer inside accordions in an "entity info card" UI element per network/peer
  • Resolves #3 by displaying information about the node on the home screen, in an "info panel" UI element
  • Resolves #4 by providing a button to leave a network inside an accordion in the entity info card for the network
  • Resolves #5 and #6 by providing a wizard sidepanel (with a modal interaction style) to join a network, with a non-default form option to join the network by its ZeroTier network ID, and with a default form option to join the network by its domain name (which causes a lookup at the domain name for a DNS TXT record of format zerotier-net-id=8056c2e21c000001.
  • Resolves #8 by using Chakra UI as a very flexible and easy-to-use UI components library.
  • Resolves #9 by using React Query to perform and cache HTTP API requests in a reasonably simple way.
  • Resolves #11 by defaulting to displaying the names of ZeroTier networks as their network ID in a monospace font (where the node address component is highlighted in pastel blue and the network number component is highlighted in pastel green) combined with their self-declared network name in the Atkinson Hyperlegible font (which helps disambiguate capital-i with lowercase-L and makes each character distinctly recognizable) in bold; this is not as usable, but it's what would get displayed for untrusted and non-Sargassum networks. When a network's self-declared name is domain name which has a TXT record pointing to the network's ZeroTier network ID (which is part of the specifications for Sargassum networks), then only that domain name is shown (in Atkinson Hyperlegible bold font), because it's confirmed to be a unique name - and this is a human-readable, actually usable name.

Additionally, it improves the Github Actions workfows by having build artifacts be attached to the job rather than having them try to be uploaded into a new tagged release; and it adds a build for the aarch64/ARM64 architecture (for e.g. the NVIDIA Jetson Nano).

+6005 -724

0 comment

54 changed files

pr created time in 2 days

push eventsargassum-eco/latreutes

Ethan Li

commit sha 761ccd6da4cc2b962c04dd9994a59f558a36bedb

Fix issues with aarch64 build workflow

view details

push time in 2 days

PullRequestReviewEvent

pull request commentpez-globo/pufferfish-software

Restructure frontend files into feature folders

TODO: just a simple test to make sure everything works, and then approve

rohanpurohit

comment created time in 3 days

push eventsargassum-eco/latreutes

Ethan Li

commit sha 1c8a1e1b2c529bfc18d333041855ca01447c8a21

Fix issues with aarch64 build workflow

view details

push time in 3 days

push eventsargassum-eco/latreutes

Ethan Li

commit sha f792c4fb31a8b8d9419c00f29d57bd3aafdbd07c

Fix issues with aarch64 build workflow

view details

push time in 3 days

push eventsargassum-eco/latreutes

Ethan Li

commit sha 90b285a96c4e9cc126f11b8aeed33366d4dfc2c2

Fix issues with aarch64 build workflow

view details

push time in 3 days

push eventsargassum-eco/latreutes

Ethan Li

commit sha dbcf48375523902097afc6e77f604dd0f22c0c45

Fix issues with aarch64 build workflow

view details

push time in 4 days

push eventsargassum-eco/latreutes

Ethan Li

commit sha 3717d9af9cec5ead2ac05b207e6030dd5bee46c2

Fix issues with aarch64 build workflow

view details

push time in 4 days

push eventsargassum-eco/latreutes

Ethan Li

commit sha 396efd6fb52a068557b276ed0e2f84d94824704a

Fix issues with aarch64 build workflow

view details

push time in 4 days

push eventsargassum-eco/latreutes

Ethan Li

commit sha 4ddfb51f22deb0af9628870da392d2d0ff58eddd

Fix issues with aarch64 build workflow

view details

push time in 4 days

push eventsargassum-eco/latreutes

Ethan Li

commit sha 0f9068be2ea32ec00e1b7b9d65a37a160a976c54

Fix issues with aarch64 build workflow

view details

push time in 4 days

push eventsargassum-eco/latreutes

Ethan Li

commit sha 7e056133c31b2ac43b65c4fde7102178da2a0bc2

Fix issues with aarch64 build workflow

view details

push time in 4 days

push eventsargassum-eco/latreutes

Ethan Li

commit sha a245726f985ba3bf160cc20a55956ef4c5546c20

Fix issues with aarch64 build workflow

view details

push time in 4 days

push eventsargassum-eco/fluitans

Ethan Li

commit sha a092dc4d0573ccd35542e0a6c581049909633dc9

Update readme and license

view details

push time in 4 days

create barnchsargassum-eco/fluitans

branch : main

created branch time in 4 days