yak-layout.git
6 years agoCatch Control-C and write state to disk master
Greg Hurrell [Tue, 3 Nov 2015 20:20:39 +0000 (12:20 -0800)] 
Catch Control-C and write state to disk

Somewhat of a work in progress (doesn't actually work).

6 years agoAttempt fix at resource leak
Greg Hurrell [Tue, 3 Nov 2015 20:07:30 +0000 (12:07 -0800)] 
Attempt fix at resource leak

Running with a large value for `-r` we eventually run out of memory. I
first tried to fix this with a `clear()` call on the map, but that still
left some uncollected resources lying around. Reassigning the map so
that the whole thing can be GC'd is my second attempt; it seems to run
for longer in this case but still dies eventually. Next step will be to
do some actual profiling to see which objects are hanging around.

6 years agoRemove a now-extraneous comment
Greg Hurrell [Tue, 3 Nov 2015 20:07:07 +0000 (12:07 -0800)] 
Remove a now-extraneous comment

6 years agoSave state file to disk
Greg Hurrell [Sun, 1 Nov 2015 01:06:09 +0000 (01:06 +0000)] 
Save state file to disk

6 years agoRemove some verbose output
Greg Hurrell [Sun, 1 Nov 2015 00:59:01 +0000 (00:59 +0000)] 
Remove some verbose output

This was really just in there for debugging purposes.

6 years agoTweak pinkie finger weights
Greg Hurrell [Sun, 1 Nov 2015 00:55:24 +0000 (00:55 +0000)] 
Tweak pinkie finger weights

In theory, my pinkies aren't as weak as they used to be, so I can tweak
these numbers back up.

6 years agoAdd saved state notion to -r/--rounds
Greg Hurrell [Sat, 31 Oct 2015 20:42:09 +0000 (20:42 +0000)] 
Add saved state notion to -r/--rounds

Read saved state from disk. Haven't implemented writing yet because the
fitness scoring needs some tweaking. We're all over the map right now.

6 years agoAdd -r/--rounds option
Greg Hurrell [Sat, 31 Oct 2015 19:32:10 +0000 (19:32 +0000)] 
Add -r/--rounds option

Does not do much useful yet, other than looping to repeat the iteration
process.

6 years agoAdjust FINGERS_PLACEMENTS to reflect better habits
Greg Hurrell [Sat, 31 Oct 2015 19:17:01 +0000 (19:17 +0000)] 
Adjust FINGERS_PLACEMENTS to reflect better habits

Learned while mastering Colemak.

6 years agoFeel free to move "a" key
Greg Hurrell [Sat, 31 Oct 2015 19:08:30 +0000 (19:08 +0000)] 
Feel free to move "a" key

My tmux prefix is now space, so this one is free to move.

6 years agoAvoid JavaScript treachery
Greg Hurrell [Tue, 18 Aug 2015 07:30:34 +0000 (00:30 -0700)] 
Avoid JavaScript treachery

6 years agoFix a couple of (cosmetic) typos
Greg Hurrell [Mon, 17 Aug 2015 05:23:24 +0000 (22:23 -0700)] 
Fix a couple of (cosmetic) typos

6 years agoFix typo in README
Greg Hurrell [Mon, 17 Aug 2015 05:21:56 +0000 (22:21 -0700)] 
Fix typo in README

6 years agoBe slightly more reasonable about preferred io.js version
Greg Hurrell [Sun, 16 Aug 2015 05:40:59 +0000 (22:40 -0700)] 
Be slightly more reasonable about preferred io.js version

6 years agoDeclare preference for io.js
Greg Hurrell [Sat, 15 Aug 2015 23:45:24 +0000 (16:45 -0700)] 
Declare preference for io.js

6 years agoFix typo in README
Greg Hurrell [Thu, 13 Aug 2015 16:40:52 +0000 (09:40 -0700)] 
Fix typo in README

6 years agoPrepare for 0.0.3 release 0.0.3
Greg Hurrell [Thu, 13 Aug 2015 08:57:04 +0000 (01:57 -0700)] 
Prepare for 0.0.3 release

6 years agoPrepare for 0.0.2 release 0.0.2
Greg Hurrell [Thu, 13 Aug 2015 08:53:01 +0000 (01:53 -0700)] 
Prepare for 0.0.2 release

6 years agoSeriousify package.json prior to release 0.0.1
Greg Hurrell [Thu, 13 Aug 2015 08:32:18 +0000 (01:32 -0700)] 
Seriousify package.json prior to release

- Be less frivolous in the description.
- Specify dependencies more strictly.

6 years agoUpdate docs prior to initial release
Greg Hurrell [Thu, 13 Aug 2015 08:29:33 +0000 (01:29 -0700)] 
Update docs prior to initial release

6 years agoAdd example "extras/build-corpus.sh" script
Greg Hurrell [Thu, 13 Aug 2015 07:47:45 +0000 (00:47 -0700)] 
Add example "extras/build-corpus.sh" script

This is what I used to throw together my quick and dirty corpus:

  extras/build-corpus.sh > yak/corpus.txt

6 years agoGit: ignore yak directory in repo
Greg Hurrell [Thu, 13 Aug 2015 07:44:32 +0000 (00:44 -0700)] 
Git: ignore yak directory in repo

6 years agoBeef up command line argument handling
Greg Hurrell [Thu, 13 Aug 2015 07:37:49 +0000 (00:37 -0700)] 
Beef up command line argument handling

Take layouts as command line arguments.

6 years agoBail out if we get into a deadlock situation in evolve()
Greg Hurrell [Thu, 13 Aug 2015 07:09:05 +0000 (00:09 -0700)] 
Bail out if we get into a deadlock situation in evolve()

We'll continue iterating after this, so there is the possibility
of advancing, at least, and we won't go into an infinite loop.

6 years agoShow histograms
Greg Hurrell [Thu, 13 Aug 2015 07:05:52 +0000 (00:05 -0700)] 
Show histograms

6 years agoDon't sort some layout stats
Greg Hurrell [Thu, 13 Aug 2015 06:08:19 +0000 (23:08 -0700)] 
Don't sort some layout stats

These are small, fixed-size sets. The output is more readable if we keep
things in order.

As a follow-up, I intend to add percentage bars to these items.

6 years agoPrint row usage in "layout-stats"
Greg Hurrell [Thu, 13 Aug 2015 06:00:15 +0000 (23:00 -0700)] 
Print row usage in "layout-stats"

6 years agoFix comment typos
Greg Hurrell [Thu, 13 Aug 2015 06:00:00 +0000 (23:00 -0700)] 
Fix comment typos

6 years agoFix whitespace
Greg Hurrell [Thu, 13 Aug 2015 03:39:33 +0000 (20:39 -0700)] 
Fix whitespace

6 years agoReally remember best-seen fitness and layout
Greg Hurrell [Thu, 13 Aug 2015 03:16:16 +0000 (20:16 -0700)] 
Really remember best-seen fitness and layout

6 years agoTweak roll multiplier weights
Greg Hurrell [Thu, 13 Aug 2015 03:12:06 +0000 (20:12 -0700)] 
Tweak roll multiplier weights

Try to make Colemak more obviously favorable:

  getRollMultiplier: 0.6235
  getRowJumpMultiplier: 1.0352
  getSameFingerMultiplier: 1.0279
  getPositionMultiplier: 1.3047
  getFingerMultiplier: 0.5474

than Qwerty:

  getRollMultiplier: 0.7259
  getRowJumpMultiplier: 1.1045
  getSameFingerMultiplier: 1.0585
  getPositionMultiplier: 1.7837
  getFingerMultiplier: 0.5542

6 years agoShow "summary" stats for `layout-stats` subcommand
Greg Hurrell [Thu, 13 Aug 2015 03:07:17 +0000 (20:07 -0700)] 
Show "summary" stats for `layout-stats` subcommand

This is really a debugging tool, more than anything, to help me debug
the various weightings of the different effort multipliers. On the
sample corpus, I get this for Qwerty:

  getRollMultiplier: 0.8475
  getRowJumpMultiplier: 1.1045
  getSameFingerMultiplier: 1.0585
  getPositionMultiplier: 1.7837
  getFingerMultiplier: 0.5542

And this for Colemak:

  getRollMultiplier: 0.7920
  getRowJumpMultiplier: 1.0352
  getSameFingerMultiplier: 1.0279
  getPositionMultiplier: 1.3047
  getFingerMultiplier: 0.5474

Suggesting that the roll multiplier may be wrong (I would expect Colemak
to fare better), and the others may need some tweaking.

6 years agoShow time elapsed and potential deadlock warning in evolve()
Greg Hurrell [Thu, 13 Aug 2015 00:21:20 +0000 (17:21 -0700)] 
Show time elapsed and potential deadlock warning in evolve()

6 years agoStart to flesh out README
Greg Hurrell [Thu, 13 Aug 2015 00:20:32 +0000 (17:20 -0700)] 
Start to flesh out README

6 years agoPass missing param to anneal function
Greg Hurrell [Thu, 13 Aug 2015 00:19:57 +0000 (17:19 -0700)] 
Pass missing param to anneal function

Forgot to stage this in a prior commit.

6 years agoIncrease default iteration count to 10k
Greg Hurrell [Thu, 13 Aug 2015 00:15:21 +0000 (17:15 -0700)] 
Increase default iteration count to 10k

6 years agoLock down 'a', because of tmux
Greg Hurrell [Thu, 13 Aug 2015 00:12:42 +0000 (17:12 -0700)] 
Lock down 'a', because of tmux

6 years agoAdd masking support and fix ridiculous bug in validator code
Greg Hurrell [Wed, 12 Aug 2015 23:47:10 +0000 (16:47 -0700)] 
Add masking support and fix ridiculous bug in validator code

6 years agoAdd early draft of layout optimization
Greg Hurrell [Wed, 12 Aug 2015 23:14:01 +0000 (16:14 -0700)] 
Add early draft of layout optimization

This runs but doesn't really work properly yet (produces garbage
layouts), and there are plenty of TODOs still in my worktree, but I
wanted to get this in as a preview of where things are headed.

6 years agoFurther flesh out command-line interface
Greg Hurrell [Wed, 12 Aug 2015 08:42:05 +0000 (01:42 -0700)] 
Further flesh out command-line interface

This is my usual situation: so tired that I can't keep my eyes open.
It's entirely possible that this doesn't make any sense at all.

6 years agoAdd initial version of "optimize" subcommand
Greg Hurrell [Wed, 12 Aug 2015 08:24:06 +0000 (01:24 -0700)] 
Add initial version of "optimize" subcommand

Doesn't do any stochastic evolution yet, but we now have a fitness
function that we can run against successive generations.

6 years agoDon't include thumbs in left/right handle summary
Greg Hurrell [Wed, 12 Aug 2015 08:13:49 +0000 (01:13 -0700)] 
Don't include thumbs in left/right handle summary

This skews things because of the dominance of the right thumb (due to
hitting the space bar so much).

6 years agoRemove useless "distance" metric
Greg Hurrell [Wed, 12 Aug 2015 08:11:11 +0000 (01:11 -0700)] 
Remove useless "distance" metric

6 years agoShow total effort
Greg Hurrell [Wed, 12 Aug 2015 08:08:38 +0000 (01:08 -0700)] 
Show total effort

Now where are pretty close to having a decent overall fitness metric
that I can use as input into the genetic algorithm.

6 years agoAdd boosting for rolls
Greg Hurrell [Wed, 12 Aug 2015 08:02:29 +0000 (01:02 -0700)] 
Add boosting for rolls

6 years agoAdd row jump multiplier
Greg Hurrell [Wed, 12 Aug 2015 07:15:54 +0000 (00:15 -0700)] 
Add row jump multiplier

6 years agoBrown paper bag fix for same finger distance calculation
Greg Hurrell [Wed, 12 Aug 2015 06:58:29 +0000 (23:58 -0700)] 
Brown paper bag fix for same finger distance calculation

6 years agoAdd same-finger penalty logic
Greg Hurrell [Wed, 12 Aug 2015 06:54:30 +0000 (23:54 -0700)] 
Add same-finger penalty logic

6 years agoSilence spurious lint warnings
Greg Hurrell [Wed, 12 Aug 2015 06:53:06 +0000 (23:53 -0700)] 
Silence spurious lint warnings

6 years agoNormalize some distances
Greg Hurrell [Wed, 12 Aug 2015 06:02:32 +0000 (23:02 -0700)] 
Normalize some distances

To make the calculatons less horrifyingly imbalanced.

6 years agoStart fleshing out effort model
Greg Hurrell [Wed, 12 Aug 2015 05:47:03 +0000 (22:47 -0700)] 
Start fleshing out effort model

This is just a rough sketch with some known issues. Wanting to
commit it to give an idea of progress, though.

6 years agoAlso show stats for Colemak layout
Greg Hurrell [Tue, 11 Aug 2015 06:08:08 +0000 (23:08 -0700)] 
Also show stats for Colemak layout

6 years agoShow distance for layout stats
Greg Hurrell [Tue, 11 Aug 2015 05:42:45 +0000 (22:42 -0700)] 
Show distance for layout stats

6 years agoReport thumb (ie. space) in layout stats
Greg Hurrell [Mon, 10 Aug 2015 23:41:34 +0000 (16:41 -0700)] 
Report thumb (ie. space) in layout stats

6 years agoAdd initial version of layout stats command
Greg Hurrell [Mon, 10 Aug 2015 23:30:29 +0000 (16:30 -0700)] 
Add initial version of layout stats command

6 years agoSimplify bi/trigram accounting
Greg Hurrell [Mon, 10 Aug 2015 06:23:32 +0000 (23:23 -0700)] 
Simplify bi/trigram accounting

Ignore bi/trigram's containing whitespace. The rationale here is that
whitespace is a "reset", defining a word boundary which gives the
fingers time to return to their base position. This should make the
analysis simpler.

Likewise, ignoring case will make things simpler (ie "E" and "e" are
considered the same; we assume the opposite hand will take care of the
shifting (not necessarily a valid assumption, but definitely a
simplifying one).

6 years agoDisable test, for now
Greg Hurrell [Mon, 10 Aug 2015 05:53:04 +0000 (22:53 -0700)] 
Disable test, for now

At the moment, it fails noisily because we're trying to parse
a non-existent set of command-line args.

6 years agoDon't show <space> in top unigrams listing
Greg Hurrell [Mon, 10 Aug 2015 05:52:05 +0000 (22:52 -0700)] 
Don't show <space> in top unigrams listing

It's always the top unigram, and not a particularly interesting one.

6 years agoFilter out non-printable ASCII
Greg Hurrell [Mon, 10 Aug 2015 05:47:35 +0000 (22:47 -0700)] 
Filter out non-printable ASCII

There is a bunch of Unicode crap in the corpus that isn't useful.

6 years agoShow percentages and delimited numbers
Greg Hurrell [Mon, 10 Aug 2015 05:33:16 +0000 (22:33 -0700)] 
Show percentages and delimited numbers

To make the output more readable.

6 years agoPrint unigram, bigram, trigram stats
Greg Hurrell [Mon, 10 Aug 2015 05:11:57 +0000 (22:11 -0700)] 
Print unigram, bigram, trigram stats

6 years agoAdd more stats
Greg Hurrell [Mon, 10 Aug 2015 04:02:56 +0000 (21:02 -0700)] 
Add more stats

6 years agoPrint some corpus stats
Greg Hurrell [Mon, 10 Aug 2015 04:01:53 +0000 (21:01 -0700)] 
Print some corpus stats

6 years agoEnable a few more experimental ES7 features
Greg Hurrell [Mon, 10 Aug 2015 03:47:18 +0000 (20:47 -0700)] 
Enable a few more experimental ES7 features

6 years agoSet up corpus-stats subcommand
Greg Hurrell [Mon, 10 Aug 2015 03:43:01 +0000 (20:43 -0700)] 
Set up corpus-stats subcommand

6 years agoRead corpus file from $PWD/yak/corpus.txt
Greg Hurrell [Mon, 10 Aug 2015 03:34:05 +0000 (20:34 -0700)] 
Read corpus file from $PWD/yak/corpus.txt

6 years agoSet name and related fields in package.json
Greg Hurrell [Mon, 10 Aug 2015 03:19:27 +0000 (20:19 -0700)] 
Set name and related fields in package.json

6 years agoInitial commit
Greg Hurrell [Tue, 4 Aug 2015 18:40:54 +0000 (11:40 -0700)] 
Initial commit

Extracted from https://github.com/wincent/simple-debounce