reMarkable-tools
Tools for the reMarkable paper tablet that I or others develop.
Donate
Feel free to donate to me through paypal.me/pierrefenoll1
Make sure to describe what I should be working on :)
Whiteboard HyperCard ~ live collaboration/drawing/chat/whiteboarding
Easiest installation through toltec's opkg
opkg update && opkg install whiteboard-hypercard
Self-hosting whiteboard-server / hosting private rooms
On a machine with IP 1.2.3.4
reachable over the Internet, run:
git clone https://github.com/fenollp/reMarkable-tools.git && cd reMarkable-tools && make debug
Now on your tablet, run the whiteboard
Rust application with --host
, as in:
export WHITEBOARD_WEBHOST=http://1.2.3.4:10001/screenshare
.../whiteboard --host=http://1.2.3.4:10000
Finally, docker compose
should show you something akin to:
nats_1 | [1] 2020/11/03 14:26:24.435123 [DBG] 172.20.0.3:60308 - cid:1 - Client Ping Timer
nats_1 | [1] 2020/11/03 14:26:24.435145 [DBG] 172.20.0.3:60308 - cid:1 - Delaying PING due to remote ping 2s ago
nats_1 | [1] 2020/11/03 14:28:22.270230 [TRC] 172.20.0.3:60308 - cid:1 - <<- [PING]
nats_1 | [1] 2020/11/03 14:28:22.270306 [TRC] 172.20.0.3:60308 - cid:1 - ->> [PONG]
nats_1 | [1] 2020/11/03 14:28:24.435532 [DBG] 172.20.0.3:60308 - cid:1 - Client Ping Timer
nats_1 | [1] 2020/11/03 14:28:24.435701 [DBG] 172.20.0.3:60308 - cid:1 - Delaying PING due to remote ping 2s ago
wb | 2020-11-03T14:28:41.402Z INFO hypercard_whiteboard/rpc_recv_events.go:32 handling RecvEvent {"": "c91dd90e-77b8-477c-94f7-a25ff0e5b584"}
wb | 2020-11-03T14:28:41.402Z DEBUG hypercard_whiteboard/rpc_recv_events.go:46 listening for events {"": "c91dd90e-77b8-477c-94f7-a25ff0e5b584", "bk": "hc.wb.1.evt.living-room.*.*"}
wb | 2020-11-03T14:28:41.402Z DEBUG hypercard_whiteboard/nats.go:44 encoding {"": "c91dd90e-77b8-477c-94f7-a25ff0e5b584", "event": {"created_at":1604413721402953665,"by_user_id":"c91dd90e-77b8-477c-94f7-a25ff0e5b584","in_room_id":"living-room","Event":{"UserJoinedTheRoom":true}}}
wb | 2020-11-03T14:28:41.403Z DEBUG hypercard_whiteboard/nats.go:50 encoded {"": "c91dd90e-77b8-477c-94f7-a25ff0e5b584", "bytes": 63, "in": "160.551µs"}
wb | 2020-11-03T14:28:41.403Z DEBUG hypercard_whiteboard/nats.go:56 publishing {"": "c91dd90e-77b8-477c-94f7-a25ff0e5b584", "rk": "hc.wb.1.evt.living-room.c91dd90e-77b8-477c-94f7-a25ff0e5b584.userjoinedroom"}
wb | 2020-11-03T14:28:41.403Z DEBUG hypercard_whiteboard/nats.go:62 published {"": "c91dd90e-77b8-477c-94f7-a25ff0e5b584", "rk": "hc.wb.1.evt.living-room.c91dd90e-77b8-477c-94f7-a25ff0e5b584.userjoinedroom", "in": "6.926µs"}
nats_1 | [1] 2020/11/03 14:28:41.403146 [TRC] 172.20.0.3:60308 - cid:1 - <<- [SUB hc.wb.1.evt.living-room.*.* 1]
nats_1 | [1] 2020/11/03 14:28:41.403446 [TRC] 172.20.0.3:60308 - cid:1 - <<- [PUB hc.wb.1.evt.living-room.c91dd90e-77b8-477c-94f7-a25ff0e5b584.userjoinedroom 63]
nats_1 | [1] 2020/11/03 14:28:41.403472 [TRC] 172.20.0.3:60308 - cid:1 - <<- MSG_PAYLOAD: ["\b\xc1\x9f\xf1\x87\xf7\xb8\x81\xa2\x16\x12$c91dd90e-77b8-477c-94f7-a25ff0e5b584\x1a\vliving-room0\x01"]
nats_1 | [1] 2020/11/03 14:28:41.403491 [TRC] 172.20.0.3:60308 - cid:1 - ->> [MSG hc.wb.1.evt.living-room.c91dd90e-77b8-477c-94f7-a25ff0e5b584.userjoinedroom 1 63]
wb | 2020-11-03T14:28:41.404Z DEBUG hypercard_whiteboard/rpc_recv_events.go:100 sent count event {"": "c91dd90e-77b8-477c-94f7-a25ff0e5b584", "in": "73.035µs"}
koreader
- https://github.com/koreader/koreader/releases/latest
- instructions: https://github.com/koreader/koreader/wiki/Installation-on-Remarkable
- creates metadata files:
find ~ -name '*.sdr'
Tools
cbr2cbz.sh *.cbr
unrars then zips CBRs into CBZs sokoreader
can open them.rsync
on the tablet:- wget https://raw.githubusercontent.com/Evidlo/remarkable_entware/master/entware_install.sh && chmod +x entware_install.sh
- opkg install rsync
- And because
ssh remarkable 'echo $PATH' #=> /usr/bin:/bin
- ln -s
which rsync
/usr/bin/
Attention
~
Updates wipe root partition is small
remarkable: ~/ df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 223.0M 175.0M 32.3M 84% /
so routinely run
journalctl --vacuum-size=2M
HyperCards
Visible rectangular elements that can be drawn on/dragged/zoomed/rotated/connected/duplicated.
- tools / modifiers are square cards snapping to the edges of the screen
- henceforth mentioned as
[ToolX]
for tool X - using them / modifying them by a press held while using the pencil * similar to Minecraft's mix & match: action through combination
- a
[?]
tool always hangs in a corner, pressing = shows description text (like crosswords) - modification (reorganization / addition / removal) through drawing and pressing
- tools icons can be drawn too / loaded from a font / loaded from a builtin set of images
- pen & fingers are different devices for different purposes
- => drag/move and pinch/zoom (think Apple trackpad gestures) not a pen thing
- henceforth mentioned as
- whiteboard card
- rectangle that can be moved by dragging on the edges
- zoom/rotation by dragging in the area (not the edges)
- MIGHT: zooming hard moves to another user's view? --> canvas is a window/camera view that can move in 2+1D
- some bi-directional communication with a networked service
- user joins a room and shares their live drawings
- It is possible to combine a [Selection]-ed group of strokes and [Digitize] to ask service for translation
[Digitize]
- connects to a distant machine or achieves its AI inference on-tablet
- takes a few strokes in and outputs text+area / shape+area
[Selection]
- draw approximately on one or more strokes
- creates a group that can be used with other modifiers
- press another tool before unpressing this one to pass the group to the other tool
[Image]
- add an image to a layer
- should be able to dim that layer
- select the tool's image with
[Setter] > [Image]
--> opens image picker - image should be draggable + zoomable (= two-finger gesture on iOS Reddit app's image viewer)
- should be able to draw on top of said image
- add an image to a layer
marauder
-
datasets & models for online writting & drawings
- task: HTR = Handwriting Text Recognition
- https://quickdraw.withgoogle.com
- https://archive.ics.uci.edu/ml/datasets/UJI+Pen+Characters
- 19, TextCaps : Handwritten Character Recognition with Very Small Datasets
- 19, RNN-based Online Handwritten Character Recognition Using Accelerometer and Gyroscope Data
- https://www.gavo.t.u-tokyo.ac.jp/~qiao/database.html
- ICFHR: International Conference on Frontiers in Handwriting Recognition
- https://en.wikipedia.org/wiki/List_of_datasets_for_machine-learning_research#Handwriting_and_character_recognition
- https://mathpix.com/
-
https://billwadge.wordpress.com/2020/04/20/the-intensional-spreadsheet
-
DeepSVG: A Hierarchical Generative Network for Vector Graphics Animation
-
https://github.com/MarkMoHR/Awesome-Sketch-Based-Applications
-
Draw.io and Terraform = Brainboard, Graphical Way to Do Terraform
-
Handwrite generates a custom font based on your handwriting sample
-
21, Im2Vec: Synthesizing Vector Graphics without Vector Supervision
-
Show HN: Tool that turns your images into plotter-like line drawings
-
Turtle graphics is a key feature of the Logo programming language
-
A088218: Total number of leaves in all rooted ordered trees with n edges
-
remarkable chemist app: draw molecules on a hex grid so it renders 3d views
-
favorite browser-based creative arts tools/playthings that use AI or Machine Learning
-
devices
-
FEA in order to simulate physical phenomena in the VIRTUAL world
-
StyleNeRF: A Style-based 3D-Aware Generator for High-resolution Image Synthesis
-
λ-2D: An Exploration of Drawing as Programming Language, Featuring Ideas from Lambda Calculus
-
skastic: Visual programming language: SKetches of Abstract Syntax Trees. I. C.
-
https://github.com/MarkMoHR/Awesome-Sketch-Based-Applications
-
Simulate dynamic systems expressed in block diagram form using Python
-
General Virtual Sketching Framework for Vector Line Art (SIGGRAPH 2021)
-
Recognition of handwritten flowcharts using CNNs to generate C