summaryrefslogtreecommitdiffstats
path: root/2021/talks/dashboard.md
blob: 53572fff5e1d6ecbc989e55079805901f25d2686 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
[[!meta title="Productivity Dashboards with Emacs and Kindle"]]
[[!meta copyright="Copyright © 2021 Mehmet Tekman"]]
[[!inline pages="internal(2021/info/dashboard-nav)" raw="yes"]]

<!-- You can manually edit this file to update the abstract, add links, etc. --->


# Productivity Dashboards with Emacs and Kindle
Mehmet Tekman



[[!inline pages="internal(2021/info/dashboard-schedule)" raw="yes"]]

[[!table header="no" class="speaker-details" data="""
Name pronunciation: | Meh-met Teck-man
Pronouns: | He/him
Preferred contact info: | @mtekman:matrix.org
Support: | <https://liberapay.com/mtekman/donate>
"""]]

<https://gitlab.com/mtekman/kindle-sync>

Since 2008, Amazon have released a new Kindle device every year,
supplanting each generation with a newer model that boasts highly
promoted incremental features which greatly devalues the price of
their older models. These forgotten models are sold on Ebay and
other secondhand websites at highly discount prices by owners who
do not see the true potential of these devices: Kindles are
excellent high contrast low-refresh display rate E-Ink devices,
with Wifi capability, that run embedded Linux in the
background. Depending on the model, an idle Kindle can last weeks
before needing a recharge. This makes them ideal as passive image
devices that can be configured easily using a few shell
scripts. Indeed, efforts have been made in dedicated hacker forums
to expose the Linux filesystem and to enable features such as
custom screensavers, SSH networking, and more. By exploiting these
features, and by carefully disabling the software/bloatware that
comes with the device, these Kindles have found new life as online
dashboard devices which can fetch and display information from the
internet at timely intervals.

Here we describe a tool to control multiple Kindle devices with a
single org-mode/shell-based tool, built initially to periodically
serve updated Emacs Org-Agenda views, but later expanded to produce
online local weather reports and work calendar, Emacs calendars
(calfw, org-gcal), daily dietary information (org-calories),
Org-Mode sparse TODO trees, miscellaneous image and text content
(via imagemagick), small messages, and much more.

In this talk, we show how to configure multiple Kindles with any
desired custom content, following any daily/weekly schedule, all
easily managed from Emacs within a single Org-Mode file.

# Discussion

- Q1: I know almost nothing about this stuff so please forgive my
    ignorance (Actually, I did I dip a toe into some basic jail
    breakage a few years ago and was delighted/intimidated to find a
    capable community on mobilereads, as you mentioned; I was living
    cheaply at the time, and having KUAL and KO and kterm around
    improved my QOL considerably.) As for your talk, I enjoyed it very
    much.  I was wondering if you'd given any thought to possible
    real-world applications for your dashboards. Just spitballing a
    bit, a few possibilities came to mind, like perhaps disseminating
    information on a work floor or lab setting where cable runs or
    temperature increases from LCD monitors might be unwelcome; or
    perhaps doing so in more a public setting like a refugee or
    detention camp where power might be limited and where mounting TVs
    behind protective glass or restraining them with cables might be
    bad for morale.  Also, have you thought about putting together
    and/or selling "kits" so folks with limited time could acquire a
    basic setup as a turnkey solution (perhaps with some assembly
    required)? Thanks.
- Hi. Lovely idea to use an ebook reader as dashboard. Are all kindle devices supported or only older ones?
- Mehmet Tekman: I recorded this in two parts: with caffeine, and without
- As soon as i can get my hands on a kindle i will give this a try. Lovely Idea.
- Are the images only pushed or can i request for an update from the kindel itself?
  - Mehmet Tekman: images are usually only pushed, but it's done over ssh so pulling is also possible. the main idea is that the interaction is only Server → Client
- Thanks for you talk I have just finished watching it on youtube.
- I have some old kobo's rather than kindle's but thinking of nipping onto ebay to get some
  - Mehmet Tekman: I think it would work well Kobo's, since that's likely also a linux system right?
  - yes they are linux
  - Mehmet Tekman: There are only a few kindle-specific commands, but you can comment them out and adapt them for the Kobo
  - there was some work getting kde onto them
  - Mehmet Tekman: Woah you have access to an X11 session?
  - i think the developers helped, but we are talking 7 years ago for the one they helped with
    - Mehmet Tekman: it's not mainline then?
   - I don't think so I still use them both for reading books so not messed with them just in case they break
     - Mehmet Tekman: That's the beauty of the kindle, it's from such a horrible company and it's so cheap that you have no qualms if you break it :P
  - Mehmet Tekman: The kindle basically locks you out of X, which is frustrating since the Kindle Touch runs AwesomeWM. If I had money, I would definitely buy one :O
- The use concept is really useful, so thanks for pointing me in the right direction.
- as someone who easily gets distracted it will be usefull to check on what I am supposed to be doing lol
  - Mehmet Tekman: Welcome! For a more stripped down version I can really heavily recommend the kindle-dashboard from Pascal Widdershoven
  - Mehmet Tekman: And yep -- I can definitely relate!

Links:

-   Main Repo : <https://gitlab.com/mtekman/kindle-sync>
-   Mobile Read Forum (Kindle) :
    <https://www.mobileread.com/forums/showthread.php?t=180113>
-   Mentioned Repos :
    -   <https://gitlab.com/mtekman/org-calories.el>
    -   <https://github.com/takaxp/org-tree-slide>
    -   <https://github.com/pascalw/kindle-dash>

# Outline

-   5-10 minutes:
    
    1-3 mins
          Talk about repurposing Kindles:
    
    -   Cheap second-hand wifi device, hackable
    -   Low-powered, long battery life, low refresh rate &#x2013; perfect
        for a dashboard
        -   Timely updated Org-Mode Agendas anyone?
    -   Reference to inspired projects (kindle-dashboard)
    
    2-3 mins
          Generate content
    
    -   A static text+picture image easily generated with imagemagick
        wrapper
    -   An image of a sparse tree of org-mode TODO file
    -   An image of another emacs view (e.g. Calfw, or org-calories)
    -   Show post-processing for optimizing image for Kindles
    
    1-2 mins
          Configuration in a single org-mode file
    
    -   Defining Machines
    -   Defining Commands to generate content
    -   Defining Schedules to run Commands on multiple Machines at
        specific points in the day
    
    1-2 mins
          Export and Run:
    
    -   Show exported shell configs and generated cronjobs
    -   Witness multiple Kindles producing desired content with wakeup
        timers

<!--
-   20 minutes:
    
    4 mins
          Repurposing Kindles
    
    -   Cheap second-hand wifi device, hackable
    -   Low-powered, long battery life, low refresh rate &#x2013; perfect
        for a dashboard!
    -   Reference to inspired projects (kindle-dashboard)
    -   Discuss Use Cases:
        -   Dynamic content: Org-Mode Agendas, Weather Reports, Web
            Calendars
        -   Static content: Gallery, Motivational Messages
        -   Untapped potential
    
    3 mins
          Generate content
    
    -   A static text+picture image easily generated with imagemagick
        wrapper
    -   An image of a sparse tree of org-mode TODO file
    -   An image of another emacs view (e.g. Calfw, or org-calories)
    -   Show post-processing for optimizing image for Kindles
    
    4 mins
          Configuration in a single org-mode file
    
    -   Defining Machines
    -   Defining Commands to generate content
        -   Types of commands
        -   Extending the commands with custom
    -   Defining Schedules to run Commands on multiple Machines at
        specific points in the day
    
    6 mins
          Export and Run:
    
    -   Show exported shell configs and generated cronjobs
    -   Scripts and Design Considerations:
        -   Killing services (to keep amazon out)
        -   Iptables blocking (to keep amazon out)
        -   What SSH keys are shared and where (to keep amazon out)
        -   How the Sleep and Wakeup timers work
        -   Optimizing for longer battery life
            -   Eips and X
            -   Minimizing service checks
            -   Graph of number of screen updates per drop in battery life
        -   View many Kindles simultaneously in action
    
    3 mins
          Final Thoughts
    
    -   Limitations:
        -   Cannot interrupt a device's sleep, it wakes up only when you
            last told it to
        -   Hard to see at night, invest in some LEDs maybe?
    -   Take back your devices!
    -   Name suggestions? "kindle-sync", "kindle-cluster",
        -   Something that won't be forced to change at a later date if
            it becomes too notorious.
    -   Planned features
    -   Acknowledgments and Resources

-   40 minutes: N/A
-->

[[!inline pages="internal(2021/captions/dashboard)" raw="yes"]]

[[!inline pages="internal(2021/info/dashboard-nav)" raw="yes"]]