diff --git a/emacs-notes.org b/emacs-notes.org
index a946122..7f44be7 100644
--- a/emacs-notes.org
+++ b/emacs-notes.org
@@ -7,32 +7,6 @@
This is a small collection of Emacs related posts and documentation by other
authors that I find useful.
-* Emacs Features
-
-Random links and notes about various of Emacs' features.
-
-** Eshell
-
-- [[https://www.masteringemacs.org/article/complete-guide-mastering-eshell][Mastering Eshell]] by Mickey Petersen
-- [[http://www.howardism.org/Technical/Emacs/eshell-fun.html][Eschewing Zshell for Emacs Shell]] by Howard Abrams
-- [[https://github.com/howardabrams/dot-files/blob/master/emacs-eshell.org][Abrams' EShell configuration]]
-
-** Fonts and Themes
-
-- To show all available fonts, use the function ~x-family-fonts~.
-
-- Load custom themes with ~customize-themes~ instead of calling ~load-theme~
- directly. However, this does not set ~custom-enabled-themes~ correctly
- (Emacs 26.1), so directly customizing ~custom-enabled-themes~ seems to be the
- best thing (although one has to know the names of the themes then).
-
-** Magit Walkthrough
-:PROPERTIES:
-:CREATED: [2018-08-11 Sat 21:05]
-:END:
-
-https://emacsair.me/2017/09/01/magit-walk-through/
-
* Random Notes
** Insert URL from Safari :IRREAL:
@@ -851,1254 +825,8 @@ Approach: sort all buffers by size.
- Customize the variable =file-coding-system-alist= to control whether certain
files should always be opened with a specific encoding.
-* Tutorials
-** Online
-- [[https://github.com/alphapapa/emacs-package-dev-handbook][Emacs Package Developer's Cookbook]]
-** Workshop for Emacs Macros
-(By [[https://www.howardism.org/][Howard Abrams]], 2015 Nov 24)
-
-Basic idea of this file is to be both a *guide* and a *practice pad*
-for leveling up on Emacs’ keyboard macro system.
-
-To use, just [[https://github.com/howardabrams/pdx-emacs-hackers/raw/master/workshops/keyboard-macros.org][download this file]] to your system, and edit it in Emacs.
-Then just follow along... If you are not familiar with org-mode files,
-here are the basics for this workshop:
-
- - Hit a tab on the header expands or collapses it
- - Narrow to show just one section with: C-x n s
- - Return by widening normally with: C-x n w
- - Hyperlinks can be clicked on to view the Emacs Manual
-
-Pretty much treat the rest of this document as a text file.
-
-*** Basic Usage
-
- Let’s begin with something simple to try out this project.
- In the /block area/ below, hit: C-c ' (yes, the apostrophe).
- When done with the tasks, hit: C-x C-s to close and return here.
-
- #+BEGIN_SRC org
- - This foobar should be Interesting
- - Nulla foobar Posuere
- - Nullam foobar Tempus
- - Etiam foobar laoreet quam sed Arcu
- - Donec foobar hendrerit tempor Tellus
- - Mauris foobar mollis tincidunt Felis
- - etiam laoreet quam sed arcu
- - nullam rutrum
- - sed diam
- - lorem ipsum dolor sit amet, consectetuer adipiscing elit
- - mauris ac felis vel velit tristique imperdiet
- - fusce suscipit, wisi nec facilisis facilisis, est dui fermentum leo, quis tempor ligula erat quis odio
- - donec hendrerit tempor tellus
- #+END_SRC
-
- Notice that the frame is split with this document still visible?
-
- Good, let’s play around. Let’s capitalize the first letter of each line.
- Position point at the beginning of the first line, and then:
-
- - F3
- - M-c
- - C-n
- - C-a
- - F4
-
- Press F4 repeatedly to capitalize the first word on each line.
- Don’t capitalize /every/ line... leave a few alone for a moment.
- Now you have the basics.
-
- Let’s make a new macro to capitalize the /last/ word on each line.
- Pop back up to the top of the list, and:
-
- - F3
- - C-e
- - M-b
- - M-c
- - C-n
- - F4
-
- Once again, leave a few lines alone.
- Just one more macro, as I want to show you something interesting.
- Jump back to the beginning, and:
-
- - F3
- - C-a
- - M-f
- - Space
- - foobar (or type any single word you find amusing)
- - C-n
- - F4
-
- Type: C-x C-k C-k
-
- Notice it behaves the same as F4, but you can keep typing C-k to
- execute your macro.
-
- Start typing C-n and/or C-p and notice the minibuffer. It alternates
- between the following:
-
- - M-c C-n C-a
- - C-e M-b M-c C-n
- - C-a M-f SPC f 2*o b a r C-n
-
- Typing C-k at any point will execute that macro. You’ve now see the
- Emacs Macro Ring, and can manipulate it. You are now at Level 2.
-
- Type C-c ' (apostrophe) to close that side window.
-
-*** Naming Macros
-
- While that =foobar= macro may be quite handy, looping around the
- keyboard macro ring to select it may be inefficient. Name it!
-
- C-x C-k n
-
- Give it a name of foobar, and now, you can: M-x foobar
- to have the macro run.
-
- Perhaps it may be more useful to bind that macro to some un-used
- key, like C-c k or F2 ... type:
-
- C-x C-k b
-
- And then type your binding, e.g. C-c k
-
- You know that C-c followed by a single letter is supposed to be free
- of usage and available for your nefarious reasons, right?
-
- Read the [[info:emacs#Save%20Keyboard%20Macro][the Emacs Manual]] for details. If you actually tried this
- example, then you have earned enough experience points to be level 3.
-
-*** What do you mean On Every Line?
-
- Keyboard macros are slick, and while we /could/ prefix the F4 with
- the numbering prefix to run it multiple times at once, e.g. C-9 F4,
- a typical use case is to run it on every line in a region.
-
- Position the cursor in the block, and type: C-c ‘
-
- #+BEGIN_SRC org
- I will not take out the trash
- I should not stop swearing
- I may not stop to smell the roses
- I do not want to go shopping
- I could not care less
- #+END_SRC
-
- With the point on the first line, type:
-
- - F3
- - C-a
- - M-f
- - M-f
- - Space
- - not (type the word, =not=)
- - F4
-
- Now select the remaining 4 lines any way you like, and type:
-
- - C-x C-k r
-
- Read [[info:emacs#Basic%20Keyboard%20Macro][the Emacs Manual]] for complete details, and welcome to level 4.
-
-*** Numbering
-
- Numbering things seems to be important to people. Let’s see if we
- can easily number the worst song ever inflicted on humanity.
-
- Once again, position the point inside the block, and type: C-c '
-
- #+BEGIN_SRC org
- 1 Drummers Drumming
- 2 Pipers Piping
- 3 Lords a Leaping
- 4 Ladies Dancing
- 5 Maids a Milking
- 6 Swans a Swimming
- 7 Geese a Laying
- 8 Golden Rings
- 9 Calling Birds
- 10 French Hens
- 11 Turtle Doves
- 12 Partridge in a Pear Tree
- #+END_SRC
-
- Follow along at home. First, position the point at the end (on the
- line with the partridge), and:
-
- - C-x C-k C-c
- - 1
- - Return (to set a counter to 1)
- - F3
- - C-a
- - F3
- - Spacebar
- - C-n
- - F4
-
- Yes, hitting the F3 key twice (once to start the macro, and again to
- insert the value of the counter) is a bit odd. You can also use the
- binding: C-x C-k C-i
-
- Each time you hit F4, you increment the counter that is inserted.
-
- By the way, if you didn’t do the whole =C-x C-k C-c= to set the
- counter to 1, the first value would be 0. Read [[info:emacs#Keyboard%20Macro%20Counter][the manual]] for
- details.
-
-*** Fixing Macros
-
- Now that you are a Level 5 Elf Keyboard Macro-er, and you can now
- sling macros everywhere, you may notice that sometimes, in the
- middle of a long macro, you flub it.
-
- If you hit F4 too soon (it happens), hit: C-u C-u F3 to pick up
- where you left off and enter the rest of the macro. Hit F4 when you
- are really finished.
-
- If you need to fix a keyboard macro with more finesse, type:
-
- C-x C-k C-e
-
- And behold the glory. Tis a simple language that should be pretty
- obvious to a skilled Macro-er as yourself. Type C-h m once in that
- buffer to display details of how to edit the macro. When you are
- finished editing, type: C-c C-c
-
- I’ll let you play around with your own example for this one.
- Read [[info:emacs#Edit%20Keyboard%20Macro][the manual]] for complete details.
-
-*** Variations on a Theme
-
- To gain the Level 7 Keyboard Macro-er title, one should know how to
- customize a macro /while/ running it. The following section of HTML
- code needs some textual changes. We want to add one of the following
- phrases to the /end/ of every paragraph that has a =class= of =change=:
-
- * Because I said so. Got it?
- * Because I'm the boss. Got it?
- * You heard me. Got it?
- * Just do it. Got it?
-
- To begin, first move to the following block (hint: C-c M-f) and hit
- TAB to collapse the block (you gotta see all the instructions,
- right?) Next, issue a C-c ' on this block to show it in a new
- window. If you have trouble with your HTML mode, change the =html=
- to =text=.
-
- #+BEGIN_SRC html
-
-
-
-
- Proin neque massa, cursus ut, gravida ut, lobortis eget, lacus.
- Praesent augue. Sed diam. Nunc eleifend leo vitae magna. Nunc
- rutrum turpis sed pede.
-
-
- Nullam rutrum. Nunc rutrum turpis sed pede.
-
-
- Phasellus at dui in ligula mollis ultricies. Curabitur lacinia
- pulvinar nibh. Donec pretium posuere tellus. Praesent
- fermentum tempor tellus. Proin quam nisl, tincidunt et, mattis
- eget, convallis nec, purus.
-
-
- Fusce sagittis, libero non molestie mollis, magna orci ultrices
- dolor, at vulputate neque nulla lacinia eros. Sed diam. Nam
- vestibulum accumsan nisl.
-
-
- Aliquam feugiat tellus ut neque. Nam vestibulum accumsan
- nisl. Praesent fermentum tempor tellus.
-
-
- Vivamus id enim. Suspendisse potenti. Curabitur lacinia
- pulvinar nibh. Mauris ac felis vel velit tristique imperdiet.
-
-
- Donec vitae dolor. Mauris ac felis vel velit tristique
- imperdiet. Nunc aliquet, augue nec adipiscing interdum, lacus
- tellus malesuada massa, quis varius mi purus non odio. Proin
- quam nisl, tincidunt et, mattis eget, convallis nec, purus. Nam
- euismod tellus id erat.
-
-
- Nullam rutrum.
-
-
-
- #+END_SRC
-
- Type the following:
-
- - F3
- - C-s
- - Type: class="change"
- - C-e
- - C-s
- - Type:
- - C-p
- - C-e
- - C-x q
- - Type: Got it?
- - C-n
- - F4
-
- In this particular case, we actually didn't do anything special, so
- move to the beginning of the buffer, and hit F4, and the cursor will
- go to the end of every paragraph that needs changing, and stop with
- a prompt:
-
- Proceed with macro? (Y, N, RET, C-l, C-r)
-
- Type C-r and begin typing one of our phrases, and when you are done,
- type: C-M-c
-
- The prompt will be re-displayed, so finish the macro with 'Y'.
- Check out [[info:emacs#Keyboard%20Macro%20Query][the manual]] for details on this =C-x q= business.
-
-** Emacs Calc Tutorials
-
-By Andrew Hyatt, found here: https://github.com/ahyatt/emacs-calc-tutorials.
-License is GPLv3.
-
-Order as given by https://blog.markhepburn.com/2013/12/07/andrew-hyatts-emacs-calc-tutorials
-
-*** README
-
-#+BEGIN_EXAMPLE
-This repository contains tutorials about emacs calc originally writen on the
-Emacs community on Google+.
-
-The best way to read is probably just to open the org files directly, which
-Github will display correctly.
-
-If anyone would like to correct anything, add any tutorials, or request
-anything, the normal Github bug / request / or pull request process will work.
-
-#+END_EXAMPLE
-
-*** HEX
-
-OK, seems like there's interest in some quick calc tips. Here's today's:
-
-How to convert decimal to hexidecimal. Let's say you want to convert number
-12345 to hex.
-
-#+BEGIN_EXAMPLE
-M-x calc
-d 6 (sets the number radix to 16, meaning all output will be in hex)
-10#12345 (inputs the number 12345 in base 10)
-
-The output reads:
-1: 16#3039
-#+END_EXAMPLE
-
-The answer is therefore =0x3039=.
-
-And then you can do a =d 0= to set the number radix back to normal, base 10.
-
-Here's how to do the other way. Let's convert =0xABCDEF= to base 10.
-
-#+BEGIN_EXAMPLE
-M-x calc
-16#ABCDEF
-
-The output reads:
-1: 11259375
-#+END_EXAMPLE
-
-*** Date
-
-Ever want to know how many seconds old David Hasselhoff is? calc can do many
-things, but it doesn't know much about Hasselhoff, so first I do a query on
-Google for [david hasselhoff]. I get a knowledge card on the right saying he was
-born July 17, 1952. It doesn't give a time, so we'll just assume it was at
-midnight.
-
-#+BEGIN_EXAMPLE
-M-x calc
-t N (put the current time on the stack)
-' (press ' to enter algebraic mode, then you input the date).
-- (subtract the two to get the number of days David has been alive)
-24 (we're going to multiply by 24, the number of hours in a day)
-60 (the number of minutes in an hour)
-60 (the number of seconds in a minute)
-*
-*
-*
-
-Final result:
-1: 1910255938.01
-#+END_EXAMPLE
-
-There you have it, he's... wait, how many seconds? That's really hard to read.
-
-Back into calc!
-
-#+BEGIN_EXAMPLE
-d g (toggle digit grouping)
-
-The final final result:
-1: 1,910,255,938.01
-#+END_EXAMPLE
-
-Ah, that's a 1.9 billion seconds. Sweet!
-
-*** Time
-
-Hey, what's the time? It's time to get ill! No, actually I meant the time in
-seconds since the epoch. Yesterday I went over doing math with time, which is
-fun but not something I use everyday. Much more useful is converting to and from
-Unix timestamps.
-
-Let's start by getting the time now in seconds since the epoch:
-
-#+BEGIN_EXAMPLE
-M-x calc
-t N (get the time now)
-t U (convert the time to seconds since the epoch)
-
-Result:
-1: 1359424746
-#+END_EXAMPLE
-
-Oh, and you want to insert that into your last used buffer?
-
-#+BEGIN_EXAMPLE
-y (that doesn't mean "yes", that means yank into the last buffer)
-#+END_EXAMPLE
-
-Done! Just to be complete, let's convert another date we have to input:
-
-#+BEGIN_EXAMPLE
-'<12:00pm Jul 4, 1776> (single quote to enter algebraic mode, then the date)
-t U (converts the time to seconds since the epoch)
-#+END_EXAMPLE
-
-But wait, what will happen? This is considerably before the epoch.
-
-#+BEGIN_EXAMPLE
-Result:
-1: -6106003200
-#+END_EXAMPLE
-
-Oh calc, you never let me down.
-
-Let's do the other way. Remember the Billenium?
-
-#+BEGIN_EXAMPLE
-1e9
-t U (converts the time in seconds since the epoch to text)
-
-Result:
-1: <9:46:40pm Sat Sep 8, 2001>
-#+END_EXAMPLE
-
-Wow, I never realized how close the Billenium was to September 11th. Kind of spooky...
-
-*** Random
-
-I use calc whenever I need a random number. The interface is easy and the random
-numbers are (supposedly) high quality.
-
-So, let's start with something simple: A random number between 0 and 100:
-
-#+BEGIN_EXAMPLE
-M-x calc
-100 (the upper bound, all values will be between 0 and this)
-k r (creates a random number between 0 and the number on the stack)
-
-Result:
-1: 66 (of course, yours will be different)
-#+END_EXAMPLE
-
-I want another one!
-#+BEGIN_EXAMPLE
-k a (creates another number with the same upper bound as the last)
-#+END_EXAMPLE
-
-Now that I’ve had a taste of that sweet sweet randomness, I want a vector of 50!
-
-#+BEGIN_EXAMPLE
-100 (the upper bound, again)
-50 (the number to generate)
-k h (generate a vector of 50 random numbers between 0 and 100)
-
-1: [60, 72, 61, 74, 77, 97, 10, 90, 8, 29, 82, 81, 51, 58, 7, 88, 99, 1, 37, 89, 93, 84, 52, 94, 2, 35, 5, 48, 87, 47, 14, 6, 79, 18, 67, 76, 70, 9, 43, 65, 69, 23, 55, 11, 53, 78, 50, 30, 13, 42]
-#+END_EXAMPLE
-
-OK, that's nice. But how about a number between 0 and 1?
-
-#+BEGIN_EXAMPLE
-1.0
-k r
-
-Result:
-1: 0.636988102539
-#+END_EXAMPLE
-
-OK, how about number between -50 and 50? For that we need to use what calc calls
-an interval form:
-
-#+BEGIN_EXAMPLE
-[ (Starts interval form)
-50 (You can't just type -50 in calc)
-n (negate, givint -50)
-.. (the middle part of the interval form)
-50] (closing the interval form)
-#+END_EXAMPLE
-
-What you see now in calc is:
-#+BEGIN_EXAMPLE
-[-50 .. 50]
-#+END_EXAMPLE
-And you could have just typed it in with:
-#+BEGIN_EXAMPLE
-'[-50 .. 50]
-#+END_EXAMPLE
-which would be a lot easier, really.
-
-#+BEGIN_EXAMPLE
-k r
-#+END_EXAMPLE
-This produces a random number from the bounds of the interval, in this case both
--50 and 50 are possible, if you wanted them to be exlusive bounds, you'd use the
-form =(-50 .. 50)=.
-
-Finally, you can re-arrange a list:
-#+BEGIN_EXAMPLE
-'[1 2 3 4] (our starting vector)
--1 (signals to use the vector above, could also be the size of the vector)
-k h
-
-Result:
-1: [3, 1, 4, 2]
-#+END_EXAMPLE
-
-But =k a= will not give you more variants, unfortunately.
-
-*** Unit Conversion
-
-You load 16 tons, and what do you get? I mean, in kilograms.
-
-#+BEGIN_EXAMPLE
-M-x calc
-' 16 tons (' to enter algebraic mode, so you can type out the units)
-u c kg (u c for "unit convert", and kg being the target unit).
-
-Result:
-1: 14514.95584 kg
-#+END_EXAMPLE
-
-Calc treats units as special. If you added something, such as:
-
-#+BEGIN_EXAMPLE
-3
-+
-
-Result:
-1: 14514.95584 kg + 3
-#+END_EXAMPLE
-
-But you can remove the units from the above using:
-#+BEGIN_EXAMPLE
-u r (remove units)
-
-Result:
-1: 14517.95584
-#+END_EXAMPLE
-
-OK, that's all well and good. But I've always wondered how much is Grandpa
-Simpson's gas mileage when he said "My car gets 40 rods to the hogshead and
-that's the way I likes it."
-
-For that, we need to define the units. Calc knows about a lot of units, but
-maybe not the rod and hogshead. In fact, in the calc info pages, defining what a
-"rod" is the example for how to define your own units. Let's get started!
-
-#+BEGIN_EXAMPLE
-'16 ft (The equivalent to one rod)
-u d rod Rod (defines a new unit rod, with optional description "Rod")
-#+END_EXAMPLE
-Now a hogshead is a unit of measurement that varies by what liquid it contains.
-I don't know what the unit is for gasoline, but let's use sherry as a
-substitute, in which a hogshead is 245 liters.
-
-#+BEGIN_EXAMPLE
-'245 liters
-u d hogshead (don't bother with a description this time)
-'40 rod
-'1 hogshead
-/
-#+END_EXAMPLE
-Wait, what units should we be using?
-#+BEGIN_EXAMPLE
-u v (show the units table, a handy table of all units)
-u c mi/gal (the units come from the unit table)
-
-Result:
-1: 1.87280731429e-3 mi / gal
-#+END_EXAMPLE
-
-But wait, we can do better. Why upgrade this measure to something that isn't
-even standard? Miles per gallon is just a bit better than rods per hogshead (in
-fact, that was what the original joke was about).
-
-#+BEGIN_EXAMPLE
-u c si (convert everything to scientific units)
-
-Result:
-1: 796.212244896 / m^2
-#+END_EXAMPLE
-
-Not that I understand this number, but at least in miles per gallon, I can see
-that that's not such great fuel economy, but what you do expect from Grandpa?
-
-OK, one more cool thing, then I'm out of here. Calc can split up numbers into
-multiple units. Here's 42 inches in feet and inches:
-
-#+BEGIN_EXAMPLE
-'42 in
-u c ft+in (Convert to a mixture of feet and inches)
-
-Result:
-1: 3 ft + 6. in
-#+END_EXAMPLE
-
-Calc, you're sooo coool!
-
-*** Pi and Precision
-
-This one's about p and P and mostly about pi.
-
-First, let's pi it up:
-
-#+BEGIN_EXAMPLE
-M-x calc
-P (this gives you pi)
-
-Result:
-1: 3.14159265359
-#+END_EXAMPLE
-
-Well, I guess that's a reasonable pi. But, c'mon, this is calc. Can't we get a
-bit more digits? How about 100?
-
-#+BEGIN_EXAMPLE
-p 100 (sets precisions to 100)
-P (need to ask calc again for pi, it doesn't recalculate)
-
-Result:
-1: 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068
-#+END_EXAMPLE
-
-Well, but actually evaluating it robs it of its never-ending charm. Let's just
-use it as a variable. How about calculating the area of a circle with a 5 km
-radius?
-
-#+BEGIN_EXAMPLE
-'5000 m
-2
-^
-'pi (enter pi as a variable)
-*
-
-We get:
-1: 25000000 m^2 pi
-#+END_EXAMPLE
-
-Yeah, sure that’s what I said I wanted, but I’ve changed my mind - now I want a number.
-
-#+BEGIN_EXAMPLE
-=
-
-1: 78539816.3397448309615660845819875721049292349843776455243736148076954101571552249657008706335529267 m^2
-#+END_EXAMPLE
-
-Whoops, looked like I forgot to set the precision back to normal. And I can't
-read this. Let's make it a bit nicer.
-
-#+BEGIN_EXAMPLE
-Control-_ (normal emacs undo)
-p 7
-d g (turn digit grouping on)
-=
-
-Result:
-1: 7.853983e7 m^2
-#+END_EXAMPLE
-
-Oh, that's because I didn't have enough precision to render it without resorting
-to scientific notation. Let's just bump the precision up again.
-
-#+BEGIN_EXAMPLE
-Control-_ (undo, since we have to redo the pi conversion with more precision)
-p 10
-=
-
-Result:
-1: 78,539,816.35 m^2
-#+END_EXAMPLE
-
-Ah, that's better.
-
-*** Strings
-
-Did you know you could work with strings in calc? For an example, let's find out
-what "Hello world" is in binary:
-
-#+BEGIN_EXAMPLE
-M-x calc
-d 2 (change the to binary mode)
-"Hello world (Enter the string "Hello world" which turns into a vector of numbers)
-
-Result:
-1: [2#1001000, 2#1100101, 2#1101100, 2#1101100, 2#1101111, 2#100000, 2#1110111, 2#1101111, 2#1110010, 2#1101100, 2#1100100]
-#+END_EXAMPLE
-
-And similarly, we can convert back. If someone gave you the binary number:
-=01001000011011110110110001100001= and asked what the string was, I'd have no
-idea... but calc knows:
-
-#+BEGIN_EXAMPLE
-d " (changes to string mode)
-C-x b scratch (whaaa, leave calc?)
-01001000011011110110110001100001 (enter the number we're parsing)
-C-a (go to the start of the line)
-C-x ( (start a macro)
-2# (prefix the number with a binary indicator)
-C-u 8 C-f (Jump forward 8 characters)
- (insert a space to separate the numbers)
-C-x ) (end the macro)
-C-x e (repeat the macro)
-e e (repeat twice twice more)
-C- (set mark)
-C-a (goto beginning of line)
-C-x g (copy region into calc)
-
-Result:
-
-1: "Hola"
-#+END_EXAMPLE
-
-And there you have it! Maybe there is an easier way to convert from the giant
-binary number to a vector of bytes, but I don't know it yet.
-
-*** Fractional Arithmetic
-
-This one is pretty short, but it's about one of my favorite features of calc:
-the ability to handle fractions as fractions instead of rendering them as real
-numbers.
-
-Quick, what's =5/8 + 9/21=?
-
-Um, ok... better start multiplying things... wait, let's just tell calc to do
-it.
-
-#+BEGIN_EXAMPLE
-M-x calc
-5:8 (this is how you enter a fraction)
-9:21
-+
-
-Result:
-1: 59/56
-#+END_EXAMPLE
-
-So easy! If we want to convert it to a float you can do this:
-
-#+BEGIN_EXAMPLE
-c f (convert to
-float)
-
-Result:
-
-1: 1.05357142857*10.^0
-#+END_EXAMPLE
-
-And if you want it back as a fraction, then just do:
-
-#+BEGIN_EXAMPLE
-c F (convert to fraction)
-
-Result:
-
-1: 59/56
-#+END_EXAMPLE
-
-That's so awesome!
-
-You could also enter fractions this way:
-
-#+BEGIN_EXAMPLE
-m f (set fraction mode, integer division will result in fractions)
-5
-8
-/
-
-Result:
-
-1: 5/8
-#+END_EXAMPLE
-
-Now you can live in the nice world of fractions as much as you like. It's a nice
-world, full of pleasant to look at integers taking up little horizontal space
-
-*** Algebra
-
-I think it's time to write about one of the amazing things that calc can do:
-algebra!
-
-Before we get into how to solve equations, I just want to write about on some
-cool things you can do with the calc display.
-
-Let's say you have a formula you want to work with =a + sqrt(b) = 5=. Let's enter
-that into calc:
-
-#+BEGIN_EXAMPLE
-M-x calc
-'a + sqrt(b) = 5 (' starts algebraic mode).
-
-Result:
-1: a + sqrt(b) = 5
-#+END_EXAMPLE
-
-Well, that's not so surprising, that's what we put in. Kind of disappointing,
-though. Is that it calc? We love your brains, but what about your looks? That's
-important too!
-
-#+BEGIN_EXAMPLE
-d B (turn on calc-big-language mode)
-
-Result:
- ___
-1: a + V b = 5
-#+END_EXAMPLE
-
-Hey, that's an ASCII square-root symbol. What other cool things can you do here?
-
-#+BEGIN_EXAMPLE
-a^2
-
-Result:
-
- 2
-1: a
-
-3:4 (enter the fraction 3/4)
-
-Result:
-
- 3
-1: -
- 4
-#+END_EXAMPLE
-
-Here's how to get back:
-#+BEGIN_EXAMPLE
-d N (calc-normal-language)
-#+END_EXAMPLE
-
-And an alternative, in which all operators are explicitly represented as
-functions:
-
-#+BEGIN_EXAMPLE
-1: a + sqrt(b) = 5 (re-enter the formula)
-d U (calc-unformatted-language)
-
-Result:
-1: eq(add(a, sqrt(b)), 5)
-#+END_EXAMPLE
-
-But, wait, did you think that's all? What if you wanted to enter that equation
-in Mathematica?
-
-#+BEGIN_EXAMPLE
-d M (calc-mathematica-language)
-
-Result:
-
-1: a + Sqrt[b] == 5
-#+END_EXAMPLE
-
-Ooh! Calc! Do c++ next!
-
-#+BEGIN_EXAMPLE
-d C (calc-c-language)
-
-1: a + sqrt(b) == 5
-#+END_EXAMPLE
-
-Latex!
-
-#+BEGIN_EXAMPLE
-d L (calc-latex-language)
-
-Result:
-
-1: a + \sqrt{b} = 5
-#+END_EXAMPLE
-
-I could keep going, but trust me, there's more. And you can even define your own
-languages by constructing syntax tables, but I won't get into that now.
-
-*** More on Algebra
-
-Jim is 42 years old. He has one brother, and their total age is 100. What is the
-brother's age? OK, this isn't a very hard problem, but let's just introduce calc
-algebra by solving it.
-
-#+BEGIN_EXAMPLE
-M-x calc
-'42 + x = 100 (' to enter algebraic input)
-a S x (solve for x)
-
-Result:
-1: x = 58
-#+END_EXAMPLE
-
-Let's make this harder. Jim and Dan's ages sum to 100. Jim is 5 years older than
-Dan. How old are they?
-
-#+BEGIN_EXAMPLE
-'[j + d = 100, d + 5 = j]
-a S j,d
-
-Result:
-1: [j = 52.5, d = 47.5]
-#+END_EXAMPLE
-
-Nice!
-
-And of course it can give you more than just numerical solutions:
-
-#+BEGIN_EXAMPLE
-'sin(x) + tan(y) = pi / 2
-a S y (solve for y)
-
-Result:
-1: y = arctan(pi / 2 - sin(x))
-#+END_EXAMPLE
-
-Sometimes there are more than one solution. For example:
-#+BEGIN_EXAMPLE
-'x^2 = 25
-a S x
-
-Result:
-1: x = 5
-#+END_EXAMPLE
-
-Wait, what happened to -5! That's a valid solution, why didn't calc tell us
-about it? What's happening here is that calc is telling us about the first valid
-thing it can find, which is basically how it operates. But you can always get
-everything:
-
-#+BEGIN_EXAMPLE
-'x^2 = 25
-a P x (find the polynomial solutions)
-
-Result:
-1: [5, -5]
-#+END_EXAMPLE
-
-Sometimes there aren't a finite number of results because you aren't dealing
-with polynomials. You can just get a generalized solution:
-
-#+BEGIN_EXAMPLE
-'sin(x)^2 = 25
-H a S x (solve for x, giving the generalized solution)
-
-Result:
-1: x = arcsin(5 s1) (-1)^n1 + 180 n1
-#+END_EXAMPLE
-
-This uses the calc notation =n1=, which you just means any integer. You can also
-see another notation =s1= which means any sign. In this case =5 s1= means that that
-number can be 5 or -5.
-
-Looking at how awesome calc is, it's just a shame I never knew about it in high
-school...
-
-*** Financial
-
-I recently chatted with emacspeak creator T.V. Raman, and told him I was
-writing a series of short tutorials about calc. He is really a calc fanatic, and
-told me a story in which he astounded a loan officer by calculating scheduled
-loan payments with just a few keystrokes in calc. Raman is living proof that
-calc is a useful tool for so many situations, and it always pays to have emacs
-running. He also mentioned that he found the explanation in the calc tutorial
-about the financial functions to be the clearest he's ever read.
-
-So, yes, calc can do finance. Let's say that you were sitting in front of a loan
-officer, and she told you that for your loan of $500,000, you need to pay in 30
-installments with a 5% interest rate. How much do you need to pay each month?
-Wait a second! Stop right there, loan officer! I have calc!
-
-#+BEGIN_EXAMPLE
-M-x calc
-500000 (the amount of the loan)
-30 (the number of payments)
-'5% (equivalent to typing 0.05)
-b M (calc-fin-pmt, computing the amount of periodic payments to amortize a loan)
-
-Result:
-1: 25,000
-#+END_EXAMPLE
-
-OK, but that's a bit obvious, since $25,000 is just 5% of $500,000. If the
-number of payments was much smaller, we'd get a larger value. Let's take another
-question: if you wanted to only pay $10,000 in each installment? How many
-installments would it take to pay off the loan?
-
-#+BEGIN_EXAMPLE
-'5%
-10000 (the payment we want to make)
-500000 (the loan amount)
-b # (calc-fin-nper, calculate the number of installments needed)
-
-Result
-1: nper(0.05, 10,000, 500,000)
-#+END_EXAMPLE
-
-What? Oh, I see, I also go the message: "Payment too small to cover interest
-rate: 10000". Oh, right, 5% of $500,000 is already $25,000, so we'd never pay it
-off at that rate. What if we payed $50,000 instead?
-
-#+BEGIN_EXAMPLE
-'5%
-50000 (the payment we want to make)
-500000 (the loan amount)
-b #
-
-Result:
-1: 14.2066908
-#+END_EXAMPLE
-
-So, it would take just over 14 payments to pay off the loan.
-
-OK, one more cool one: Let's say you meet an investment banker who gives you the
-following deal. I've got a investment for you, she says. Just give me $100,000
-and I'll give you $10,000 at the end of each year for the next 12 years.
-Assuming the interest rate will stay at 3% for the next 12 years. Is it a good
-deal?
-
-Hey, what are you asking me for? I have no idea! Calc knows, though, because it
-can tell you the break-even point for the cost of an investment that gives
-periodic payments.
-
-#+BEGIN_EXAMPLE
-'3% (the interest rate)
-12 (the number of payments)
-10000 (the payment you get each time)
-b P (calc-fin-pv, calculate the "present value" of the investment, the break-even point for the investment)
-
-Result:
-1: 99,540.0399357
-#+END_EXAMPLE
-
-In other words, the break-even point for the initial cost is $99,540. If the
-investment costs more than this, it's no good at that assumed interest rate.
-Better reject the deal. Trust calc more than any investment banker.
-
-This is just a small sampling of some of the financial calculations that calc
-can perform. The next time you are making an investment, fire up calc. You'll
-not only have confidence in the deal, you may just amaze someone with the power
-of emacs, just like T.V. Raman did.
-
-*** Calculus
-
-Quick, integrate =2x + sin(y)=! Well, frankly, it's been so long since I've done
-calculus by hand I can't remember anymore. Well, knowing calculus is good, but
-knowing calc is even more useful!
-
-#+BEGIN_EXAMPLE
-M-x calc
-'2x + sin(y) (The single quote enters algebraic mode)
-a i y (Calculate the integral with respect to y)
-
-Result
-1: 2 x y - 180 cos(y) / pi
-#+END_EXAMPLE
-
-You can also integrate over specific regions by using C-u a i, whereupon it will
-prompt you for the start and end point of the integration.
-
-As the manual mentions, the results are often not as simplified as they could
-be. Calc is impressive, but it isn't as sophisticated as Mathematica.
-
-An example of some issues are if we just take the derivative of the integral we
-just calculated. We should get back to our original formula.
-
-#+BEGIN_EXAMPLE
-a d y (Calculate the derivative with respect to y)
-
-Result:
-1: 2 x + 3.14159265358 sin(y) / pi
-#+END_EXAMPLE
-
-Clearly this should be 2x + sin(y), but calc may have made an error.
-
-OK, let's make calc do something cool so we can forget this unfortunate
-incident. Hey, how about making a Taylor series of a function?
-
-#+BEGIN_EXAMPLE
-'2x + sin(y) (re-enter the formula)
-a t y 6 (Calculate the Taylor series of a term, over y, for 6 terms)
-
-Result:
-1: 2 x + y - y^3 / 6 + y^5 / 120 - y^7 / 5040 + y^9 / 362880
-#+END_EXAMPLE
-
-This isn't a bad approximation, see [[https://www.google.com/search?q=y+-+y%5E3+%2F+6+%2B+y%5E5+%2F+120+-+y%5E7+%2F+5040+%2B+y%5E9+%2F+362880][Google’s answer]] for comparison.
-
-So, yes, calc can do college-level math, even if the answers aren't perfectly
-simplified. It's not Mathematica, but it is free and integrated into emacs, so
-it's definitely nice to have.
-
-*** Bit Manipulation
-
-Quick! What bits are set on the number 925817? What, are you going to convert it
-to binary and note positions of 1s? Ha! I laugh at such primitive techniques.
-
-#+BEGIN_EXAMPLE
-M-x calc
-925817
-b u (unpack the bits into a vector)
-
-Result
-1: [0, [3 .. 6], 13, [17 .. 19]]
-#+END_EXAMPLE
-
-How many bits is that?
-
-#+BEGIN_EXAMPLE
-v # (count the number of items in a vector)
-
-Result:
-1: 9
-#+END_EXAMPLE
-
-This is convenient! So yes, calc has some nice functions for binary numbers. The
-interesting thing about calc's binary number functions aren't just that you can
-do bitwise operations such as AND and OR, but it has the notion of a word size
-that it works with. Well, it'd have to do things like NOT.
-
-Let's check it out. First, we'll see what the number 925817 looks like in binary.
-
-#+BEGIN_EXAMPLE
-925817
-d 2
-
-Result:
-1: 2#11100010000001111001
-#+END_EXAMPLE
-
-This is nice, but it'd be better to see the whole word.
-
-#+BEGIN_EXAMPLE
-d z (Display leading zeroes)
-
-Result:
-1: 2#00000000000011100010000001111001
-#+END_EXAMPLE
-
-Ah, that's more like it. The word size by default is 32 bits, as you can see.
-Or, wait, can you see? Hard to count. Let's verify it.
-
-#+BEGIN_EXAMPLE
-d 0 (go back to base-10 mode)
-0 (we start with 0)
-b n (calculate the not)
-
-Result:
-1: 4294967295
-#+END_EXAMPLE
-
-Now we already know how to count the 1's...
-
-#+BEGIN_EXAMPLE
-b u v #
-
-Reuslt:
-
-1: 0000000032
-#+END_EXAMPLE
-
-Whoops, looks like we still have leading 0s. But we've confirmed it, so let's just let it go for now.
-
-Now, let's see what the number 925817 is if you reverse all the bits. I can't
-take credit for this particular bit of cleverness, this technique comes straight
-from calc's info pages.
-
-#+BEGIN_EXAMPLE
-d z (get rid of leading 0s)
-925817
-b u (unpack into a vector)
-31 - (tranform each bit position by subtracting it from 31, the tab just switches the items around on the stack)
-b p (repack the vector)
-
-Result:
-1: 2651090944
-#+END_EXAMPLE
-
-Woody Allen once praised New York by saying how he loves that you can go to
-Chinatown and eat a crab in the middle of the night, but in reality what kind of
-crazy person would need to do that? I feel the same way about all these
-features. Will I really ever need to reverse the bits of a number? Not sure, but
-I do love the way that calc has me covered for whatever I really want to do.
-
-By the way, want to go to 64-bit mode? Just change the word size.
-
-#+BEGIN_EXAMPLE
-b w 64 (change the word size to 64)
-#+END_EXAMPLE
-
-Now let's reverse the bits of 925817 again to see what we get. It'll be
-amusingly huge!
-
-#+BEGIN_EXAMPLE
-925817
-b u (unpack into a vector)
-63 - (tranform each number by subtracting it from 31, the tab just switches the items around on the stack)
-b p (repack the vector)
-
-Result:
-1: 11386348903201767424
-#+END_EXAMPLE
-
-Ah, that's what it was. I was just about to give that same answer myself.
-
-One more cool thing. If you give a negative word size, calc will interpret
-binary number as 2's complement numbers. For example:
-
-#+BEGIN_EXAMPLE
-b w 32 (set the word size to 32)
-2 (just to choose a simple number)
-b n (bitwise not)
-
-Result:
-1: 4294967293
-#+END_EXAMPLE
-
-And now with 2's complement!
-
-#+BEGIN_EXAMPLE
-b w -32 (set the word size to -32, in other words, a 2's complement version of 32 bit)
-2
-b n
-
-Result:
-1: -3
-#+END_EXAMPLE
-
-Hope this helps you twiddle those bits in all the ways that make you happy.