6512ae3d5699

Update
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Tue, 09 Jan 2024 09:44:08 -0500
parents 8dc74e9a5f3b
children c0d98c30905b
branches/tags (none)
files 2023.markdown README.markdown

Changes

--- a/2023.markdown	Thu Dec 14 11:16:20 2023 -0500
+++ b/2023.markdown	Tue Jan 09 09:44:08 2024 -0500
@@ -2487,3 +2487,556 @@
 
 Made BS521 note sheet for the exam Thursday.
 
+# November 2023
+
+## 2023-11-01
+
+HG545 discussion section.
+
+Made a little tornado plots demo with `p5.js` to be able to poke around and
+confirm a couple of things:
+
+* When you have two pause sites symmetric about an origin, there is *no* shift,
+  but the coverage massively changes there.
+* If you decrease the rate of both forks, you don't get a long skinny tornado,
+  you get a shorter normal-looking one with higher coverage.
+
+SAA Wednesday dance.
+
+Got nerd sniped by Kate into adding calculation of the read counts to the
+tornado plots instead of just abstracting that as a parameter itself and jesus,
+that was a rabbit hole I didn't expect.  Most of it was easy — the dependence on
+cell population and synthesis time was trivial, and undercutting was simple to
+kludge in.
+
+The problem was the last parameter in the equation: the firing rate of origins.
+How do you even define this?  I came up with two options:
+
+* Half-life based exponential firing, e.g. "after 5 seconds, the origin will
+  have fired in half the cells".
+* Per-cell linear rates, e.g. "this origin has a 5% chance of firing every
+  second".
+
+Looking at the results, I'm now more confused than ever — I'm not even sure the
+second model is actually different from the first when applied to a population
+of origins that can only fire once.
+
+As I was implementing this, I initially started with proportion-based
+computations, e.g. for a given timestep, how many of the remaining origins
+fired?  But this immediately causes issues in the data if the timesteps are big:
+in reality no two origins *ever* fire simultaneously, so this method produces
+bands that wouldn't be there in reality when the timesteps are large.
+
+So the obvious solution is to just shrink the timesteps, and that does help at
+first, but it begins to break down in another way when the steps shrink small
+enough. It helps to think about what the ideal timestep size should be: small
+enough most individual firings are in separate timesteps instead of simultaneous
+ones.  But when the time is small enough for this to happen at the beginning
+(when firing is high), that means that later in the process you end up computing
+things like "0.01 cells should fire" in a given step.  But you have to choose
+some rounding method to turn that into an integer number of firings, and all of
+them will fuck you:
+
+* `round` and `floor` will always result in `0`, so your remaining population
+  will never ever fire.
+* `ceiling` will always fire at least one cell, which results in wildly-too-high
+  rates near the end.
+
+So eventually I realized this and did the ugly thing that should actually work:
+turned the proportion into a probability and checked `random() < p` for every
+remaining cell to actually simulate the individual firings instead of
+abstracting them across the population.  This is noticeably slower in
+pathological cases, but still not too bad most of the time, and is much more
+realistic.
+
+## 2023-11-02
+
+BS521 exam.  Got a little tripped up on the paired t test question until
+I realized that `(average (mapcar #'- as bs))` is algebraically equivalent
+to `(- (average as) (average bs))`.
+
+Met with advisor about classes to take next semester.  Need to register when
+that becomes available in a few days.  Basic plan is to take:
+
+* BIOSTAT-522: continues stats progression and completes that requirement.
+* BIOINF-529: required for all bioinformatics people, cannot ever be waived, may
+  as well get it out of the way now.
+* BIOINF-602: journal club part 1 (no presenting).
+* PIBS-800: continues.
+* PIBS-504: round 2 of the ethics classes.
+
+I can consider adding one more class to the mix if those feel too light
+(compared to HG545 they'll probably both be easier).  Might pick from one of:
+
+* BIOINF-545: classical bioinformatics, done in R.
+* EECS-551/553: machine learning, probably really hard to get into.
+* BIOINF-597: AI class, I lack the prereqs now but might be able to convince
+  them to let me in because I'm a CS person.  Or just wait until I take
+  BIOINF-580 in the fall and do this next winter.
+* CANCBIO-554: would be good for Prensner lab, possibly also for a training
+  grant.
+
+## 2023-11-03
+
+HG545 review session.  Didn't manage to get in at 8 AM so I'll have to watch
+the recording some time this weekend.
+
+Finally got around to adding the bash version of Z to my remote dotfiles so
+I don't lose my mind trying to work on servers/VMs.
+
+Also finally got around to properly mapping the numpad keys and rotary encoder
+on my Sinc with StumpWM:
+
+    ("KP_End"       "gselect 1")
+    ("KP_Down"      "gselect 2")
+    ("KP_Page_Down" "gselect 3")
+    ("KP_Left"      "gselect 4")
+    ("KP_Begin"     "gselect 5")
+    ("KP_Right"     "gselect 6")
+    ("KP_Home"      "gselect 7")
+    ("KP_Up"        "gselect 8")
+    ("KP_Page_Up"   "gselect 9")
+
+    ("H-F1" "mute")
+    ("H-F2" "volume-down")
+    ("H-F3" "volume-up")
+    ("XF86AudioMute" "exec mute")
+    ("XF86AudioRaiseVolume" "volume-down") ; todo unfuck the backwards mapping in qmk
+    ("XF86AudioLowerVolume" "volume-up")
+
+Also realized that I've mapped the raise/lower to the opposite directions on the
+encoder in QMK, welp.  Should fix that at some point…
+
+Did a bit of dotfile cleanup.  Realized I can also sync `htoprc` which is nice.
+Also discovered `htop` has an option for highlighting new processes and
+recently-killed ones, which will be *really* handy.
+
+## 2023-11-04
+
+Poking around at getting my Pine64 working again.  Dug out what I think is power
+suppy (5V 3A), and it seems to work, so that's good.  Booted it with the tiny
+screen and one of my old UHK's, but couldn't remember the password I had set
+(and apparently I never bothered saving it in my password manager, which is
+bizarre for me).  Oh well, probably a good idea to do a fresh install of Armbian
+on it anyway.  Attempted this and no matter what I try, the board just doesn't
+ever boot.  Tried multiple different SD cards, no luck.  Linux is such a goddamn
+mess some times.
+
+Eventually I realized that I was trying to use the Pine64 images from Armbian
+because the page is titled "Pine64 and LTS" and I have a Pine A64-LTS.  But
+apparently the A64-LTS needs to use the SOPINE images, even though I don't have
+a SOPINE.  Christ, what a mess. Got SSH set up, dotfiles synced easily.
+
+Starting to look at the GPIO stuff now.  Useful links:
+
+* <https://web.archive.org/web/20230501084346/https://synfare.com/599N105E/hwdocs/pine64/index.html>
+* <https://files.pine64.org/doc/Pine%20A64%20Schematic/Pine%20A64%20Pin%20Assignment%20160119.pdf>
+* <https://www.ics.com/blog/gpio-programming-using-sysfs-interface>
+
+HelLEDo, world:
+
+    echo 77 >/sys/class/gpio/export
+    cd /sys/class/gpio77
+    echo 1 > direction
+    echo 1 > value
+    echo 0 > value
+    echo 77 >/sys/class/gpio/unexport
+
+    (defparameter *f*
+      (open "/sys/class/gpio/gpio77/value" :direction :output :if-exists :supersede))
+    (write-char #\0 *f*)
+    #\0
+    (force-output *f*)
+
+Neat.  Dug around and tried to figure out how to use hardware PWM, but the
+documentation is… a mess, so I janked together PWM in software instead.  That…
+kind of worked.  I (much) later realized the site that gave me the duty cycle
+timings lied to me (it said 1ms-2ms when it's really much closer to 0.5ms-2.5ms
+according the manufacturer).  But even so, it's still really janky to try to
+software PWM from an SBC, so everyone seems to recommend breaking out an Arduino
+to make *that* control the servos, and then have the SBC drive that.  Poked
+around a bunch more and eventually got that working too.
+
+Next step is to get a web server running, which wasn't too hard with
+Hunchentoot.  Looked at various routing libraries and went with `easy-routes`
+for now.  Seems okay, though there are a few parts I don't love.  But it's good
+enough for now.  And with that I can `curl` and move the arm.  Neat.
+
+## 2023-11-05
+
+HG545 review session.
+
+Continued poking around at the Arduino stuff.
+
+## 2023-11-06
+
+HG545 test and literally nothing else.
+
+## 2023-11-07
+
+BS521.  Finished up Χ² testing.
+
+BI500.  Talked about visualization and Adobe Illustrator.
+
+PIBS800.  "House" meeting, talked about various stuff.
+
+Figured out how to jank together SSH tunneling between my server and my Pine SBC
+to expose a server running on the Pine to the internet.  Basically need to do
+two legs of SSH tunneling for this:
+
+    ssh -NTR '*:12345:localhost:8888' sl
+    ssh -NTL    '8888:localhost:80'   pine
+
+The first line makes anything connecting to port `12345` on the remote machine
+actually connect to what my intermediate machines sees as `localhost:8888`.
+Unfortunately that `localhost` hostname is indeed a hostname, and I can't use an
+SSH server name there to automagically jump around that way.  So anything
+hitting `12345` on the server will now hit `8888` on my intermediate machine.
+Then we use the second tunnel to forward *that* to whatever `pine` thinks
+`localhost:80` is.  Also note you need to enable `GatewayPorts` on the remote
+server and restart `sshd` for this to ever work at all.
+
+Read a bit for 503.  Need to do a bunch more.
+
+Backpacked classes for next semester.  Can't register yet, but I think that's
+because registration doesn't open until Nov 13?
+
+## 2023-11-08
+
+HG545 this morning, about recombination.
+
+BS521 homework.  Finally figured out how to get rid of the stupid
+`\begin{description}` hanging indent:
+
+    \usepackage{enumitem}
+    \setlist{leftmargin=!,labelwidth=2em}
+
+and how to tell LaTeX where to put page breaks:
+
+    \pagebreak[1] % Meh.
+    \pagebreak[2] % This would be a reasonable place to break.
+    \pagebreak[3] % Prefer to page break here unless it seems ridiculous not to.
+    \pagebreak[4] % Page break here, dammit.
+
+Played around with some of the recombination stuff.  I think I finally
+understand the junction resolution.  The key was that when you cut "vertically"
+at a Holliday junction you cut the *outside* strands, *not* the inside ones.
+Once I drew that out, it's obvious how you can unwind it.
+
+Reading for 503 discussion thing tomorrow.
+
+Reading for BS521 tomorrow, linear regression p-values.
+
+Started reading the HG545 paper but feeling a bit overwhelmed by it.  Will try
+again tomorrow (need to print it out tomorrow afternoon too, reading on a laptop
+sucks).
+
+## 2023-11-09
+
+Looked into 3D printing and there's actually [a
+lab](https://www.lib.umich.edu/visit-and-study/creation-and-learning-spaces/shapiro-design-lab/workshop)
+here with that and a lot more.
+
+Looked into why my enter and backspace keys on my laptop seem to intermittently
+stop working.  Turns out it's a common issue with this model of T14s.  Ugh.  The
+laptop is ~4 years old so I guess I could potentially justify getting a new one,
+but I'd really rather not.  80% of the time I'm using this with an external
+keyboard anyway, so maybe I'll just jank together some shortcuts in case this
+happens during a presentation or something.  If a computer could ever Just Work
+for me I'd be so happy.
+
+BS521 about linear regression.  The clock is broken in the classroom now.
+
+Poked around a little at Parenscript.  Need to figure out a way to get it
+working standalone which is *not* clear at all from the documentation, but
+I managed to find <https://app.leby.org/post/fun-with-parenscript/> that gave me
+somewhere to start.
+
+Yet another ethics/rigor meeting.
+
+Wired up `super-m` and `super-del` to deal with the Thinkpad keyboard crap.
+
+## 2023-11-10
+
+HG545.  A little worried, this section feels super rushed and I still feel very
+lost looking at the paper.
+
+## 2023-11-11
+
+Finally managed to get through the HG545 paper.  Still don't grok it in
+fullness, but at least I'm not totally bewildered.
+
+## 2023-11-12
+
+HG545 homework.  This was *rough*.
+
+## 2023-11-13
+
+HG545 discussion.  At least it's good to know everyone had a rough time with
+this one.
+
+The dying Thinkpad keys are really getting on my nerves.  Might be time to get
+a new Thinkpad so I've got two laptops in case one dies.  Looked at Lenovo's
+site but they just released Gen 4 of the AMD T14's, and I think I'd rather get
+one generation back so that Debian supports it.  Looks like I'll need to buy
+refurbished if I want that, unfortunately, but it might end up saving me some
+money anyway.
+
+Yet Another PIBS 503 research/responsibility/ethics meeting, this time on
+conflicts of interest.
+
+Looked into the new laptop thing a bit more.  Tried to find some Gen 3 AMD T14's
+but there's not any available from Lenovo themselves, only eBay.  Eventually
+I realized the P14s is essentially a T14 with a few tiny changes, and Lenovo
+*did* have a Gen 3 one of those available on a clearance, so I just went ahead
+and grabbed it.  Not looking forward to porting everything over again, but it'll
+be a good exercise I guess.
+
+Reviewed materials for Yet *Another* R/R/E meeting tomorrow.
+
+## 2023-11-14
+
+The dead keys are getting *really* annoying.  Glad I ordered the P14s.  Maybe
+I'll turn this into a little home assistant server or something.  Could be fun.
+
+Got an email this morning that the R/R/E meeting is rescheduled for Friday.
+Welp.  Good to know they can just change them out from under you, I guess.
+
+BS521.
+
+Chatted with another PI about my third rotation.  Going to chat with some of
+their grad students later this week.
+
+PIBS800.
+
+Finished the 3D printing course on the library site so I can potentially use the
+3D printers there now.  Still need to learn how to make stuff in e.g. TinkerCAD
+first I think.
+
+Read the review papers for HG545 tomorrow to prime my brain.  I'm still
+expecting it to be a lot to take in.
+
+Started the TinkerCAD tutorials.  Seems simple enough so far.
+
+## 2023-11-15
+
+HG545, start of the Epigenetics module.
+
+Registered for classes.  Mostly went smoothly except for two:
+
+* Needed to swap out the BS521 lab for a lab session on Mondays.  Given that
+  I haven't been really using the lab sessions much at all, this is fine.
+* Need instructor permission for BIOINF-545, and also apparently it's Tuesday
+  and *Friday*?  Strange set of days.  So much for my free Fridays.  Oh well, at
+  least Thursdays will be less wild I guess.
+
+Went to a talk by a professor I chatted with during Matchathon about Denisovans
+and population genetics.
+
+## 2023-11-16
+
+Unfortunately had to miss the BS521 class today to sign for my laptop so it
+wouldn't get returned.  I hope they recorded it.  I guess I know what I'm
+spending the weekend on: setting up another goddamn computer.  Ugh.
+
+Finish BS521 lab 3.
+
+Downloading a Debian installation image while I have fast internet so I can
+install that this weekend.  Cleaned up my downloads folder with the janky-ass
+file manager I installed to avoid having to install all of Gnome, but it… kind
+of sucks.  I wonder if it's worth poking around at making my own with McCLIM.
+Probably not, given how flaky McCLIM seems and how painful working with files in
+in CL.
+
+ieure helped me track down the replacement part I'd want to get for my broken
+Thinkpad keyboard: `5M10Z41656`.  Not sure whether I want to spend $200 on
+fixing the keyboard, but at least it's an option if I decide I want to.
+
+## 2023-11-17
+
+HG545.  Overslept and missed the first 5 minutes – need to rewatch to see what
+I missed.
+
+Met with some folks about a prospective rotation lab.
+
+## 2023-11-19
+
+Catching up on stuff from the rough last couple of days.
+
+Finished BIOINF500 Illustrator homework.  I do not like this program.
+
+Watched BS521 lecture I missed on Thursday.  Really love that classes are
+recorded.
+
+Continued getting new laptop set up.  Mostly followed my notes from August, but
+of course there's some fresh new hell to wade through.  Main problem was wifi,
+needed to:
+
+    systemctl stop wpa_supplicant
+    systemctl disable wpa_supplicant
+    systemctl mask wpa_supplicant
+
+## 2023-11-20
+
+HG545 class this morning.  Finally got the description of the opaque notation in
+the paper, so I feel like I can finally start reading it.  Maybe.
+
+Got confirmation from the next rotation lab that I'll be joining, so that's one
+fewer thing to worry about.
+
+Made another attempt at reading through the HG545 paper again when I got home.
+Made it all the way this time, but it was still a slog – the constant barrage of
+unintuitive notation made it quite painful, though not as bad as the last one.
+
+Did BS521 homework.
+
+Continued setting up the new Thinkpad.  Got my GPG key moved over, pass working.
+Got Rstudio, JabRef, qemu, OpenTrons, and a bunch of other stuff working too,
+I think.
+
+Trying to install LaTeX and I didn't write down what the packages were when
+I did this a month or two ago, dammit:
+
+    apt install texlive-latex-base \
+                texlive-latex-recommended \
+                texlive-latex-extra \
+                texlive-fonts-extra
+
+Realized I fucked up when I built SBCL the other day, it's
+`--with-sb-core-compression`, not `--with-core-compression` (note the `-sb`).
+
+Still need to get my new weechat/irssi setup installed on this machine, but
+otherwise I think I might mostly be ready to switch over.
+
+## 2023-11-22
+
+Using my new laptop in the lab today.  Realized I needed to get the wifi
+running.  From my notes I figured out I needed to use WPA2+PEAP+user/pass, and
+this time I used `nmtui` to add the connection.  The trick was selecting
+enterprise WPA2 and also changing TLS auth to PEAP.
+
+## 2023-11-23
+
+Watched BS521 class I missed.
+
+## 2023-11-26
+
+Figured out how to disable the stupid PC speaker on this laptop.  From the Arch
+wiki:
+
+    sudo rmmod pcspkr
+    sudo rmmod snd_pcsp
+
+And to fix on boot, create `/etc/modprobe.d/nobeep.conf`:
+
+    blacklist pcspkr
+    blacklist snd_pcsp
+
+Met with HG545 group about the homework.  We disagreed more on this one than any
+other, which is probably not a good sign…
+
+## 2023-11-27
+
+Getting back into the swing of things after a short Thanksgiving break.
+
+HG545 discussion.  This homework was… not great.
+
+Watched the BI500 youtube video I missed.  Still need to watch the Zoom and do
+the homework.
+
+Read textbook sections for BS521 tomorrow.
+
+## 2023-11-28
+
+BS521.  Multiple linear regression again.
+
+BI500.  Grant writing, internship, writing tips.
+
+PIBS800.
+
+## 2023-11-29
+
+HG545.  Final module, thankfully.  Printed the paper at Palmer before my meeting
+with Alan.
+
+Starting doing the BI500 homework I missed.  Need to finish this up tonight or
+tomorrow.
+
+## 2023-11-30
+
+BS521.  More multiple linear regression (not much beyond the textbook reading).
+
+Installed the VPN on my new laptop.  Been meaning to do that for a while.
+
+Finally did that BI500 homework.
+
+# December 2023
+
+## 2023-12-01
+
+HG545 this morning.
+
+Started AoC again, we'll see how far I get.  Did both 2022 and 2023 day 1,
+because I skipped it last year.
+
+Apparently "store a PBKDF2ed password" is too fucking hard for a website to do
+in The Year of Our Lord 2023 and AoC only supports garbage OAuth logins. I can
+no longer log in via Twitter without my old Yubikey, so I guess I'm going to
+switch to Github login for it until that eventually breaks.  But this means that
+my scores are reset.  That's fine, I still have the code, but the puzzle inputs
+all changed.  I reran all my stuff for 2016, need to do the other years as
+I find some time.
+
+## 2023-12-03
+
+Homework, reading.  Almost done, just need to sprint to the finish line in just
+over a week.
+
+## 2023-12-03
+
+Wrapped up all the rest of the homework for BS521.  Just need to make the final
+exam note sheet.
+
+Discovered the equivalent of Vim's `c-o` in evince: `alt-p`.  Why did I wait til
+now to look this up?
+
+## 2023-12-04
+
+Final HG545 lecture today.  I've learned a lot, but I'm thankful it's done.
+
+Reread the HG545 paper yet again.  I just now feel like I'm starting to
+understand it.
+
+Started course evaluations.  Will finish later.
+
+## 2023-12-05
+
+BS521.
+
+BI500.
+
+Final research/ethics session.
+
+HG545 study group and homework.  Very happy this is the last time I'll have to
+do this.
+
+## 2023-12-06
+
+HG545 for the last time (aside from review on Friday).
+
+## 2023-12-08
+
+Final HG545 review session.  A/V and Zoom issues made this an absolute mess.
+
+## 2023-12-11
+
+Presented at the lab meeting about the rotation project.
+
+BS521 final.  Unfortunately forgot to include the `β₃x₁x₂` stuff on my notes
+sheet, so I think I probably didn't do as well on this one as previous ones, but
+I'm not worried about the grade.
+
+HG545 final.  I'm just glad it's finally done.  Going to take a few days to
+focus on wrapping up rotation stuff and taking a much needed break.
+
+
--- a/README.markdown	Thu Dec 14 11:16:20 2023 -0500
+++ b/README.markdown	Tue Jan 09 09:44:08 2024 -0500
@@ -5,554 +5,13 @@
 
 [TOC]
 
-# November 2023
-
-## 2023-11-01
-
-HG545 discussion section.
-
-Made a little tornado plots demo with `p5.js` to be able to poke around and
-confirm a couple of things:
-
-* When you have two pause sites symmetric about an origin, there is *no* shift,
-  but the coverage massively changes there.
-* If you decrease the rate of both forks, you don't get a long skinny tornado,
-  you get a shorter normal-looking one with higher coverage.
-
-SAA Wednesday dance.
-
-Got nerd sniped by Kate into adding calculation of the read counts to the
-tornado plots instead of just abstracting that as a parameter itself and jesus,
-that was a rabbit hole I didn't expect.  Most of it was easy — the dependence on
-cell population and synthesis time was trivial, and undercutting was simple to
-kludge in.
-
-The problem was the last parameter in the equation: the firing rate of origins.
-How do you even define this?  I came up with two options:
-
-* Half-life based exponential firing, e.g. "after 5 seconds, the origin will
-  have fired in half the cells".
-* Per-cell linear rates, e.g. "this origin has a 5% chance of firing every
-  second".
-
-Looking at the results, I'm now more confused than ever — I'm not even sure the
-second model is actually different from the first when applied to a population
-of origins that can only fire once.
-
-As I was implementing this, I initially started with proportion-based
-computations, e.g. for a given timestep, how many of the remaining origins
-fired?  But this immediately causes issues in the data if the timesteps are big:
-in reality no two origins *ever* fire simultaneously, so this method produces
-bands that wouldn't be there in reality when the timesteps are large.
-
-So the obvious solution is to just shrink the timesteps, and that does help at
-first, but it begins to break down in another way when the steps shrink small
-enough. It helps to think about what the ideal timestep size should be: small
-enough most individual firings are in separate timesteps instead of simultaneous
-ones.  But when the time is small enough for this to happen at the beginning
-(when firing is high), that means that later in the process you end up computing
-things like "0.01 cells should fire" in a given step.  But you have to choose
-some rounding method to turn that into an integer number of firings, and all of
-them will fuck you:
-
-* `round` and `floor` will always result in `0`, so your remaining population
-  will never ever fire.
-* `ceiling` will always fire at least one cell, which results in wildly-too-high
-  rates near the end.
-
-So eventually I realized this and did the ugly thing that should actually work:
-turned the proportion into a probability and checked `random() < p` for every
-remaining cell to actually simulate the individual firings instead of
-abstracting them across the population.  This is noticeably slower in
-pathological cases, but still not too bad most of the time, and is much more
-realistic.
-
-## 2023-11-02
-
-BS521 exam.  Got a little tripped up on the paired t test question until
-I realized that `(average (mapcar #'- as bs))` is algebraically equivalent
-to `(- (average as) (average bs))`.
-
-Met with advisor about classes to take next semester.  Need to register when
-that becomes available in a few days.  Basic plan is to take:
-
-* BIOSTAT-522: continues stats progression and completes that requirement.
-* BIOINF-529: required for all bioinformatics people, cannot ever be waived, may
-  as well get it out of the way now.
-* BIOINF-602: journal club part 1 (no presenting).
-* PIBS-800: continues.
-* PIBS-504: round 2 of the ethics classes.
-
-I can consider adding one more class to the mix if those feel too light
-(compared to HG545 they'll probably both be easier).  Might pick from one of:
-
-* BIOINF-545: classical bioinformatics, done in R.
-* EECS-551/553: machine learning, probably really hard to get into.
-* BIOINF-597: AI class, I lack the prereqs now but might be able to convince
-  them to let me in because I'm a CS person.  Or just wait until I take
-  BIOINF-580 in the fall and do this next winter.
-* CANCBIO-554: would be good for Prensner lab, possibly also for a training
-  grant.
-
-## 2023-11-03
-
-HG545 review session.  Didn't manage to get in at 8 AM so I'll have to watch
-the recording some time this weekend.
-
-Finally got around to adding the bash version of Z to my remote dotfiles so
-I don't lose my mind trying to work on servers/VMs.
-
-Also finally got around to properly mapping the numpad keys and rotary encoder
-on my Sinc with StumpWM:
-
-    ("KP_End"       "gselect 1")
-    ("KP_Down"      "gselect 2")
-    ("KP_Page_Down" "gselect 3")
-    ("KP_Left"      "gselect 4")
-    ("KP_Begin"     "gselect 5")
-    ("KP_Right"     "gselect 6")
-    ("KP_Home"      "gselect 7")
-    ("KP_Up"        "gselect 8")
-    ("KP_Page_Up"   "gselect 9")
-
-    ("H-F1" "mute")
-    ("H-F2" "volume-down")
-    ("H-F3" "volume-up")
-    ("XF86AudioMute" "exec mute")
-    ("XF86AudioRaiseVolume" "volume-down") ; todo unfuck the backwards mapping in qmk
-    ("XF86AudioLowerVolume" "volume-up")
-
-Also realized that I've mapped the raise/lower to the opposite directions on the
-encoder in QMK, welp.  Should fix that at some point…
-
-Did a bit of dotfile cleanup.  Realized I can also sync `htoprc` which is nice.
-Also discovered `htop` has an option for highlighting new processes and
-recently-killed ones, which will be *really* handy.
-
-## 2023-11-04
-
-Poking around at getting my Pine64 working again.  Dug out what I think is power
-suppy (5V 3A), and it seems to work, so that's good.  Booted it with the tiny
-screen and one of my old UHK's, but couldn't remember the password I had set
-(and apparently I never bothered saving it in my password manager, which is
-bizarre for me).  Oh well, probably a good idea to do a fresh install of Armbian
-on it anyway.  Attempted this and no matter what I try, the board just doesn't
-ever boot.  Tried multiple different SD cards, no luck.  Linux is such a goddamn
-mess some times.
+# January 2024
 
-Eventually I realized that I was trying to use the Pine64 images from Armbian
-because the page is titled "Pine64 and LTS" and I have a Pine A64-LTS.  But
-apparently the A64-LTS needs to use the SOPINE images, even though I don't have
-a SOPINE.  Christ, what a mess. Got SSH set up, dotfiles synced easily.
-
-Starting to look at the GPIO stuff now.  Useful links:
-
-* <https://web.archive.org/web/20230501084346/https://synfare.com/599N105E/hwdocs/pine64/index.html>
-* <https://files.pine64.org/doc/Pine%20A64%20Schematic/Pine%20A64%20Pin%20Assignment%20160119.pdf>
-* <https://www.ics.com/blog/gpio-programming-using-sysfs-interface>
-
-HelLEDo, world:
-
-    echo 77 >/sys/class/gpio/export
-    cd /sys/class/gpio77
-    echo 1 > direction
-    echo 1 > value
-    echo 0 > value
-    echo 77 >/sys/class/gpio/unexport
-
-    (defparameter *f*
-      (open "/sys/class/gpio/gpio77/value" :direction :output :if-exists :supersede))
-    (write-char #\0 *f*)
-    #\0
-    (force-output *f*)
-
-Neat.  Dug around and tried to figure out how to use hardware PWM, but the
-documentation is… a mess, so I janked together PWM in software instead.  That…
-kind of worked.  I (much) later realized the site that gave me the duty cycle
-timings lied to me (it said 1ms-2ms when it's really much closer to 0.5ms-2.5ms
-according the manufacturer).  But even so, it's still really janky to try to
-software PWM from an SBC, so everyone seems to recommend breaking out an Arduino
-to make *that* control the servos, and then have the SBC drive that.  Poked
-around a bunch more and eventually got that working too.
-
-Next step is to get a web server running, which wasn't too hard with
-Hunchentoot.  Looked at various routing libraries and went with `easy-routes`
-for now.  Seems okay, though there are a few parts I don't love.  But it's good
-enough for now.  And with that I can `curl` and move the arm.  Neat.
-
-## 2023-11-05
-
-HG545 review session.
-
-Continued poking around at the Arduino stuff.
-
-## 2023-11-06
-
-HG545 test and literally nothing else.
-
-## 2023-11-07
-
-BS521.  Finished up Χ² testing.
-
-BI500.  Talked about visualization and Adobe Illustrator.
-
-PIBS800.  "House" meeting, talked about various stuff.
-
-Figured out how to jank together SSH tunneling between my server and my Pine SBC
-to expose a server running on the Pine to the internet.  Basically need to do
-two legs of SSH tunneling for this:
-
-    ssh -NTR '*:12345:localhost:8888' sl
-    ssh -NTL    '8888:localhost:80'   pine
-
-The first line makes anything connecting to port `12345` on the remote machine
-actually connect to what my intermediate machines sees as `localhost:8888`.
-Unfortunately that `localhost` hostname is indeed a hostname, and I can't use an
-SSH server name there to automagically jump around that way.  So anything
-hitting `12345` on the server will now hit `8888` on my intermediate machine.
-Then we use the second tunnel to forward *that* to whatever `pine` thinks
-`localhost:80` is.  Also note you need to enable `GatewayPorts` on the remote
-server and restart `sshd` for this to ever work at all.
-
-Read a bit for 503.  Need to do a bunch more.
-
-Backpacked classes for next semester.  Can't register yet, but I think that's
-because registration doesn't open until Nov 13?
-
-## 2023-11-08
-
-HG545 this morning, about recombination.
-
-BS521 homework.  Finally figured out how to get rid of the stupid
-`\begin{description}` hanging indent:
-
-    \usepackage{enumitem}
-    \setlist{leftmargin=!,labelwidth=2em}
-
-and how to tell LaTeX where to put page breaks:
-
-    \pagebreak[1] % Meh.
-    \pagebreak[2] % This would be a reasonable place to break.
-    \pagebreak[3] % Prefer to page break here unless it seems ridiculous not to.
-    \pagebreak[4] % Page break here, dammit.
-
-Played around with some of the recombination stuff.  I think I finally
-understand the junction resolution.  The key was that when you cut "vertically"
-at a Holliday junction you cut the *outside* strands, *not* the inside ones.
-Once I drew that out, it's obvious how you can unwind it.
-
-Reading for 503 discussion thing tomorrow.
-
-Reading for BS521 tomorrow, linear regression p-values.
-
-Started reading the HG545 paper but feeling a bit overwhelmed by it.  Will try
-again tomorrow (need to print it out tomorrow afternoon too, reading on a laptop
-sucks).
-
-## 2023-11-09
-
-Looked into 3D printing and there's actually [a
-lab](https://www.lib.umich.edu/visit-and-study/creation-and-learning-spaces/shapiro-design-lab/workshop)
-here with that and a lot more.
-
-Looked into why my enter and backspace keys on my laptop seem to intermittently
-stop working.  Turns out it's a common issue with this model of T14s.  Ugh.  The
-laptop is ~4 years old so I guess I could potentially justify getting a new one,
-but I'd really rather not.  80% of the time I'm using this with an external
-keyboard anyway, so maybe I'll just jank together some shortcuts in case this
-happens during a presentation or something.  If a computer could ever Just Work
-for me I'd be so happy.
-
-BS521 about linear regression.  The clock is broken in the classroom now.
-
-Poked around a little at Parenscript.  Need to figure out a way to get it
-working standalone which is *not* clear at all from the documentation, but
-I managed to find <https://app.leby.org/post/fun-with-parenscript/> that gave me
-somewhere to start.
-
-Yet another ethics/rigor meeting.
-
-Wired up `super-m` and `super-del` to deal with the Thinkpad keyboard crap.
-
-## 2023-11-10
-
-HG545.  A little worried, this section feels super rushed and I still feel very
-lost looking at the paper.
-
-## 2023-11-11
+## 2024-01-08
 
-Finally managed to get through the HG545 paper.  Still don't grok it in
-fullness, but at least I'm not totally bewildered.
-
-## 2023-11-12
-
-HG545 homework.  This was *rough*.
-
-## 2023-11-13
-
-HG545 discussion.  At least it's good to know everyone had a rough time with
-this one.
-
-The dying Thinkpad keys are really getting on my nerves.  Might be time to get
-a new Thinkpad so I've got two laptops in case one dies.  Looked at Lenovo's
-site but they just released Gen 4 of the AMD T14's, and I think I'd rather get
-one generation back so that Debian supports it.  Looks like I'll need to buy
-refurbished if I want that, unfortunately, but it might end up saving me some
-money anyway.
-
-Yet Another PIBS 503 research/responsibility/ethics meeting, this time on
-conflicts of interest.
-
-Looked into the new laptop thing a bit more.  Tried to find some Gen 3 AMD T14's
-but there's not any available from Lenovo themselves, only eBay.  Eventually
-I realized the P14s is essentially a T14 with a few tiny changes, and Lenovo
-*did* have a Gen 3 one of those available on a clearance, so I just went ahead
-and grabbed it.  Not looking forward to porting everything over again, but it'll
-be a good exercise I guess.
-
-Reviewed materials for Yet *Another* R/R/E meeting tomorrow.
-
-## 2023-11-14
-
-The dead keys are getting *really* annoying.  Glad I ordered the P14s.  Maybe
-I'll turn this into a little home assistant server or something.  Could be fun.
-
-Got an email this morning that the R/R/E meeting is rescheduled for Friday.
-Welp.  Good to know they can just change them out from under you, I guess.
-
-BS521.
-
-Chatted with another PI about my third rotation.  Going to chat with some of
-their grad students later this week.
-
-PIBS800.
-
-Finished the 3D printing course on the library site so I can potentially use the
-3D printers there now.  Still need to learn how to make stuff in e.g. TinkerCAD
-first I think.
-
-Read the review papers for HG545 tomorrow to prime my brain.  I'm still
-expecting it to be a lot to take in.
-
-Started the TinkerCAD tutorials.  Seems simple enough so far.
-
-## 2023-11-15
-
-HG545, start of the Epigenetics module.
-
-Registered for classes.  Mostly went smoothly except for two:
-
-* Needed to swap out the BS521 lab for a lab session on Mondays.  Given that
-  I haven't been really using the lab sessions much at all, this is fine.
-* Need instructor permission for BIOINF-545, and also apparently it's Tuesday
-  and *Friday*?  Strange set of days.  So much for my free Fridays.  Oh well, at
-  least Thursdays will be less wild I guess.
-
-Went to a talk by a professor I chatted with during Matchathon about Denisovans
-and population genetics.
-
-## 2023-11-16
-
-Unfortunately had to miss the BS521 class today to sign for my laptop so it
-wouldn't get returned.  I hope they recorded it.  I guess I know what I'm
-spending the weekend on: setting up another goddamn computer.  Ugh.
-
-Finish BS521 lab 3.
-
-Downloading a Debian installation image while I have fast internet so I can
-install that this weekend.  Cleaned up my downloads folder with the janky-ass
-file manager I installed to avoid having to install all of Gnome, but it… kind
-of sucks.  I wonder if it's worth poking around at making my own with McCLIM.
-Probably not, given how flaky McCLIM seems and how painful working with files in
-in CL.
-
-ieure helped me track down the replacement part I'd want to get for my broken
-Thinkpad keyboard: `5M10Z41656`.  Not sure whether I want to spend $200 on
-fixing the keyboard, but at least it's an option if I decide I want to.
-
-## 2023-11-17
-
-HG545.  Overslept and missed the first 5 minutes – need to rewatch to see what
-I missed.
-
-Met with some folks about a prospective rotation lab.
-
-## 2023-11-19
-
-Catching up on stuff from the rough last couple of days.
-
-Finished BIOINF500 Illustrator homework.  I do not like this program.
-
-Watched BS521 lecture I missed on Thursday.  Really love that classes are
-recorded.
-
-Continued getting new laptop set up.  Mostly followed my notes from August, but
-of course there's some fresh new hell to wade through.  Main problem was wifi,
-needed to:
-
-    systemctl stop wpa_supplicant
-    systemctl disable wpa_supplicant
-    systemctl mask wpa_supplicant
-
-## 2023-11-20
-
-HG545 class this morning.  Finally got the description of the opaque notation in
-the paper, so I feel like I can finally start reading it.  Maybe.
-
-Got confirmation from the next rotation lab that I'll be joining, so that's one
-fewer thing to worry about.
-
-Made another attempt at reading through the HG545 paper again when I got home.
-Made it all the way this time, but it was still a slog – the constant barrage of
-unintuitive notation made it quite painful, though not as bad as the last one.
-
-Did BS521 homework.
-
-Continued setting up the new Thinkpad.  Got my GPG key moved over, pass working.
-Got Rstudio, JabRef, qemu, OpenTrons, and a bunch of other stuff working too,
-I think.
-
-Trying to install LaTeX and I didn't write down what the packages were when
-I did this a month or two ago, dammit:
+Back from break.  Started a new rotation (classes don't start for another
+couple of days).  Feels good to be back.
 
-    apt install texlive-latex-base \
-                texlive-latex-recommended \
-                texlive-latex-extra \
-                texlive-fonts-extra
-
-Realized I fucked up when I built SBCL the other day, it's
-`--with-sb-core-compression`, not `--with-core-compression` (note the `-sb`).
-
-Still need to get my new weechat/irssi setup installed on this machine, but
-otherwise I think I might mostly be ready to switch over.
-
-## 2023-11-22
-
-Using my new laptop in the lab today.  Realized I needed to get the wifi
-running.  From my notes I figured out I needed to use WPA2+PEAP+user/pass, and
-this time I used `nmtui` to add the connection.  The trick was selecting
-enterprise WPA2 and also changing TLS auth to PEAP.
-
-## 2023-11-23
-
-Watched BS521 class I missed.
-
-## 2023-11-26
-
-Figured out how to disable the stupid PC speaker on this laptop.  From the Arch
-wiki:
-
-    sudo rmmod pcspkr
-    sudo rmmod snd_pcsp
-
-And to fix on boot, create `/etc/modprobe.d/nobeep.conf`:
-
-    blacklist pcspkr
-    blacklist snd_pcsp
-
-Met with HG545 group about the homework.  We disagreed more on this one than any
-other, which is probably not a good sign…
-
-## 2023-11-27
-
-Getting back into the swing of things after a short Thanksgiving break.
-
-HG545 discussion.  This homework was… not great.
-
-Watched the BI500 youtube video I missed.  Still need to watch the Zoom and do
-the homework.
-
-Read textbook sections for BS521 tomorrow.
-
-## 2023-11-28
-
-BS521.  Multiple linear regression again.
-
-BI500.  Grant writing, internship, writing tips.
-
-PIBS800.
-
-## 2023-11-29
-
-HG545.  Final module, thankfully.  Printed the paper at Palmer before my meeting
-with Alan.
-
-Starting doing the BI500 homework I missed.  Need to finish this up tonight or
-tomorrow.
-
-## 2023-11-30
-
-BS521.  More multiple linear regression (not much beyond the textbook reading).
-
-Installed the VPN on my new laptop.  Been meaning to do that for a while.
+## 2024-01-09
 
-Finally did that BI500 homework.
-
-## 2023-12-01
-
-HG545 this morning.
-
-Started AoC again, we'll see how far I get.  Did both 2022 and 2023 day 1,
-because I skipped it last year.
-
-Apparently "store a PBKDF2ed password" is too fucking hard for a website to do
-in The Year of Our Lord 2023 and AoC only supports garbage OAuth logins. I can
-no longer log in via Twitter without my old Yubikey, so I guess I'm going to
-switch to Github login for it until that eventually breaks.  But this means that
-my scores are reset.  That's fine, I still have the code, but the puzzle inputs
-all changed.  I reran all my stuff for 2016, need to do the other years as
-I find some time.
-
-## 2023-12-03
-
-Homework, reading.  Almost done, just need to sprint to the finish line in just
-over a week.
-
-## 2023-12-03
-
-Wrapped up all the rest of the homework for BS521.  Just need to make the final
-exam note sheet.
-
-Discovered the equivalent of Vim's `c-o` in evince: `alt-p`.  Why did I wait til
-now to look this up?
-
-## 2023-12-04
-
-Final HG545 lecture today.  I've learned a lot, but I'm thankful it's done.
-
-Reread the HG545 paper yet again.  I just now feel like I'm starting to
-understand it.
-
-Started course evaluations.  Will finish later.
-
-## 2023-12-05
-
-BS521.
-
-BI500.
-
-Final research/ethics session.
-
-HG545 study group and homework.  Very happy this is the last time I'll have to
-do this.
-
-## 2023-12-06
-
-HG545 for the last time (aside from review on Friday).
-
-## 2023-12-08
-
-Final HG545 review session.  A/V and Zoom issues made this an absolute mess.
-
-## 2023-12-11
-
-Presented at the lab meeting about the rotation project.
-
-BS521 final.  Unfortunately forgot to include the `β₃x₁x₂` stuff on my notes
-sheet, so I think I probably didn't do as well on this one as previous ones, but
-I'm not worried about the grade.
-
-HG545 final.  I'm just glad it's finally done.  Going to take a few days to
-focus on wrapping up rotation stuff and taking a much needed break.
-
-
+Another day of rotation before classes start.  Getting my laptop set up again.