happy hacking emily lisp server

By Xah Lee. Date: . Last updated: .

Emily's Work Station

Battle station and other interesting things and technology from my friend Emily E.

hhkb emily desktop phj86-s1467x825
4032×2268 Trackball is Kensington Expert Mouse
hhkb emily desktop 2021-05-21 7ntQT-s1100
hhkb emily desktop 2021-05-21. Middle bottom display is Cisco Webex DX80. Trackball is Elecom HUGE Trackball 4032×2268
hhkb emily setup g7fd5-s1100
4032×3024

So on the workstation (left) I run Firefox and terminal and stuff - this is the machine that has all my monitors and keyboards plugged into. On the server (right) I run my Emacs server. I then forward X over ssh to run Emacs on my machine with all the screens. This way Firefox doesn't take up cpu and ram and I can restart it is something goes funky without losing my Emacs sessions. And finally I have the UCS supercomputer that I use tramp with to remotely edit files on.

So I interact with Emacs on one machine, run it on a seperate one, and edit files on a third

—emily, 2019-11-05

emily spectrum analyser 4b9b6-s1333x750
4032×2268 “spectrum analyser for my radio stuff”

Happy Hacking Keyboard with Custom Firmware

hhkb emily 4p8fz-s1333x750
emily hhkb, with custom keycaps, custom layout, and custom firmware. 4032×2268

I've programmed the hhkb with my own keyboard layout that I've been evolving over the past few years. And on the filco I have it send f13-f24 keys.. I have 3 screens, and 3 desktops on each consisting of emacs, Firefox and terminal. So I have a 3x3 section dedicated to switching monitor focus and changing the desktop. So pressing '1' will switch to Emacs running on my left monitor. I then have keys for full screen, kill etc...

emily keyboard layout fxh5y
Emily keyboard layout

Note that she is using a modified version of Colemak MOD DH layout , with a custom added middle column. 〔see Ergonomic Keyboard Layouts

Emily Keyboard Layout History

Emily_Keyboard_Development_history_2019-11-06_hpxsp.pdf

Hasu Controller for HHKB

https://geekhack.org/index.php?topic=12047.0

Hasu USB to USB Converter

This allows you to program any USB device.

hasu USB to USB converter 8fsx9-s675x1200
hasu USB to USB converter 2268×4032 “It allows me to run qmk/tmk firmware on them. So I have my own layouts and stuff etc. ”

hasu USB to USB converter https://www.1upkeyboards.com/shop/controllers/usb-to-usb-converter/

96 CPU Core Server

hhkb emily htop 96 cpu pk2ws-s1067x600
4032×2268

Steel Bank Common Lisp in Emacs

hhkb emily sbcl lisp d5dt9-s1138x712
3360×2100

The line at upper right half is her emacs mode line. and she has interesting clock system:

in my mode-line i have:

  • file save status
  • buffer name
  • place in file%
  • (line and character number)
  • standard time
  • EmilyStandardTime
  • [EmilyStandardTime but compressed to base 36]
  • EmilyStandardTime visual representation

Compiler Dragon Book

hhkb emily compiler dragon book 7vh74-s1067x600
4032×2268

Emily Senary Watch

She likes 6 based numbering system, and uses that as her clock. She programed her watch to use 6 based numbering system.

emily heximal watch 2019-11-17 g94fc
emily senary watch 2019-11-17
** time system (Emily Standard Time)
   base 6
   standard: day -> 24d hours -> 60d minutes -> 60d seconds
   EST: day -> 100 pent -> 100 tri -> 100 mon
   pent =~= hour
   tri =~= minute
   mon =~= second
*** divisibility
    24d -> 60d -> 60d is uneven
    100 -> 100 -> 100 is consistent
    therefor
    44 pent = 4400 tri = 440000 mon
*** covert/compare
    1 pent = 40d minutes
    1 tri = 1.(1)d minutes
    1 mon = 1.85d seconds
*** segments
    inital digit of time = segment of day
    0 = sleep
    1 = free
    2 = work
    3 = work
    4 = free
    5 = sleep
* senary
  : nd = decimal . n = senary . 10d = 14 ;
  a base 6 number system
  I use for personal calculations and timekeeping
** number system
   0 1 2 3 4 5
   10 11 12 13 14 15
   20...
*** divisibility
    decimal: 2 5 10
    senary: 2 3 6
*** fraction table
    senary is more often simpler
    | fraction |     decimal | senary |
    |----------+-------------+--------|
    | 1/2      |        0.5d |    0.3 |
    | 1/3      |      0.(3)d |    0.2 |
    | 1/4      |       0.25d |   0.13 |
    | 1/5      |        0.2d |  0.(1) |
    | 1/6      |     0.1(6)d |    0.1 |
    | 1/7      | 0.1(42857)d | 0.(05) |
    | 1/8      |      0.125d |  0.043 |
    | 1/9      |      0.(1)d |   0.04 |
    | 1/10     |        0.1d | 0.0(3) |
    |          |             |        |
*** nomenclature
    - base numbers are the same with 0 = nil
      0 = nil
      1 = one
      2 = two
      3 = three
      4 = four
      5 = five
    - place names are based on the initial sylable of the polygon shapes
      nxn = mon
      nxnn = di
      nxnnn = tri
      nxnnnn = tet
      nxnnnnn = pent
      nxnnnnnn = hex
      nxnnnnnnn = hept
      nxnnnnnnnn = oct
      nxnNNNNNNNN = NON
      NXNNNNNNNNNN = DEC
      NXNNNNNNNNNNN = HEN
      NXNNNNNNNNNNNN = DODE
      NXNNNNNNNNNNNNN = TRID
      ...
      12 = ONE MON TWO
      123 = ONE DI TWO MON THREE
      1234 = ONE TRI TWO TRI THREE MON FOUR
      12345 = ONE QUAD TWO TRI THREE DI FOUR MON FIVE
*** DI-COMPRESSION
    2 SENARY CHARS -> 1 DI-CHAR

    012345
    +------
    00|012345
    10|6789AB
    20|CDEFGH
    30|IJKLMN
    40|OPQRST
    50|UVWXYZ

    34 = m

Here's the full org file, including emacs lisp code emily_heximal_watch_notes_3j5bv.org

Emscript

Emily also devised her own writing system, called emscript.

emscript alphabet 2019-11-17 z5pps
emscript alphabet 2019-11-17

Font for emscript: emscript-mid-regular.otf

emily emscript handwriting 2019-11-17 6vq7b
emily emscript handwriting 2019-11-17
* EmScript - an efficient, regular writing system
** Design goals:
   - efficient to read
     - continuous forward hand movement
       - this means no loops that require the hand to swap direction of movement
       - will ensure the fastest transfer from mind to paper
     - simple, regular shapes
       - all shapes are based off a pattern to create a simple set of glyphs that can be easily constructed and read
   - efficient to write
     - simple, regular shapes
       - all of the shapes can be interperated by pattern recognition such that a word becomes its shape instead of its collection of characters

** Glyph structure:
   each glyph consists of 2 (or 3 for some cases) straight lines arranged aligning to a 3x3 grid.
   Imagine you have a 3x3 grid, this will have 3 colulmns of 3 dots each
   each glph is a line connecting a dot in the first column, to a dot in the second, to a dot in the third
   these dots are not actually written or draw, but are still connected like so:

   #+BEGIN_SRC text
     . . .
     .\._.
     . . .
   #+END_SRC

   the glyph are always drawn from left to right, with the hand constantly moving and the fingers creating the dips and rises

   Due to this structure there are therefor 3x3x3=27 different and distinct 2-line glyphs, here are some examples:

   #+BEGIN_SRC text
     . . .
     .\._.
     . . .

     ._. .
     . .\.
     . . .

     .  .  .
     .  . /.
     .__./ .
   #+END_SRC
   (note the larger spacing for the last example is just to enable it to be shown with text, they are all the same size)

   in addition to this set of 2-line glyphs, there is also a collection of 3-line glyphs
   These 3 line glyphs are similar, but they have a vertical line down the middle, connecting all 3 dots in the second colulmn
   This means that there are only 18 combinations, as the second column has to start at either the top and end at the bottom, or vice versa
   for example:

   #+BEGIN_SRC text
     ._. .
     . | .
     . |/.

     . . .
     ./| .
     . |_.

     .  .  .
     .  |\ .
     .__| \.
   #+END_SRC

   Due to being in sets of 3, these 3-line glyph varients are considered usefull for numbers, especially due to their construction
   they can mathematically represent the value
   This works best for number systems that have a base of a multiple of 3, such as base 6

** Writing
   EmScript is written over the lines on a page as they server a useful guide as to where the dots are located
   any line starting from the line will be from the middle dot
   any line starting from below them line will be from the bottom dot
   any line starting from above the line will be from the top dot

   this allows for some inaccuracy as the height of the upper dots do not need to match, they just need to be above the line

   additionally, two consecutive characters that have a common ending and starting point are written in a continuous stroke with the pen staying on the paper

** mapping to english
   To map EmScript to english there is a 1-to-1 mapping from english letters to EmScript glyphs
   punctuation remains english however as there is no support for them in EmScript
   Capital letters are just written in bold by pressing the pen down harder

   The challenge in mapping these glyphs to english characters arises in creating a mapping that has the most flow
   that is to say that common digrams of the english language should use glyphs that can written continiously
   thereis the first glyph ends where the first begins

   to create this mapping I wrote a program in lisp that I let run for a week on my server to find the optimal mapping
   The final result was then verified by consecutive runs with 90% of the total runs performed finding the same, best result
   the remtaining 10% could only find a worse scoring mapping

   This mapping can be seen in the image

   The numbers are fitted mathematically with their glyph
   you can think of the first line starting on the multiple of 3 and the third line starting on the multiple of 1
   these values are 0 at the top and 2 at the bottom
   so, for example - the number 5 consits of 1 lot of 3 and 2 lots of 1's
   so it starts on the middle in the first line and ends on the bottom of the second line like so:

   #+BEGIN_SRC text
     2  . . .  2
     1  ./| .  1
     0  . |_.  0
     3's       1'2
   #+END_SRC

Other Emily E Stuff

Nerd Battle Stations