From: Preston Pan Date: Thu, 25 Jan 2024 03:26:59 +0000 (-0800) Subject: new content X-Git-Url: https://ret2pop.net/gitweb/monorepo.git?a=commitdiff_plain;h=a7da57c0736bec58d1fc4ec99d211099c31bb45f;p=monorepo.git new content --- diff --git a/LICENSE.org b/LICENSE.org index df18b21..0c2a051 100644 --- a/LICENSE.org +++ b/LICENSE.org @@ -5,7 +5,7 @@ #+date: <2023-06-11 Sun> #+language: en -Copyright © 2023 Preston Pan +Copyright © 2024 Preston Pan Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/about.org b/about.org index a3b3b9c..fe95fea 100644 --- a/about.org +++ b/about.org @@ -5,20 +5,33 @@ #+language: en #+OPTIONS: broken-links:t #+date: <2023-06-26 Mon> +#+html_head: +#+html_head: +#+html_head: +#+html_head: +#+html_head: +#+html_head: +#+html_head: * About Me -Some might know me as ret2pop, some as Preston Pan, and -others as [[https://preston.nullring.xyz][LiCoO2]]. +** whoami? +[[https://preston.nullring.xyz][Preston Pan]]. Although, that is not really important for the enjoyment of ret2pop, and +it is certainly not the focus at all. Ret2pop is a separate entity, controlled only +by the will of Francois. Ret2pop is a relentlessly curious force willing to entertain +ideas that are unconventional and unorthodox; Preston Pan is the individual that tries +to live this out and fails in a somewhat cringy manner. +Some might know me as ret2pop, some as Preston Pan, and others as LiCoO2. ** Contact Here are all the methods you should use to contact me: *** IRC - ret2pop on libera.chat - Note: I will not always be online and I don't use a bouncer on this server. Email me to coordinate a time if you really need to reach me this way. -- LiCoO2 on [[https://andrei.rm-r.org/irc][the best irc server]]. *** Email - preston@nullring.xyz - ret2pop@gmail.com +*** Amateur Radio (In case the world ends) +My callsign is ~VE7PPN~. * Professional For now, you should consult [[https://preston.nullring.xyz/about/index.html][my other website]], but I will make diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png new file mode 100644 index 0000000..653f43d Binary files /dev/null and b/android-chrome-192x192.png differ diff --git a/android-chrome-512x512.png b/android-chrome-512x512.png new file mode 100644 index 0000000..864b240 Binary files /dev/null and b/android-chrome-512x512.png differ diff --git a/apple-touch-icon.png b/apple-touch-icon.png new file mode 100644 index 0000000..1e3ed09 Binary files /dev/null and b/apple-touch-icon.png differ diff --git a/browserconfig.xml b/browserconfig.xml new file mode 100644 index 0000000..b3930d0 --- /dev/null +++ b/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/config/doom.org b/config/doom.org index 480c4c6..5e77b70 100644 --- a/config/doom.org +++ b/config/doom.org @@ -32,84 +32,92 @@ To display the battery percentage: #+begin_src emacs-lisp :tangle yes (display-battery-mode 1) #+end_src +** Transparency +Let's make emacs transparent. +#+begin_src emacs-lisp :tangle yes +(set-frame-parameter nil 'alpha-background 90) + +(add-to-list 'default-frame-alist '(alpha-background . 90)) +#+end_src ** EXWM First we load our packages: #+begin_src emacs-lisp :tangle yes -(use-package! exwm) -(use-package! exwm-config) -(exwm-config-example) +;; (use-package! exwm) +;; (use-package! exwm-config) +;; (exwm-config-example) #+end_src Now, we set our keybindings: #+begin_src emacs-lisp :tangle yes -(setq exwm-input-global-keys - `( - ([?\s-r] . exwm-reset) - ([?\s-w] . exwm-workspace-switch) - ,@(mapcar (lambda (i) - `(,(kbd (format "s-%d" i)) . - (lambda () - (interactive) - (exwm-workspace-switch-create ,i)))) - (number-sequence 0 9)) - ([?\s-&] . (lambda (command) - (interactive (list (read-shell-command "$ "))) - (start-process-shell-command command nil command))) - - ([?\s-d] . (lambda () - (interactive) - (dired default-directory))) - - ([?\s-f] . (lambda () - (interactive) - (exwm-layout-toggle-mode-line) - (exwm-workspace-toggle-minibuffer))) - - ([?\s-b] . exwm-workspace-switch-to-buffer) - - - ([?\s-w] . (lambda () - (interactive) - (start-process "" nil "qutebrowser"))) - ([?\s-n] . (lambda () - (interactive) - (start-process "" nil "nyxt"))) - ([?\s-k] . (lambda () - (interactive) - (start-process "" nil "krita"))) - ([?\s-g] . (lambda () - (interactive) - (start-process "" nil "gimp"))) - ([?\s-b] . (lambda () - (interactive) - (start-process "" nil "blender"))) - ([?\s-c] . (lambda () - (interactive) - (start-process "" nil "chromium"))) - ([s-f2] . (lambda () - (interactive) - (start-process "" nil "/usr/bin/slock"))))) +;; (setq exwm-input-global-keys +;; `( +;; ([?\s-r] . exwm-reset) +;; ([?\s-w] . exwm-workspace-switch) +;; ,@(mapcar (lambda (i) +;; `(,(kbd (format "s-%d" i)) . +;; (lambda () +;; (interactive) +;; (exwm-workspace-switch-create ,i)))) +;; (number-sequence 0 9)) +;; ([?\s-&] . (lambda (command) +;; (interactive (list (read-shell-command "$ "))) +;; (start-process-shell-command command nil command))) + +;; ([?\s-d] . (lambda () +;; (interactive) +;; (dired default-directory))) + +;; ([?\s-f] . (lambda () +;; (interactive) +;; (exwm-layout-toggle-mode-line) +;; (exwm-workspace-toggle-minibuffer))) + +;; ([?\s-b] . exwm-workspace-switch-to-buffer) + + +;; ([?\s-w] . (lambda () +;; (interactive) +;; (start-process "" nil "qutebrowser"))) +;; ([?\s-n] . (lambda () +;; (interactive) +;; (start-process "" nil "nyxt"))) +;; ([?\s-k] . (lambda () +;; (interactive) +;; (start-process "" nil "krita"))) +;; ([?\s-g] . (lambda () +;; (interactive) +;; (start-process "" nil "gimp"))) +;; ([?\s-b] . (lambda () +;; (interactive) +;; (start-process "" nil "blender"))) +;; ([?\s-c] . (lambda () +;; (interactive) +;; (start-process "" nil "chromium"))) +;; ([s-f2] . (lambda () +;; (interactive) +;; (start-process "" nil "/usr/bin/slock"))))) #+end_src And we also need to set up our media keys: #+begin_src emacs-lisp :tangle yes -(exwm-input-set-key (kbd "") 'emms-next) -(exwm-input-set-key (kbd "") 'emms-previous) -(exwm-input-set-key (kbd "") 'emms-pause) -(exwm-input-set-key - (kbd "") - (lambda () - (interactive) (start-process-shell-command - "pactl" nil "pactl set-sink-volume 0 +5% && pactl set-sink-volume 1 +5%"))) -(exwm-input-set-key - (kbd "") - (lambda () - (interactive) (start-process-shell-command - "pactl" nil "pactl set-sink-volume 0 -5% && pactl set-sink-volume 1 -5%"))) -(exwm-input-set-key - (kbd "") - (lambda () - (interactive) (start-process-shell-command - "pactl" nil "pactl set-sink-mute 0 toggle && pactl set-sink-mute 1 toggle"))) +;; (exwm-input-set-key (kbd "") 'emms-next) +;; (exwm-input-set-key (kbd "") 'emms-previous) +;; (exwm-input-set-key (kbd "") 'emms-pause) +;; (exwm-input-set-key +;; (kbd "") +;; (lambda () +;; (interactive) (start-process-shell-command +;; "pactl" nil "pactl set-sink-volume 0 +5% && pactl set-sink-volume 1 +5%"))) +;; (exwm-input-set-key +;; (kbd "") +;; (lambda () +;; (interactive) (start-process-shell-command +;; "pactl" nil "pactl set-sink-volume 0 -5% && pactl set-sink-volume 1 -5%"))) +;; (exwm-input-set-key +;; (kbd "") +;; (lambda () +;; (interactive) (start-process-shell-command +;; "pactl" nil "pactl set-sink-mute 0 tog +;; gle && pactl set-sink-mute 1 toggle"))) ;; Things to implement in exwm: ;;Key([], 'XF86MonBrightnessUp', lazy.spawn("light -A 10")), ;;Key([], 'XF86MonBrightnessDown', lazy.spawn("light -U 10")), @@ -118,24 +126,26 @@ And we also need to set up our media keys: ** Font Now we configure fonts: #+begin_src emacs-lisp :tangle yes -(setq doom-font (font-spec :family "FiraCode Nerd Font" :size 14 :weight 'semi-light) - doom-variable-pitch-font (font-spec :family "Fira Sans" :size 14) - doom-unicode-font (font-spec :family "Symbola" :size 14) - doom-serif-font (font-spec :family "Fira Sans" :size 14) - doom-big-font (font-spec :family "FiraCode Nerd Font" :size 28)) +(setq doom-font (font-spec :family "Hack" :size 16 :weight 'semi-light) + doom-variable-pitch-font (font-spec :family "Fira Sans" :size 16) + doom-unicode-font (font-spec :family "Symbola" :size 16) + doom-serif-font (font-spec :family "Fira Sans" :size 16) + doom-big-font (font-spec :family "Hack" :size 28)) #+end_src ** Color Scheme I'm experimenting with many themes right now. One of these themes is the city-lights theme, another one of them is the catppuccin theme. #+begin_src emacs-lisp :tangle yes -(setq doom-theme 'doom-ayu-light) -;; (setq doom-theme 'doom-rouge) +;; (setq doom-theme 'doom-ayu-light) +(setq doom-theme 'doom-miramare) ;; (setq catppuccin-flavor 'mocha) +;; (load-theme 'catppuccin) #+end_src ** Doom Module and Programs Configuration *** Agenda Now we add these two files to our agenda search path: #+begin_src emacs-lisp :tangle yes +(require 'org-habit) (setq org-agenda-files (list "~/org/agenda.org" "~/org/contacts.org" "~/org/notes.org")) @@ -148,23 +158,29 @@ And we also want to set up org-habit to start graphing our habits as soon as pos *** IRC Set up circe to connect to my bouncer: #+begin_src emacs-lisp :tangle yes -(after! circe - (set-irc-server! "nullring.xyz" - `(:tls t - :port 4095 - :nick "LiCoO2/AndreiNet" - :user "LiCoO2/AndreiNet" - :pass ,(+pass-get-secret "ZNC")))) +;; (after! circe +;; (set-irc-server! "nullring.xyz" +;; `(:tls t +;; :port 4095 +;; :nick "LiCoO2/AndreiNet" +;; :user "LiCoO2/AndreiNet" +;; :pass ,(+pass-get-secret "ZNC")))) #+end_src And another to connect to libera: #+begin_src emacs-lisp :tangle yes -(set-irc-server! "irc.libera.chat" +(after! circe (set-irc-server! "irc.libera.chat" `(:tls t :port 6697 :nick "ret2pop" :sasl-username "ret2pop" :sasl-password (lambda (&rest _) (+pass-get-secret "libera.chat")) - :channels ("#emacs" "#rwx"))) + :channels ("#emacs" "#rwx")))) +#+end_src +#+begin_src emacs-lisp :tangle yes +(after! circe (set-irc-server! "nullring.xyz" + `(:tls t + :port 6697 + :nick "LiCoO2"))) #+end_src *** Email In order to use this configuration, you must install and configure mu and mbsync. @@ -210,6 +226,7 @@ We want the default search engine of eww to be google because duckduckgo is bad: (setq search-engine-default "google") (setq eww-search-prefix "https://google.com/search?q=") +(setq browse-url-secondary-browser-function 'browse-url-generic browse-url-generic-program "qutebrowser") (setq browse-url-browser-function 'eww-browse-url) (add-hook 'eww-mode-hook (lambda () (local-set-key (kbd "y Y") #'eww-copy-page-url))) @@ -218,11 +235,41 @@ We want the default search engine of eww to be google because duckduckgo is bad: In order to use this configuration, you must have mpd configured to use the same directory. We automatically connect to mpd. #+begin_src emacs-lisp :tangle yes +(emms-all) +(setq emms-source-file-default-directory (expand-file-name "~/music/")) (setq emms-player-mpd-music-directory "~/music/") +(setq emms-player-mpd-server-name "localhost") +(setq emms-player-mpd-server-port "6600") (setq emms-player-list '(emms-player-mpd)) -(emms-all) +(add-to-list 'emms-info-functions 'emms-info-mpd) +(add-to-list 'emms-player-list 'emms-player-mpd) (emms-player-mpd-connect) #+end_src +** Keybindings +Now we set up our keybindings for our applications: +#+begin_src emacs-lisp :tangle yes +(map! :leader + :desc "Open irc" + "i c" #'circe) +(map! :leader + :desc "Open audio manager" + "m m" #'emms) +(map! :leader + :desc "Open RSS feed reader" + "r s" #'elfeed) +(map! :leader + :desc "Open password manager" + "p w" #'ivy-pass) +(map! :leader + :desc "Open dictionary program" + "d i" #'dictionary) +(map! :leader + :desc "Open rtorrent frontend" + "r t" #'mentor) +(map! :leader + :desc "Open eww web browser" + "e w" #'eww) +#+end_src *** Journal First we set the journal to be in the website directory: #+begin_src emacs-lisp :tangle yes @@ -241,6 +288,7 @@ And then we add the headers needed to export the journal automatically: (`yearly "#+TITLE: Yearly Journal\n#+STARTUP: folded")))) (setq org-journal-file-header 'org-journal-file-header-func) +(setq org-export-with-section-numbers nil) (setq org-journal-file-format "%Y%m%d.org") #+end_src To add everything to the agenda search path, we toggle: @@ -276,13 +324,12 @@ In order to publish my website, we need to configure emacs to publish it somewhe :auto-preamble t) ("website-static" :base-directory "~/org/website" - :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf" + :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf\\|ico" :publishing-directory "~/website_html/" :recursive t :publishing-function org-publish-attachment) - ("website" :components ("website-org" "website-static")))) - - + ("website" :auto-sitemap t :components ("website-org" "website-static")))) +(setq org-html-postamble "Copyright (c) 2024 Preston Pan") #+end_src *** Contacts Now we configure org-contacts, which allows me to store contacts in an org mode file: @@ -308,31 +355,6 @@ Sometimes I want a timer to help me keep track of the time. #+begin_src emacs-lisp :tangle yes (setq org-clock-sound "~/audio/ding.wav") #+end_src -** Keybindings -Now we set up our keybindings for our applications: -#+begin_src emacs-lisp :tangle yes -(map! :leader - :desc "Open irc" - "i c" #'circe) -(map! :leader - :desc "Open audio manager" - "m m" #'emms) -(map! :leader - :desc "Open RSS feed reader" - "r s" #'elfeed) -(map! :leader - :desc "Open password manager" - "p w" #'ivy-pass) -(map! :leader - :desc "Open dictionary program" - "d i" #'dictionary) -(map! :leader - :desc "Open rtorrent frontend" - "r t" #'mentor) -(map! :leader - :desc "Open eww web browser" - "e w" #'eww) -#+end_src ** External Packages we want to include some packages that don't come with doom emacs. *** KBD-Mode @@ -393,9 +415,26 @@ We use ednc to manage notifications. #+end_src *** Mastodon #+begin_src emacs-lisp :tangle yes -(setq mastodon-instance-url "https://types.pl" - mastodon-active-user "ret2pop") +(setq mastodon-instance-url "https://types.pl") +(setq mastodon-active-user "ret2pop") +#+end_src +*** Ement +#+begin_src emacs-lisp :tangle yes +;; (ement-connect :uri-prefix "http://localhost:8009") #+end_src +*** Stem +I wrote a [[https://github.com/ret2pop/stem-mode][major mode]] for my programming language [[https://github.com/ret2pop/stem][stem]]. +#+begin_src emacs-lisp :tangle yes +(use-package stem-mode) +(add-to-list 'auto-mode-alist '("\\.stem\\'" . stem-mode)) +#+end_src +*** Tufte +Our website uses the tufte css styling and we must therefore tell emacs to generate html that is compliant with this html: +#+begin_src emacs-lisp +(use-package! ox-tufte) +(use-package! plan9-theme) +#+end_src + * packages.el Configuration These are some external packages that I use that are not provided by doom modules. #+begin_src emacs-lisp :tangle packages.el @@ -424,6 +463,8 @@ These are some external packages that I use that are not provided by doom module (package! go-translate) (package! ts) (package! chess) +(package! ox-tufte) +(package! plan9-theme) #+end_src * init.el Configuration @@ -552,7 +593,7 @@ This installs all the doom modules that we are going to be configuring: ;;gdscript ; the language you waited for (go +lsp) ;;(graphql +lsp) ; Give queries a REST - ;;(haskell +lsp) ; a language that's lazier than I am + (haskell +lsp) ; a language that's lazier than I am ;;hy ; readability of scheme w/ speed of python ;;idris ; a language you can depend on (json +lsp) @@ -584,7 +625,7 @@ This installs all the doom modules that we are going to be configuring: (scheme +guile) (sh +fish +lsp) ;;sml - ;;solidity ; do you need a blockchain? No. + solidity ; do you need a blockchain? No. ;;swift ; who asked for emoji variables? ;;terra ; Earth and Moon in alignment for performance. (web +lsp) diff --git a/config/elfeed.org b/config/elfeed.org index ca942ea..94fdbf5 100644 --- a/config/elfeed.org +++ b/config/elfeed.org @@ -18,6 +18,8 @@ Here are some interesting blogs, many of which are from substack. ** News :news: These are the news articles that I subscribe to. Some of these are politics related but I mostly just want to inform myself about technology subjects. +*** https://www.wired.com/feed/tag/ai/latest/rss +*** https://www.wired.com/feed/category/science/latest/rss *** https://feeds.washingtonpost.com/rss/politics?itid=lk_inline_manual_2 *** https://news.ycombinator.com/rss diff --git a/config/qtile.org b/config/qtile.org index 04bcb12..537bab5 100644 --- a/config/qtile.org +++ b/config/qtile.org @@ -30,7 +30,7 @@ import subprocess mod = "mod4" -terminal = guess_terminal() +terminal = "kitty" wl_import_rules = None auto_minimize = True wmname = "LG3D" @@ -38,8 +38,9 @@ wmname = "LG3D" ** Hex Colors We then load the catppuccin colors for the bar and window borders. #+begin_src python :tangle config.py -def get_colors(): - return [ +def get_colors(theme): + if theme == "city-lights": + return [ # Normal colors '#45475a', '#f38ba8', @@ -65,8 +66,33 @@ def get_colors(): # foreground '#cdd6f4', ] + elif theme == "gruvbox": + return [ + # normal colors + '#282828', + '#cc241d', + '#98971a', + '#d79921', + '#458588', + '#b16286', + '#689d6a', + '#a89984', + #bright colors + '#928374', + '#fb4934', + '#b8bb26', + '#fabd2f', + '#83a598', + '#d3869b', + '#8ec07c', + '#ebdbb2', + # background + '#282828', + # foreground + '#ebdbb2', + ] -colors = get_colors() +colors = get_colors("gruvbox") #+end_src ** Keybindings The _keys_ variable is going to be our final list of keybindings. We start by initializing it @@ -123,6 +149,7 @@ keys.extend([ Key([mod], "g", lazy.spawn("gimp"), desc="Run GIMP"), Key([mod], "t", lazy.spawn("torbrowser-launcher"), desc="Run Tor Browser"), Key([mod], "i", lazy.spawn("emacsclient --eval \"(emacs-everywhere)\""), desc="Emacs Everywhere!"), + Key([mod], "d", lazy.spawn("dmenu_run"), desc="dmenu"), ]) #+end_src *** XF86 @@ -173,7 +200,7 @@ layouts = [ # layout.Stack(num_stacks=2), # layout.Bsp(), # layout.Matrix(), - # layout.MonadTall(), + layout.MonadTall(border_focus=colors[2], border_normal=colors[0], border_width=4, margin=7), # layout.MonadWide(), # layout.RatioTile(), # layout.Tile(), @@ -195,40 +222,120 @@ widget_defaults = dict( ) extension_defaults = widget_defaults.copy() +# screens = [ +# Screen( +# top=bar.Bar( +# [ +# # widget.CurrentLayout(), +# widget.GroupBox(active=colors[6], inactive=colors[15], this_current_screen_border=colors[4], highlight_colorsr=colors[3]), +# widget.Prompt(), +# widget.WindowName(), +# widget.Chord( +# chords_colors={ +# "launch": ("#ff0000", "#ffffff"), +# }, +# name_transform=lambda name: name.upper(), +# ), +# # widget.StatusNotifier(), + +# widget.Systray(), +# widget.Battery(charge_char="🔋", discharge_char="🔋", full_char="🔋", format="{char} {percent:2.0%}"), +# # widget.TextBox("|", foreground=colors[1]), +# widget.Sep(padding=16, size_percent=80, foreground=colors[1]), +# widget.Clock(format="🕒 %a %I:%M %p"), +# widget.Sep(padding=16, size_percent=80, foreground=colors[1]), +# widget.Mpd2(), +# widget.TextBox(" "), + +# ], +# 24, + +# # border_width=[2, 0, 2, 0], # Draw top and bottom borders +# # border_colorsr=["ff00ff", "000000", "ff00ff", "000000"] # Borders are magenta +# ), +# bottom=bar.Gap(4), +# left=bar.Gap(3), +# right=bar.Gap(3), +# ), +# ] + +def pline(rl, fg, bg): + if rl == 0: + uc = "" + else: + uc = "" + return widget.TextBox(text = uc, + padding = 0, + fontsize = 22, + foreground=fg, + background=bg) + screens = [ Screen( + wallpaper="~/.config/qtile/wallpaper", + wallpaper_mode="fill", top=bar.Bar( [ - # widget.CurrentLayout(), - widget.GroupBox(active=colors[6], inactive=colors[15], this_current_screen_border=colors[4], highlight_color=colors[3]), - widget.Prompt(), - widget.WindowName(), - widget.Chord( - chords_colors={ - "launch": ("#ff0000", "#ffffff"), - }, - name_transform=lambda name: name.upper(), + widget.CurrentLayoutIcon( + scale=0.75, + background=colors[3] ), - # widget.StatusNotifier(), - - widget.Systray(), - widget.Battery(charge_char="🔋", discharge_char="🔋", full_char="🔋", format="{char} {percent:2.0%}"), - # widget.TextBox("|", foreground=colors[1]), - widget.Sep(padding=16, size_percent=80, foreground=colors[1]), - widget.Clock(format="🕒 %a %I:%M %p"), - widget.Sep(padding=16, size_percent=80, foreground=colors[1]), - widget.Mpd2(), - widget.TextBox(" "), + pline(0, colors[3], colors[6]), + widget.GroupBox( + highlight_method="block", + background=colors[6], + this_current_screen_border="#7daea3" + ), + pline(0, colors[6], colors[7]), + widget.TaskList( + highlight_method="block", + max_title_width=300, + border="#d3869b", + padding=2, + background=colors[7] + ), + pline(0, colors[7], colors[0]), + widget.Spacer(), + pline(1, colors[2], colors[0]), + widget.Net( # requires python-psutil + interface="wlp0s20f3", + format="📡 {total}", + update_interval=30, + background=colors[2] + ), + pline(1, colors[5], colors[2]), + widget.Backlight( + format="💡 {percent:2.0%}", + backlight_name="intel_backlight", + background=colors[5] + ), + pline(1, colors[3], colors[5]), + widget.Volume( + emoji=True, + background=colors[3] + ), + widget.Volume( + background=colors[3] + ), + pline(1, colors[4], colors[3]), + widget.BatteryIcon( + background=colors[4] + ), + widget.Battery( + charge_char="now ", + discharge_char="left", + format="{percent:2.0%} {char}", + background=colors[4] + ), + pline(1, colors[1], colors[4]), + widget.Clock( + format="%Y-%m-%d %a %I:%M %p", + background=colors[1] + ), ], - 24, - - # border_width=[2, 0, 2, 0], # Draw top and bottom borders - # border_color=["ff00ff", "000000", "ff00ff", "000000"] # Borders are magenta + 26, ), - bottom=bar.Gap(4), - left=bar.Gap(3), - right=bar.Gap(3), ), ] #+end_src diff --git a/config/qutebrowser.org b/config/qutebrowser.org index 03741b0..1deb37a 100644 --- a/config/qutebrowser.org +++ b/config/qutebrowser.org @@ -18,7 +18,8 @@ We import pathlib to get our home directory. I am experimenting with many themes right now, and one of them is the [[https://github.com/gicrisf/qute-city-lights][city-lights]] theme. Another one I have used is the [[https://github.com/catppuccin/catppuccin][catppuccin]] theme. #+begin_src python :tangle config.py -config.source('themes/qute-city-lights/city-lights-theme.py') +# config.source('themes/qute-city-lights/city-lights-theme.py') +config.source('gruvbox.py') #+end_src ** Variables We need the location of the home directory. @@ -96,7 +97,7 @@ for item in js_blacklist: ** Misc. Doing mundane things like setting the downloads directory to not use an upper case letter. #+begin_src python :tangle config.py -c.downloads.location.directory = "~/downloads" +c.downloads.location.directory = "~/Downloads" #+end_src ** End of Config #+begin_src python :tangle config.py diff --git a/favicon-16x16.png b/favicon-16x16.png new file mode 100644 index 0000000..03a6eec Binary files /dev/null and b/favicon-16x16.png differ diff --git a/favicon-32x32.png b/favicon-32x32.png new file mode 100644 index 0000000..d5eba6e Binary files /dev/null and b/favicon-32x32.png differ diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..2b34bfd Binary files /dev/null and b/favicon.ico differ diff --git a/img/churchill.png b/img/churchill.png new file mode 100644 index 0000000..23003ad Binary files /dev/null and b/img/churchill.png differ diff --git a/img/drawing-old.png b/img/drawing-old.png new file mode 100644 index 0000000..d2907a4 Binary files /dev/null and b/img/drawing-old.png differ diff --git a/img/drawing.png b/img/drawing.png new file mode 100644 index 0000000..522dc50 Binary files /dev/null and b/img/drawing.png differ diff --git a/img/favicon.ico b/img/favicon.ico new file mode 100644 index 0000000..2633e87 Binary files /dev/null and b/img/favicon.ico differ diff --git a/img/relativity1.jpg b/img/relativity1.jpg new file mode 100644 index 0000000..e3b0a82 Binary files /dev/null and b/img/relativity1.jpg differ diff --git a/img/relativity2.jpg b/img/relativity2.jpg new file mode 100644 index 0000000..3455404 Binary files /dev/null and b/img/relativity2.jpg differ diff --git a/img/relativity2.jpg~ b/img/relativity2.jpg~ new file mode 100644 index 0000000..e23e252 Binary files /dev/null and b/img/relativity2.jpg~ differ diff --git a/index.org b/index.org index 55469f1..3d8f6b1 100644 --- a/index.org +++ b/index.org @@ -1,17 +1,28 @@ -#+title: ret2pop +#+title: Introducing ret2pop #+author: Preston Pan #+description: My personal website #+html_head: +#+html_head: +#+html_head: +#+html_head: +#+html_head: +#+html_head: +#+html_head: +#+html_head: #+date: <2023-06-09 Fri> #+language: en #+OPTIONS: broken-links:t -* Introducing ret2pop +* Introduction +#+caption: All Hope Abandon, Ye Who Enter Here +[[./img/drawing-old.png]] + Hello! I'm a person on the internet that does things, such as: - Music - Programming - Mathematics - Physics +- Linguistics - Thinking And if you're here to do one of these things, I guarantee you're in the right place! ** [[file:journal/index.org][Journal]] @@ -37,7 +48,7 @@ can therefore publish them. So I did! Configurations include: - Elfeed …and many more! ** [[file:about.org][About]] -To see my contact information and whatnot. +Who is the man behind ret2pop? How do you contact him? So many mysteries await… * About this Website I wrote this website in org mode. For more information, see the [[file:README.org][README]]. diff --git a/journal/20231208.org b/journal/20231208.org new file mode 100644 index 0000000..3c207bc --- /dev/null +++ b/journal/20231208.org @@ -0,0 +1,22 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Friday, 08 December 2023 +** 17:31 +Recently I have decided to start using emacs again, and this website is therefore +going to be updated much more. I have learned a little bit of Lagrangian and Hamiltonian +mechanics, and I am trying to learn some quantum mechanics as a result. I have my amateur +radio license now so I want to get my advanced amateur radio license. + +Also, I am kind of failing out of University because I don't really like any of the classes and +I obviously know a lot of the math and physics already, as well as a decent amount of programming. +I don't really know what University has to offer for me other than the paper, but it makes the +whole thing feel really pointless. Maybe I'll start a company, or starve on the streets, who knows! +** 21:57 +I'm just with my friend Jude right now because I am demonstrating the power of emacs and how it +can do journaling automatically and add it to my website which is integrated with all my other org files. diff --git a/journal/20231209.org b/journal/20231209.org new file mode 100644 index 0000000..419f2a1 --- /dev/null +++ b/journal/20231209.org @@ -0,0 +1,13 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Saturday, 09 December 2023 +** 18:37 +Today I lost my charger but later my friend Lucien returned it to me. He has the same computer +as me and I therefore lost some time today. However, it is fine because I managed to read +some of my quantum mechanics book. diff --git a/journal/20231210.org b/journal/20231210.org new file mode 100644 index 0000000..c64278a --- /dev/null +++ b/journal/20231210.org @@ -0,0 +1,17 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Sunday, 10 December 2023 +** 15:21 +After not using my computer for a day due to not finding my charger, I have finally found it. I am now working on some quantum mechanics. +Specifically, I am trying to wrap my head around the Schrodinger equation and how that relates to position and velocity. I understand +currently that the time-evolution of the system is governed by it, and I understand how to solve the equation for certain assumptions. However, +I am unclear as to how Fourier Transforms have a connection to quantum systems. +** 21:10 +I have worked a lot on the website; I am currently attempting to figure out how to make it look good instead of bad, and I want to add a navbar. +I also probably want to reformat how I'm doing some things in org mode. I have a favicon now but it isn't good. diff --git a/journal/20231213.org b/journal/20231213.org new file mode 100644 index 0000000..376f61f --- /dev/null +++ b/journal/20231213.org @@ -0,0 +1,13 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Wednesday, 13 December 2023 +** 14:06 +Today, I am meeting my friend Matthew. +** 19:32 +That meeting is done. I played some really good piano and I think now I am going to work on the mindmap more. diff --git a/journal/20231214.org b/journal/20231214.org new file mode 100644 index 0000000..bfd05b1 --- /dev/null +++ b/journal/20231214.org @@ -0,0 +1,14 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Thursday, 14 December 2023 +** 13:46 +Yesterday I had good conversations with many of my friends; I talked a decent bit about the Null +Philosophy with my dorm friends and I talked about the mindmap with Matthew Hinton. In any case, +I did not really work much on the mindmap yesterday so I believe I will do so today. I also need +to get my advanced license. diff --git a/journal/20231215.org b/journal/20231215.org new file mode 100644 index 0000000..9be750e --- /dev/null +++ b/journal/20231215.org @@ -0,0 +1,12 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Friday, 15 December 2023 +** 13:31 +I went on an early morning run at 4 today; it felt really really good and I want to do it again. I then +woke up very late. diff --git a/journal/20231217.org b/journal/20231217.org new file mode 100644 index 0000000..6a70d9e --- /dev/null +++ b/journal/20231217.org @@ -0,0 +1,12 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Sunday, 17 December 2023 +** 23:21 +Today I talked with my friend Jude and I also did some electrodynamics problems. We tried solving for the magnetic +field equations with special relativity and the Coulomb law as a postulate. diff --git a/journal/20231220.org b/journal/20231220.org new file mode 100644 index 0000000..8605381 --- /dev/null +++ b/journal/20231220.org @@ -0,0 +1,12 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Wednesday, 20 December 2023 +** 16:35 +Shit is a little bit fucked, but I don't really feel that bad which is good. I do not know if I am going +to university anymore. diff --git a/journal/20240110.org b/journal/20240110.org new file mode 100644 index 0000000..86465ca --- /dev/null +++ b/journal/20240110.org @@ -0,0 +1,13 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Wednesday, 10 January 2024 +** 16:39 +I have remembered that journaling capabilities existed in emacs again. I've been working on a programming language +called stem for the past 6 days, and it's finally looking like a finished project. It is a stack based language +and it has a foreign language interface and metaprogramming. diff --git a/journal/20240123.org b/journal/20240123.org new file mode 100644 index 0000000..d86dc5b --- /dev/null +++ b/journal/20240123.org @@ -0,0 +1,24 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Tuesday, 23 January 2024 +** 02:13 +I have decided to write in my journal yet again. I've been working on a programming language ~stem~ for the past +few weeks, and it has been exhilarating. I plan to add much more functionality to the programming language, as I +am already attempting to implement object oriented programming for it. Additionally, I have had ideas about how I would +implement a compiler for this programming language, and I have thought about writing a new lisp dialect based on +this language. + +In other news, I have become a University drop-out. I am still visiting my old university UVic from time to time, but I +am no longer enrolled in any classes at UVic nor am I staying there long term. I don't really know what I'm going to do. + +I found that university was utterly stiffling and didn't allow me to pursue my own interests. Additionally, I found that +many of the professors were unwilling to help me. Therefore, I dropped out. +** 11:34 +I just woke up. I will do my agenda tasks and then try to go to a BCIT convention to try to do some job-hunting. I'm pretty +excited for this. diff --git a/journal/20240124.org b/journal/20240124.org new file mode 100644 index 0000000..1b10e38 --- /dev/null +++ b/journal/20240124.org @@ -0,0 +1,17 @@ +#+TITLE: Daily Journal +#+STARTUP: showeverything +#+DESCRIPTION: My daily journal entry +#+AUTHOR: Preston Pan +#+HTML_HEAD: +#+html_head: +#+html_head: +#+options: broken-links:t +* Wednesday, 24 January 2024 +** 13:43 +For lunch, I ate rice and vegetables, mainly cauliflower, and two eggs. I plan to take my protein in the night, and I need to +get more protein soon. +*** TODO Get more protein +Vega to be mixed with milk. +** 15:44 +What's weird is I think my journal might be a little broken; I wrote the thing above yesterday. Oh well. I am also looking into +changing my website's css to make it less ugly. I also need to buy some vega protein. diff --git a/journal/index.org b/journal/index.org index bfdcb46..290f751 100644 --- a/journal/index.org +++ b/journal/index.org @@ -5,10 +5,18 @@ #+date: <2023-06-09 Fri> #+language: en #+OPTIONS: broken-links:t -* Journal! +#+html_head: +#+html_head: +#+html_head: +#+html_head: +#+html_head: +#+html_head: +#+html_head: +* Introduction This is my journal. It's basically my everyday life from a technology perspective (not many personal details although -there will be some). +there will be some). I will also be posting some TODOs that I have +throughout time. ** Entries Here is a list of all my journal entries: @@ -23,6 +31,17 @@ done #+end_src #+RESULTS: +- [[file:20240124.org][20240124.org]] +- [[file:20240123.org][20240123.org]] +- [[file:20240110.org][20240110.org]] +- [[file:20231220.org][20231220.org]] +- [[file:20231217.org][20231217.org]] +- [[file:20231215.org][20231215.org]] +- [[file:20231214.org][20231214.org]] +- [[file:20231213.org][20231213.org]] +- [[file:20231210.org][20231210.org]] +- [[file:20231209.org][20231209.org]] +- [[file:20231208.org][20231208.org]] - [[file:20230711.org][20230711.org]] - [[file:20230704.org][20230704.org]] - [[file:20230625.org][20230625.org]] diff --git a/mindmap/Fourier Transform.org b/mindmap/Fourier Transform.org new file mode 100644 index 0000000..9996abd --- /dev/null +++ b/mindmap/Fourier Transform.org @@ -0,0 +1,12 @@ +:PROPERTIES: +:ID: 262ca511-432f-404f-8320-09a2afe1dfb7 +:END: +#+title: Fourier Transform +#+author: Preston Pan +#+html_head: +#+html_head: +#+html_head: +#+options: broken-links:t + +* Introduction +The Fourier Transform is a generalization of the Fourier Series. diff --git a/mindmap/Lagrangian mechanics.org b/mindmap/Lagrangian mechanics.org new file mode 100644 index 0000000..d306be7 --- /dev/null +++ b/mindmap/Lagrangian mechanics.org @@ -0,0 +1,106 @@ +:PROPERTIES: +:ID: 83da205c-7966-417e-9b77-a0a354099f30 +:END: +#+title: Lagrangian mechanics +#+author: Preston Pan +#+html_head: +#+html_head: +#+html_head: +#+options: broken-links:t +* Introduction +The Lagrangian, $L: (\mathbb{R}, \mathbb{R} \rightarrow \mathbb{R}, \mathbb{R} \rightarrow \mathbb{R}) \rightarrow \mathbb{R}$ is simply a functional: +\begin{align*} +L = L(t, f(t), f'(t)) +\end{align*} +Where the Lagrangian represents some metric by which we calculate how optimized $f(x)$ is. The action: +\begin{align*} +J[f] = \int_{a}^{b}L(t, f(t), f'(t))dt \\ +\end{align*} +Defines the actual relationship between $f(t)$ and its level of optimization, where $a$ and $b$ represent the start +and end points for a certain curve. For example, if you wanted to minimize the surface area of something, $a$ and $b$ +would be the starting and end points of the surface. +* Euler-Lagrange Equation +We first define some function: +\begin{align*} +g(t) := f(t) + \epsilon \nu(t) +\end{align*} +Where $f(t)$ is our optimized function and $\nu(t)$ represents some function we add to $f(t)$ such that we perturb it +by some small amount. Now $\epsilon$ is a small number such that the perturbation is small. Note that when $\epsilon = 0$, $g(t) = f(t)$, +our optimized function. +\begin{align*} +J[g] = \int_{a}^{b}L(t, g(t), g'(t))dt +\end{align*} +Now $J[g]$ is optimized when $g(t)$ is a maximum or minimum with respect to the Lagrangian. $\frac{dJ}{d\epsilon}$ represents the extent to which +the action changes when the perturbation changes. When $\epsilon = 0$, $g(t) = f(t)$, which means $\frac{dJ}{d\epsilon}$ evaluated at $\epsilon = 0$ +should be zero, by definition of maxima and minima. +\begin{align*} +\frac{dJ[g]}{d\epsilon} = \int_{a}^{b}\frac{dL}{d\epsilon}dt +\end{align*} +By the multivariable chain rule: +\begin{align*} +\frac{dL}{d\epsilon} = \frac{\partial L}{\partial t}\frac{dt}{d\epsilon} + \frac{\partial L}{\partial g}\frac{dg}{d\epsilon} + \frac{\partial L}{\partial g'}\frac{dg'}{d\epsilon} +\end{align*} +because $t$ does not depend on $\epsilon$, $g = f + \epsilon\nu$, and $g' = f' + \epsilon\nu'$: +\begin{align*} +\frac{dL}{d\epsilon} = \frac{\partial L}{\partial g}\nu(t) + \frac{\partial L}{\partial g'}\nu'(t) +\end{align*} +now substituting back into the integral: +\begin{align*} +\frac{dJ}{d\epsilon} = \int_{a}^{b}(\frac{\partial L}{\partial g}\nu(t) + \frac{\partial L}{\partial g'}\nu'(t))dt +\end{align*} +applying integration by parts to the right side: +\begin{align*} +\frac{dJ}{d\epsilon} = \int_{a}^{b}\frac{\partial L}{\partial g}\nu(t)dt + \nu(t)\frac{\partial L}{\partial g'}\bigg|_{a}^{b} - \int_{a}^{b}\nu(t)\frac{d}{dt}\frac{\partial L}{\partial g'}dt +\end{align*} +now $\nu(t)$ can be any perturbation of $f(t)$ but the boundary conditions must stay the same (every function that we are considering for optimization must have the same start and end points); +therefore, $\nu(a) = \nu(b) = 0$. We can evaluate the bar to be 0 as a result. Doing this, combining the integral, then factoring out $\nu(t)$: +\begin{align*} +\frac{dJ}{d\epsilon} = \int_{a}^{b}\nu(t)(\frac{\partial L}{\partial g} - \frac{d}{dt}\frac{\partial L}{\partial g'})dt +\end{align*} +Now we finally set $\epsilon = 0$. This means $g(t) = f(t)$, $g'(t) = f'(t)$, and $\frac{dJ}{d\epsilon} = 0$: +\begin{align*} +0 = \int_{a}^{b}\nu(t)(\frac{\partial L}{\partial f} - \frac{d}{dt}\frac{\partial L}{\partial f'})dt +\end{align*} +And now because $\nu(t)$ can be an arbitrarily large or small valued function as long as the boundary conditions remain the same and the left hand side +must be zero, we get the Euler-Lagrange equation: +\begin{align*} +\frac{\partial L}{\partial f} - \frac{d}{dt}\frac{\partial L}{\partial f'} = 0 +\end{align*} +This is because the integral implies that for all selections for this function $\nu(t)$, $\nu(t)(\frac{dL}{df} - \frac{d}{dt}\frac{dL}{dg'}) = 0$. Because $\nu(t)$ can be any +function assuming it satisfies the boundary conditions, this can only be the case if $\frac{dL}{df} - \frac{d}{dt}\frac{dL}{dg'} = 0$. +In physics, we re-cast $f$ as $q$ and $f'$ as $\dot{q}$, where $q$ and $\dot{q}$ are the /generalized coordinates/ and /generalized velocities/ respectively. +* The Hamiltonian +The Hamiltonian represents the total energy in the system; it is the [[id:23df3ba6-ffb2-4805-b678-c5f167b681de][Legendre Transformation]] of the Lagrangian. Applying the Legendre Transformation to the +Lagrangian for coordinate $\dot{q}$: +\begin{align*} +L = \frac{1}{2}m\dot{q}^{2} - V(q) \\ +H = \frac{\partial L}{\partial \dot{q}}\dot{q} - L +\end{align*} +the Hamiltonian is defined as: +\begin{align*} +H(q, p) = \sum _{i}p_{i}\dot{q_{i}} - L(q, \dot{q}) +\end{align*} +Or: +\begin{align*} +H(q, p) = \frac{p^{2}}{2m} + V(q) +\end{align*} +where $p$ is the generalized momentum, and $q$ is a generalized coordinate. This results in two differential equations, the first of which is: +\begin{align*} +\frac{\partial H}{\partial p_{i}} = \dot{q_{i}} +\end{align*} +which follows directly from the Hamiltonian definition. Then, from the Euler-Lagrange equation: +\begin{align*} +L = \sum_{i}p_{i}\dot{q_{i}} - H \\ +\frac{\partial(\sum_{i}p_{i}\dot{q_{i}} - H)}{\partial q_{i}} - \frac{d}{dt}\frac{\partial(\sum_{i}p_{i}\dot{q_{i}} - H)}{\partial \dot{q_{i}}} = 0 \\ +- \frac{\partial H}{\partial q_{i}} = \frac{dp_{i}}{dt} \\ +\frac{\partial H}{\partial q_{i}} = - \frac{dp_{i}}{dt} +\end{align*} +Although the generalized coordinate system in question does not have to be linear, we can encode all the differential +equations for all the coordinates at once with the [[id:4bfd6585-1305-4cf2-afc0-c0ba7de71896][del operator]]: +\begin{align*} +\vec{\nabla}_{p}H = \frac{d\vec{q}}{dt} \\ +\vec{\nabla}_{q}H = -\frac{d\vec{p}}{dt} +\end{align*} +this notation isn't standard and I kind of made it up, but I think it works, as long as you don't take the divergence +or the curl of this system to really mean anything. Note that in both the Hamiltonian formulation and Lagrangian formulation, +the differential equations reduce to [[id:6e2a9d7b-7010-41da-bd41-f5b2dba576d3][Newtonian mechanics]] if we are working in a linear coordinate system with energy conservation. diff --git a/mindmap/Legendre Transformation.org b/mindmap/Legendre Transformation.org new file mode 100644 index 0000000..f9bc51f --- /dev/null +++ b/mindmap/Legendre Transformation.org @@ -0,0 +1,31 @@ +:PROPERTIES: +:ID: 23df3ba6-ffb2-4805-b678-c5f167b681de +:END: +#+title: Legendre Transformation +#+author: Preston Pan +#+html_head: +#+html_head: +#+html_head: +#+options: broken-links:t + +* Definition +The Legendre Transformation represents a function in terms of the y-intercept of the tangent line at every point on the function. +we start with the equation for a tangent line: +\begin{align*} +y = mx + b +\end{align*} +However, the Legendre transform actually solves for $b$. For a general function $f(x)$ we define +the tangent line to a point on that function to be: +\begin{align*} +y = y'(x)x - b +\end{align*} +where subtracting $b$ is the convention, for some reason. Then solving for b: +\begin{align*} +b = y'(x)x - y +\end{align*} +The actual Legendre Transform requires $b$ to be a function of $y'$, therefore: +\begin{align*} +x(f') = (f'(x))^{-1} \\ +L\{f(x)\} = b(f') = f'x(f') - f((x(f')) +\end{align*} +In [[id:83da205c-7966-417e-9b77-a0a354099f30][Lagrangian mechanics]], the Hamiltonian can be defined as the Legendre transform of the Lagrangian. diff --git a/mindmap/Lorentz Force.org b/mindmap/Lorentz Force.org new file mode 100644 index 0000000..23aa782 --- /dev/null +++ b/mindmap/Lorentz Force.org @@ -0,0 +1,21 @@ +:PROPERTIES: +:ID: 658f3916-6b7f-4897-85c6-9acc82b13214 +:END: +#+title: Lorentz Force +#+author: Preston Pan +#+html_head: +#+html_head: +#+html_head: +#+options: broken-links:t + +* Definition +The Lorentz Force is an experimental law given by the equation: +\begin{align*} +\vec{F} = q(\vec{E} + \vec{v} \times \vec{B}) +\end{align*} +Where $q$ is the electric charge, $\vec{E}$ is the [[id:63656810-537f-42fc-a38a-1468d763b39a][Electric Field]], and $\vec{B}$ is the Magnetic Field. +For a continuous charge distribution: +\begin{align*} +\vec{F} = \rho\vec{E} + \vec{J} \times \vec{B} +\end{align*} +Where $\vec{J}$ is the electric current. diff --git a/mindmap/Maxwell's Equations.org b/mindmap/Maxwell's Equations.org new file mode 100644 index 0000000..187f7a5 --- /dev/null +++ b/mindmap/Maxwell's Equations.org @@ -0,0 +1,78 @@ +:PROPERTIES: +:ID: fde2f257-fa2e-469a-bc20-4d11714a515e +:END: +#+title: Maxwell's Equations +#+author: Preston Pan +#+html_head: +#+html_head: +#+html_head: +#+options: broken-links:t + +* Introduction +Maxwell's Equations are a set of four differential equations in multiple dimensions that produce a complete classical +theory of electromagnetic phenomena. + +* Derivations +These are the derivations of all four laws in their differential forms based on the [[id:2a543b79-33a0-4bc8-bd1c-e4d693666aba][inverse square]] law for [[id:32f0b8b1-17bc-4c91-a824-2f2a3bbbdbd1][electrostatics]] ([[id:5388f4e8-7bb8-452e-b997-fe9892aefcf3][Coulomb's Law]]), the [[id:658f3916-6b7f-4897-85c6-9acc82b13214][Lorentz Force]], +as well as the [[id:a871e62c-b4a0-4674-9dea-d377de2f780b][continuity equation]] and electromagnetic induction (which are just special cases of [[id:e38d94f2-8332-4811-b7bd-060f80fcfa9b][special relativity]]) as initial assumptions: +** Gauss' Law +This is given by the divergence of an [[id:2a543b79-33a0-4bc8-bd1c-e4d693666aba][inverse square]] field, specifically for an electric field which is the same as in [[id:32f0b8b1-17bc-4c91-a824-2f2a3bbbdbd1][electrostatics]]: +\begin{align*} +\vec{\nabla} \cdot \vec{E} = \frac{\rho}{\epsilon_{0}} +\end{align*} +** Divergence of Magnetic Field +The divergence of the magnetic field is the same as in [[id:5c36d0f1-06ad-436a-a56f-5ecc198b9b3e][magnetostatics]]: +\begin{align*} +\vec{\nabla} \cdot \vec{B} = 0 +\end{align*} +** Ampere's Law with Modifications +The [[id:5c36d0f1-06ad-436a-a56f-5ecc198b9b3e][magnetostatic]] magnetic field is given by the Bio-Savart Law, which can be derived from [[id:e38d94f2-8332-4811-b7bd-060f80fcfa9b][special relativity]] and [[id:5388f4e8-7bb8-452e-b997-fe9892aefcf3][Coulomb's Law]]: +\begin{align*} +\vec{B} = \frac{\mu_{0}}{4\pi}\int_{V}\frac{\vec{J} \times \hat{r}}{r^{2}}d\tau +\end{align*} +Now the curl of this field is given by [[id:5c36d0f1-06ad-436a-a56f-5ecc198b9b3e][magnetostatics]]: +\begin{align*} +\vec{\nabla} \times \vec{B} = \mu_{0}\vec{J} +\end{align*} +However, if you take the divergence of this equation, the left hand side reduces to zero by the definition of the [[id:4bfd6585-1305-4cf2-afc0-c0ba7de71896][del operator]], but the +right hand side does not always: +\begin{align*} +\vec{\nabla} \cdot \mu_{0}\vec{J} = \mu_{0} (\vec{\nabla} \cdot \vec{J}) \neq 0 +\end{align*} + +Given this problem, a correction is given via the [[id:a871e62c-b4a0-4674-9dea-d377de2f780b][continuity equation]]: +\begin{align*} +\vec{\nabla} \cdot \vec{J} = -\frac{\partial \rho}{\partial t} \\ +\epsilon_{0}(\vec{\nabla} \cdot \vec{E}) = \rho \\ +\vec{\nabla} \cdot \vec{J} = -\epsilon_{0}\vec{\nabla} \cdot \frac{\partial\vec{E}}{\partial t} +\end{align*} +So therefore when we account for the fact that $\vec{\nabla} \cdot \vec{\nabla} \times \vec{B} = 0$ +\begin{align*} +\vec{\nabla} \times \vec{B} = \mu_{0}\vec{J} + \mu_{0}\epsilon_{0}\frac{\partial\vec{E}}{\partial t} +\end{align*} +** Faraday's Law of Induction +By definition of electromagnetic induction (and to make Ampere's law consistent with relativity): +\begin{align*} +\vec{\nabla} \times \vec{E} = - \frac{\partial\vec{B}}{\partial t} +\end{align*} +Instead of assuming induction as an axiom, it is possible to fix Ampere's equation with the [[id:a871e62c-b4a0-4674-9dea-d377de2f780b][continuity equation]] first, and then +assume Lorentz symmetry. This explanation is a work in progress. +* Implications +Maxwell's Equations can be used to calculate all electromagnetic phenomena on the macro scale all the way down to the atom. +In practice, solving Maxwell's Equations can be analytically impossible, so several simplifying assumptions are often made. +To recap, these are the four equations: +\begin{align*} +\vec{\nabla} \cdot \vec{E} = \frac{\rho}{\epsilon_{0}} \\ +\vec{\nabla} \times \vec{E} = -\frac{\partial\vec{B}}{\partial t} \\ +\vec{\nabla} \cdot \vec{B} = 0 \\ +\vec{\nabla} \times \vec{B} = \mu_{0}\vec{J} + \mu_{0}\epsilon_{0}\frac{\partial\vec{E}}{\partial t} +\end{align*} +* Speed of Light +Maxwell's Equations can be shown to reproduce the speed of light in a vacuum, where: +\begin{align*} +\mu_{0}\epsilon_{0} = \frac{1}{c^{2}} +\end{align*} +* Relativity +It is known that Maxwell's Equations are consistent with [[id:e38d94f2-8332-4811-b7bd-060f80fcfa9b][special relativity]] and can be expressed +in terms of curved spacetime. In fact, if relativity is taken as an axiom, it can be proven that the electric +and magnetic fields are descriptions of the same phenomena; this can be taken as a specific example of a [[id:1b1a8cff-1d20-4689-8466-ea88411007d7][duality]]. diff --git a/mindmap/Newtonian mechanics.org b/mindmap/Newtonian mechanics.org index c78b1e3..7d4b414 100644 --- a/mindmap/Newtonian mechanics.org +++ b/mindmap/Newtonian mechanics.org @@ -54,12 +54,13 @@ In general, the total momentum is defined to be: \end{align*} And in real life, we observe that things can transfer momentum. That is: \begin{align*} -\vec{p}_{1} = -\vec{p}_{2} +\vec{p}_{1} = -\vec{p}_{2} + \vec{p}_{i} \end{align*} -When these two objects have the same position vector \( \vec{r}_{1} = \vec{r}_{2} \) (if they are point masses; don't have volume but have mass which is idealistic but works as an approximation). -Because this operation of momentum transfer is symmetrical: +Where $\vec{p}_{i}$ is the initial momentum of the objects. +this happens when these two objects have the same position vector \( \vec{r}_{1} = \vec{r}_{2} \) (if they are point masses; don't have volume but have mass which is idealistic but works as an approximation). +This operation of momentum transfer is symmetrical: \begin{align*} -\vec{p}_{2} = -\vec{p}_{1} +\vec{p}_{2} = -\vec{p}_{1} + \vec{p}_{i} \end{align*} Note that the fact that this operation is symmetrical must be the case to preserve the property: \begin{align*} diff --git a/mindmap/conservative force.org b/mindmap/conservative force.org index 83d1c36..9b01117 100644 --- a/mindmap/conservative force.org +++ b/mindmap/conservative force.org @@ -15,7 +15,7 @@ A conservative force has this property: \end{align*} In other words, work done by \(\vec{f}\) is path independent, because in any closed loop integral, you go from point \(\vec{a}\) to point \(\vec{b}\) and then back. If these forwards and backwards -paths end up canceling no matter what path you take, then it is clear that \(\vec{f}\) will do the +paths end up canceling no matter what path you take, then it is clear that \(\vec{f}\) will be the same amount of force no matter what path you take. Using Stokes' theorem: \begin{align*} \int_{S}(\vec{\nabla} \times \vec{f}) \cdot d\vec{a} = \oint\vec{f} \cdot d\vec{l} diff --git a/mindmap/continuity equation.org b/mindmap/continuity equation.org new file mode 100644 index 0000000..579e09a --- /dev/null +++ b/mindmap/continuity equation.org @@ -0,0 +1,24 @@ +:PROPERTIES: +:ID: a871e62c-b4a0-4674-9dea-d377de2f780b +:END: +#+title: continuity equation +#+author: Preston Pan +#+html_head: +#+html_head: +#+html_head: +#+options: broken-links:t + +* Derivation and Motivation +In continuum mechanics, the continuity equation is a statement about the inability for particles to teleport between +two different points in space. In other words, each particle must take a path between two points. In particular, if +$Q_{enc} = \int_{V} \rho(r')d\tau$ or $Q_{enc}$ is the total amount of particles inside some surface where $\rho$ is the density: +\begin{align*} +\oint_{S} \vec{J} \cdot d\vec{a} = -\frac{\partial Q_{enc}}{\partial t}, +\end{align*} +or in other words, the amount that the current goes through some closed surface must be proportional to the loss of particles +inside of the enclosure. This is of course because of conservation of mass (which is in and of itself conservation of energy). +Using the [[id:44e65b69-e5d5-464a-b1f3-8a914e1b7e9e][divergence theorem]]: +\begin{align*} +\int_{V}\vec{\nabla} \cdot \vec{J}d\tau = - \int_{V}\frac{\partial\rho}{\partial t}d\tau \\ +\vec{\nabla} \cdot \vec{J} = -\frac{\partial\rho}{\partial t} +\end{align*} diff --git a/mindmap/del operator.org b/mindmap/del operator.org index 7410e30..3d9e2f5 100644 --- a/mindmap/del operator.org +++ b/mindmap/del operator.org @@ -86,6 +86,15 @@ vector field "perpendicular" to the divergence of the field. In fact, if you hav you can represent this field as an addition of a curl-less field and a divergence-less field. Another way to think of it is that you are measuring the strength of rotational component of the vector field about a certain axis. +** directional derivative +:PROPERTIES: +:ID: e255eb0a-246b-4a4b-8db8-ac0d15d9cc3c +:END: +The directional derivative is defined as follows: +\begin{align*} +\vec{f} \cdot \vec{\nabla} = \sum_{i=0}^{n}f_{i}\frac{\partial}{\partial x_{i}} +\end{align*} +Which represents a superposition of states which corresponds to the direction you want to take the derivative in. ** Laplacian :PROPERTIES: :ID: 65004429-a6b7-41f2-8489-07605841da3d @@ -98,6 +107,6 @@ It returns a scalar field and is the multivariable analogue to the second deriva and gradient have been described, I feel it is trivial to understand the Laplacian. ** Product Rules -The product rules pertaining to the del operator are consistent with that of linear algebra. +The product rules pertaining to the del operator are consistent with that of linear algebra and single variable derivative rules. For example, \( \vec{\nabla} \times \vec{\nabla}f = 0\). You can show this yourself quite easily, so I find no need to go over it here. -When in doubt, just assume the del works the same way as any old vector, and you will usually be correct. +When in doubt, just assume the del works the same way as any old vector except you apply the [[id:d1e245f4-0b04-450e-8465-a9c85fe57f7e][product rule]], and you will usually be correct. diff --git a/mindmap/derivative.org b/mindmap/derivative.org index be84116..d046459 100644 --- a/mindmap/derivative.org +++ b/mindmap/derivative.org @@ -7,7 +7,6 @@ #+html_head: #+html_head: #+options: broken-links:t -#+OPTIONS: tex:dvipng * Derivation Let's say we want to know the rate of change of the [[id:b1f9aa55-5f1e-4865-8118-43e5e5dc7752][function]] \(f(x) = x^{2}\). Because this [[id:b1f9aa55-5f1e-4865-8118-43e5e5dc7752][function]] is not @@ -76,14 +75,17 @@ We derive many of them here. = \frac{d}{dx}f(x) + \frac{d}{dx}g(x) \end{align*} of course, subtraction works in the same way. -** Multiplication Rule +** product rule +:PROPERTIES: +:ID: d1e245f4-0b04-450e-8465-a9c85fe57f7e +:END: \begin{align*} \frac{d}{dx}(f(x)g(x)) = \lim_{h\to0}\frac{f(x + h)g(x + h) - f(x)g(x)}{h} = \lim_{h\to0}\frac{f(x + h)g(x + h) - f(x)g(x + h) + f(x)g(x + h) - f(x)g(x)}{h} \\ = \lim_{h\to0}\frac{g(x + h)(f(x + h) - f(x)) + f(x)(g(x + h) - g(x))}{h} \\ = g(x)\lim_{h\to0}\frac{f(x + h) - f(x)}{h} + f(x)\frac{g(x + h) - g(x)}{h} = g(x)f'(x) + g'(x)f(x) \end{align*} And using the this rule as well as the chain rule and power rule which we will show later, the division rule is easily acquired. -** Chain Rule +** chain rule :PROPERTIES: :ID: ffd1bc3d-ab64-4916-9c09-0c89d2731b6d :END: diff --git a/mindmap/divergence theorem.org b/mindmap/divergence theorem.org new file mode 100644 index 0000000..b2c6660 --- /dev/null +++ b/mindmap/divergence theorem.org @@ -0,0 +1,17 @@ +:PROPERTIES: +:ID: 44e65b69-e5d5-464a-b1f3-8a914e1b7e9e +:END: +#+title: divergence theorem +#+author: Preston Pan +#+html_head: +#+html_head: +#+html_head: +#+options: broken-links:t + +* Definition +The [[id:12a2d5b3-f98c-45e5-9107-5560288b5aa8][divergence]] theorem is a generalization of the one-dimensional fundamental theorem of calculus: +\begin{align*} +\int_{V}\vec{\nabla} \cdot \vec{f}(\vec{r})d\tau = \oint_{S}\vec{f}(\vec{r}) \cdot d\vec{a} +\end{align*} +it is a statement about conservation in physical systems: the outflow of force from the inside of a closed boundary has +to be equal to the amount of force at the boundaries. diff --git a/mindmap/duality.org b/mindmap/duality.org index cef6faa..c18db08 100644 --- a/mindmap/duality.org +++ b/mindmap/duality.org @@ -71,7 +71,9 @@ p \neq \neg p. This statement filters for binary, or as I would call it, dual mode frameworks, and gets around the principle of explosion. We have an intuitive understanding of truth and falsehood, and we can use those general terms whenever there is a mutually exclusive divide. In short, you can view the logical framework as an abstraction of all other dual frameworks. I propose that you can do analysis on all dual frameworks in much the same -way group theory does analysis on groups. +way [[id:ba7b95b0-0ce6-4b33-9a79-5e5fddaea710][group]] theory does analysis on groups. [[id:a6bc601a-7910-44bb-afd5-dffa5bc869b1][Mathematics]] in general has the same recursive binary structure to it, because it is based on a couple +of axioms and utilizes logic as an extrapolation mechanism. By [[id:4ed61028-811e-4425-b956-feca6ee92ba1][inheritance]], everything that utilizes [[id:a6bc601a-7910-44bb-afd5-dffa5bc869b1][mathematics]] is also an inherently dualistic +structure. * Programming Explains Duality Of course, there is logic in programming, but that is kind of boring. What I am going to explain here is a recursive, binary structure known @@ -120,7 +122,7 @@ into small tasks, which is needed for recursion to be finite. * Why duality, and not Any other Modality? This is a good question, and one that I've still yet to answer completely. However, I would still like to try my hand at this, because there are things that make the number two specially suited for the task of subdividing. -** Two is a Natural Number +** Two is a [[id:2d6fb5ac-a273-4b33-949c-37380d03c076][Natural Number]] From a biological perspective, we're probably more used to dealing with whole numbers. We did not even come up with the concept of any others until much later, and negative numbers, and even zero, were a construct invented much later as well. Yes, there are an infinite number of natural numbers, but at least it's a filter we can use. @@ -131,5 +133,5 @@ prime can be represented by a smaller factor of that number. For example, 4-alit What's interesting is that one is a factor of everything. This represents the "null filter", or "anti filter", which doesn't filter any data and simply represents it all as one thing. Very interesting. ** Two is small and not One -The number two is also the smallest natural number that is not one. This means it is the simplest way to subdivide any particular object. This makes +The number two is also the smallest [[id:2d6fb5ac-a273-4b33-949c-37380d03c076][natural number]] that is not one. This means it is the simplest way to subdivide any particular object. This makes it more elegant compared to some other modalities. diff --git a/mindmap/electrostatics.org b/mindmap/electrostatics.org index 55310de..6625d4c 100644 --- a/mindmap/electrostatics.org +++ b/mindmap/electrostatics.org @@ -14,6 +14,9 @@ defined by the charge that an object has that corresponds the force that it both to other objects. Charge is measured in coulombs and can be negative or positive, which leads us to the man himself: * Coulomb's Law +:PROPERTIES: +:ID: 5388f4e8-7bb8-452e-b997-fe9892aefcf3 +:END: In order to define the phenomena of electric force in the real world, we use this experimentally verified law known as Coulomb's Law. Let \( \vec{r_{1}} \) be the displacement of a charge \( Q \), and let \( \vec{r_{2}} \) be the displacement of a charge \( q \), where these two charges are named \( P_{1}\) and \( P_{2} \) respectively. @@ -53,6 +56,9 @@ but since this is electrostatics and not electrodynamics, you will not have to w magnetic constants. Again, it is just a shift from speed of light units to our mortal units. ** Electric Field +:PROPERTIES: +:ID: 63656810-537f-42fc-a38a-1468d763b39a +:END: Okay, now we can continue to defining the /electric field/ of a particle. Let's call \( P_{1} \) our /test charge/, and \( P_{2} \) our /source charge/. If we now want to measure the force on \( P_{1} \), our equation is going to be the same. However, we can define a field \( \vec{E(\vec{r})} \) such that: diff --git a/mindmap/emergence.org b/mindmap/emergence.org index 9c975a5..a2ea32e 100644 --- a/mindmap/emergence.org +++ b/mindmap/emergence.org @@ -4,6 +4,9 @@ #+title: emergence #+author: Preston Pan #+html_head: +#+html_head: +#+html_head: +#+options: broken-links:t * Emergence systems are… Existent in many forms and at many levels. They are the fundamental building @@ -17,16 +20,42 @@ into a larger structure via simpler rules that each component follows. Entire systems such as [[id:a6bc601a-7910-44bb-afd5-dffa5bc869b1][mathematics]] can be explained in terms of a couple axioms, where all the theorems arising from those axioms are emergent from those axioms. At least, that is a relatively simple explanation, and does not capture the full -beauty of emergent systems. Therefore, I call apoun an example from daily life: +beauty of emergent systems. Therefore, I call upon an example from daily life: *** Societies At every scale, societies exhibit properties of emergence. For example, families and small communities comprise small areas of town, which comprise cities, which then make up provinces, and finally countries. In this particular example, we self organize into self-similar [[id:8f265f93-e5fd-4150-a845-a60ab7063164][recursive]] hierarchies. This is for a good reason; -in order for societies to scale, there need to be abstractions. Each level in the +in order for societies to scale, there needs to be abstractions. Each level in the hierarchy conveys more but less exact information, until we get to the national level which deals the most with aggregates. *** Markets Emergent -To use a particular hierarchy example, markets are emergent from barter in goods. +In order to define the emergence of markets, we must first define the emergence of +property rights. Property rights emerge when a society scales and is able to extract +value from more and more natural resources. Property rights come from two different +things: a need for certain people to use certain resources more or less often +(specialization, division of labor causes this, as well as belongings), and a need +for some incentive for people to maintain resources. When property is traded, a market +emerges, as well as a currency; a currency is simply the most fungible and liquid +asset that has a market. When goods are traded, both parties gain value from the trade. +In this way, the distribution of resources becomes more optimal the more consensual trade happens. +Capital, or resources used to produce other resources, are sold to people that believe +they have the skills to utilize the capital, from people that believe that the capital is suboptimally +allocated to them. Companies are simply contractually enforced percentage ownerships of capital. + +Prices are adjusted in markets according to supply and demand; they are a signal of the relative scarcity +of the good in question. High prices communicate to consumers that they should look for alternatives +due to the scarcity of the good, and low prices communicate to consumers that the resource is currently +widely available. + +This whole study of markets has lead to the study of human behavior known as economics. Although this +naive view of markets gives a good intuition about human behavior, it is an incomplete story. Economists +have made more particular statements about the state of economic affairs with the tools of [[id:a6bc601a-7910-44bb-afd5-dffa5bc869b1][mathematics]], +under neokeynesian theory. + +*** Languages Emergent + +* Key Takeaway +Emergence is the bootstrapping problem that attempts to solve the problem of induction. diff --git a/mindmap/factorial.org b/mindmap/factorial.org index 345fe39..2f738b1 100644 --- a/mindmap/factorial.org +++ b/mindmap/factorial.org @@ -5,4 +5,11 @@ #+author: Preston Pan #+options: num:nil #+html_head: -#+options: tex:dvipng + +* Introduction +The factorial [[id:b1f9aa55-5f1e-4865-8118-43e5e5dc7752][function]] $n!: \mathbb{N} \rightarrow \mathbb{N}$ describes the amount of ways one can arrange $n$ differentiable objects. In practice: +\begin{align*} +0! = 1 \\ +n! = (n - 1)! \times n +\end{align*} +is a [[id:8f265f93-e5fd-4150-a845-a60ab7063164][recursive]] definition of the factorial. diff --git a/mindmap/function.org b/mindmap/function.org index 07b86cb..716a1ec 100644 --- a/mindmap/function.org +++ b/mindmap/function.org @@ -8,8 +8,6 @@ #+html_head: #+options: broken-links:t - - * Definition A function \( f(x) \) is a set \( S \) of ordered pairs that map the first value of the ordered pair to the second value in the ordered pair, where the first value may not have duplicates in the set \(S\). The map from the first value to the diff --git a/mindmap/group.org b/mindmap/group.org index 5fb0498..fb24bf8 100644 --- a/mindmap/group.org +++ b/mindmap/group.org @@ -28,3 +28,6 @@ An inverse is defined as follows: \begin{align*} \forall a \exists a^{-1} : a * a^{-1} = e \end{align*} + +* Motivation +In [[id:ece8bf94-4e3c-4939-a77a-9949c1ec0dc6][physics]], natural phenomena including conservation laws follow from group symmetries. diff --git a/mindmap/index.org b/mindmap/index.org index c2ffc5e..350a564 100644 --- a/mindmap/index.org +++ b/mindmap/index.org @@ -27,3 +27,57 @@ That won't stop me from stalking you and physically threatening you, though. Tee * How did you make it? This section of the website was made with ~org-roam~, an emacs package that allows you to make a web of notes, something close to a wiki. + +* I want to Break the Rules +No you don't. That being said, if you really want the list of all articles, here you go: +#+begin_src shell :results output raw :exports both +set -f +IFS=' +' +for f in $(ls | sort -r); +do + if [[ "$f" == "index.org" || "$f" == "README.org" ]]; then + continue + fi + printf -- "- [[file:$f][$f]]\n" +done +unset IFS +set +f +#+end_src + +#+RESULTS: +- [[file:stack.org][stack.org]] +- [[file:special relativity.org][special relativity.org]] +- [[file:self-assembly.org][self-assembly.org]] +- [[file:recursion.org][recursion.org]] +- [[file:python.org][python.org]] +- [[file:physics.org][physics.org]] +- [[file:partial derivative.org][partial derivative.org]] +- [[file:natural number.org][natural number.org]] +- [[file:mathematics.org][mathematics.org]] +- [[file:magnetostatics.org][magnetostatics.org]] +- [[file:logic.org][logic.org]] +- [[file:inverse square.org][inverse square.org]] +- [[file:inheritance.org][inheritance.org]] +- [[file:infinity.org][infinity.org]] +- [[file:induction.org][induction.org]] +- [[file:group.org][group.org]] +- [[file:function.org][function.org]] +- [[file:factorial.org][factorial.org]] +- [[file:everything.org][everything.org]] +- [[file:emergence.org][emergence.org]] +- [[file:electrostatics.org][electrostatics.org]] +- [[file:duality.org][duality.org]] +- [[file:divergence theorem.org][divergence theorem.org]] +- [[file:dirac delta.org][dirac delta.org]] +- [[file:derivative.org][derivative.org]] +- [[file:del operator.org][del operator.org]] +- [[file:continuity equation.org][continuity equation.org]] +- [[file:conservative force.org][conservative force.org]] +- [[file:central force.org][central force.org]] +- [[file:Newtonian mechanics.org][Newtonian mechanics.org]] +- [[file:Maxwell's Equations.org][Maxwell's Equations.org]] +- [[file:Lorentz Force.org][Lorentz Force.org]] +- [[file:Legendre Transformation.org][Legendre Transformation.org]] +- [[file:Lagrangian mechanics.org][Lagrangian mechanics.org]] +- [[file:Fourier Transform.org][Fourier Transform.org]] diff --git a/mindmap/induction.org b/mindmap/induction.org index 9ba2cbc..1cccbdc 100644 --- a/mindmap/induction.org +++ b/mindmap/induction.org @@ -7,4 +7,5 @@ #+html_head: #+options: tex:dvipng -* Placeholder +* Introduction +Induction is a concept. diff --git a/mindmap/infinity.org b/mindmap/infinity.org index b08e723..8d41105 100644 --- a/mindmap/infinity.org +++ b/mindmap/infinity.org @@ -3,7 +3,19 @@ :END: #+title: infinity #+author: Preston Pan -#+options: num:nil #+html_head: -#+options: tex:dvipng -* placeholder text +#+html_head: +#+html_head: +#+options: broken-links:t + +* Introduction +Infinity has been a concept that has caused many troubles in the realm of mathematics. Algebra with infinities +have not been easy to define in history, and there are limited cases of success in this endevour. Generally speaking, +we can add infinities to existing sets, and define ordering. For example, for real numbers, the set: +\begin{align*} +\mathbb{R}\cup \{-\infty, \infty \} +\end{align*} +extends the real numbers to include infinites. However, only order is well defined; algebra is generally not allowed. +\begin{align*} +\forall a \in \mathbb{R}, -\infty < a < \infty +\end{align*} diff --git a/mindmap/inverse square.org b/mindmap/inverse square.org index 52a3f61..132b322 100644 --- a/mindmap/inverse square.org +++ b/mindmap/inverse square.org @@ -63,7 +63,7 @@ And from 6 properties that seem like reasonable constraints, we derive the inver To formalize the sixth property by taking the flux through a sphere and showing it doesn't depend on \(\vec{r}\): \begin{align*} -kP_{1}P_{2}\oint\frac{\hat{r}}{r^{2}} \cdot d\vec{a} = kP_{1}P_{2}\oint\frac{1}{r^{2}}da = k\frac{P_{1}P_{2} 4\pi r^{2}}{r^{2}} = constant +kP_{1}P_{2}\oint\frac{\hat{r}}{r^{2}} \cdot d\vec{a} = kP_{1}P_{2}\frac{1}{r^{2}}\int da = k\frac{P_{1}P_{2} 4\pi r^{2}}{r^{2}} = constant \end{align*} Which is a result we will use later. @@ -127,7 +127,7 @@ k\int_{space}\sigma(\vec{r'})(3(x^{2} + y^{2} + z^{2})^{-\frac{3}{2}} - 3(x^{2} So is the divergence of this field zero? Well, not exactly. In order to understand why, we must ask: What happens to the divergence at \(\vec{0}\)? On first glance, it seems clearly undefined. After all, we're dividing by zero. However, after some amount of inspection, the assumption that our field's divergence is zero everywhere is incoherent. As we know from section one, he surface integral over a sphere of a point charge (flux) is a constant, -but if the divergence theorem is true, then the surface integral should also be zero, not constant. Because this flux is not \(\vec{r}\) dependent and therefore +but if the [[id:44e65b69-e5d5-464a-b1f3-8a914e1b7e9e][divergence theorem]] is true, then the surface integral should also be zero, not constant. Because this flux is not \(\vec{r}\) dependent and therefore is the same no matter how small the concentric ring is, the flux must come from the origin. We can model this behavior with the [[id:90574fea-88f4-4b80-9cda-32cff0bcb76d][dirac delta]] distribution. Our actual divergence is: @@ -147,7 +147,7 @@ includes the term \(\frac{1}{4\pi}\), we can just say: \vec{\nabla} \cdot \vec{f}(\vec{r''}) = k\sigma(\vec{r''}) \end{align*} -Where \(k\) in this case is a constant without the \(4\pi\) term. By the divergence theorem: +Where \(k\) in this case is a constant without the \(4\pi\) term. By the [[id:44e65b69-e5d5-464a-b1f3-8a914e1b7e9e][divergence theorem]]: \begin{align*} \int_{V}\vec{\nabla} \cdot \vec{f}d\tau = \int_{S}\vec{f} \cdot d\vec{a} = k\int_{V}\sigma(\vec{r''})d\tau = k\sigma_{enc.} \end{align*} diff --git a/mindmap/logic.org b/mindmap/logic.org new file mode 100644 index 0000000..b43a76b --- /dev/null +++ b/mindmap/logic.org @@ -0,0 +1,14 @@ +:PROPERTIES: +:ID: 29ebc4f9-0fd8-4203-8bfe-84f8558e09cf +:END: +#+title: logic +#+author: Preston Pan +#+html_head: +#+html_head: +#+html_head: +#+options: broken-links:t + +* Introduction +Logic is the foundation of everything mathematical, and can even study itself; this is known as metalogic. In order to +demonstrate logic, we must first demonstrate some axioms of logic, starting with propositional logic. +** Propositional Logic diff --git a/mindmap/magnetostatics.org b/mindmap/magnetostatics.org new file mode 100644 index 0000000..ea763e7 --- /dev/null +++ b/mindmap/magnetostatics.org @@ -0,0 +1,91 @@ +:PROPERTIES: +:ID: 5c36d0f1-06ad-436a-a56f-5ecc198b9b3e +:END: +#+title: magnetostatics +#+author: Preston Pan +#+html_head: +#+html_head: +#+html_head: +#+options: broken-links:t + +* Introduction +Magnetostatics is a little bit of an oxymoron; the magnetic field is created by a moving current of charges and a magnetic +field for a point charge is therefore hard to model or often wrong; because magnetostatics assumes a steady current, a point +charge moving cannot be replaced with another charge. However, for some continuous current distribution, the magnetic field is: +\begin{align*} +\vec{B} = \frac{\mu_{0}}{4\pi}\int_{V}\frac{\vec{J} \times \hat{r}}{r^{2}}dV +\end{align*} +Which is the Bio-Savart law. Later, we will derive this from the axioms of [[id:32f0b8b1-17bc-4c91-a824-2f2a3bbbdbd1][electrostatics]] and [[id:e38d94f2-8332-4811-b7bd-060f80fcfa9b][special relativity]]. + +* Divergence of B +The divergence of B is given by: +\begin{align*} +\vec{\nabla} \cdot \vec{B} = \frac{\mu_{0}}{4\pi}\int_{V}\frac{\vec{\nabla} \cdot (\vec{J} \times \hat{r})}{r^{2}}dV += \frac{\mu_{0}}{4\pi}\int_{V}\vec{\nabla} \cdot (\vec{J} \times \frac{\hat{r}}{r^{2}})dV \\ +\end{align*} +Now we want to evaluate $\vec{\nabla} \cdot \vec{J} \times \frac{\hat{r}}{r^{2}}$ using the [[id:4bfd6585-1305-4cf2-afc0-c0ba7de71896][del operator]] rules: +\begin{align*} +\vec{\nabla} \cdot \vec{J} \times \frac{\hat{r}}{r^{2}} = (\vec{\nabla} \times \vec{J}) \cdot \frac{\hat{r}}{r^{2}} - \vec{J} \cdot (\vec{\nabla} \times \frac{\hat{r}}{r^{2}}) +\end{align*} +And while $B$, and by extension $\vec{\nabla}$ is dependent on $\vec{r}$, the radial distance between two charges, +$\vec{J}$ is a function of $r'$, the position vector to a given charge. This, of course, means that $J$ does not +depend on any of the variables that we are taking the derivative over. Thus: +\begin{align*} +\vec{\nabla} \times \vec{J} = 0 +\end{align*} +Also, due to the [[id:2a543b79-33a0-4bc8-bd1c-e4d693666aba][inverse square]] law, the curl of $\frac{\hat{r}}{r^{2}}$ is zero, and therefore: +\begin{align*} +\vec{\nabla} \cdot \vec{J} \times \frac{\hat{r}}{r^{2}} = 0 +\end{align*} +And therefore: +\begin{align*} +\vec{\nabla} \cdot \vec{B} = 0 +\end{align*} +This is one of [[id:fde2f257-fa2e-469a-bc20-4d11714a515e][Maxwell's Equations]]. +* Curl of B +The curl of $\vec{B}$ is given by: +\begin{align*} +\vec{\nabla} \times \vec{B} = \frac{\mu_{0}}{4\pi}\int_{V}\frac{\vec{\nabla} \times (\vec{J} \times \hat{r})}{r^{2}}dV \\ += \frac{\mu_{0}}{4\pi}\int_{V}\vec{\nabla} \times (\vec{J} \times \frac{\hat{r}}{r^{2}})dV +\end{align*} +where $\vec{\nabla} \times \vec{J} \times \hat{r}$ is given by the [[id:4bfd6585-1305-4cf2-afc0-c0ba7de71896][del operator]] identity: +\begin{align*} +\vec{\nabla} \times (\vec{J} \times \frac{\hat{r}}{r^{2}}) = \vec{J}(\vec{\nabla} \cdot \frac{\hat{r}}{r^{2}}) - \frac{\hat{r}}{r^{2}}(\vec{\nabla} \cdot \vec{J}) + (\frac{\hat{r}}{r^{2}} \cdot \vec{\nabla})\vec{J} - (\vec{J} \cdot \vec{\nabla})\frac{\hat{r}}{r^{2}} +\end{align*} +Due to the [[id:2a543b79-33a0-4bc8-bd1c-e4d693666aba][inverse square]] law, we know that $\vec{\nabla} \cdot \frac{\hat{r}}{r^{2}} = 4\pi\delta(\vec{r})$; From the section above we know that $\vec{\nabla} \cdot \vec{J} = 0$; hence: +\begin{align*} +\vec{\nabla} \times (\vec{J} \times \frac{\hat{r}}{r^{2}}) = 4\pi\vec{J}(\vec{r'})\delta(\vec{r}) + (\frac{\hat{r}}{r^{2}} \cdot \vec{\nabla})\vec{J} - (\vec{J} \cdot \vec{\nabla})\frac{\hat{r}}{r^{2}} +\end{align*} +The first directional derivative is zero because $\vec{J}$ does not depend on the same coordinates as $\vec{\nabla}}$ +with the same reasoning as for the divergence, so we have: +\begin{align*} +\vec{\nabla} \times (\vec{J} \times \frac{\hat{r}}{r^{2}}) = 4\pi\vec{J}(\vec{r'})\delta(\vec{r}) - (\vec{J} \cdot \vec{\nabla})\frac{\hat{r}}{r^{2}} +\end{align*} +The second term reduces to zero for some reason (reason coming later; I currently do not know why). Now plugging this back into the original equation: +\begin{align*} +\vec{\nabla} \times \vec{B} = \frac{\mu_{0}}{4\pi}\int_{V}4\pi\vec{J}(r')\delta(\vec{r})dV \\ += \mu_{0}\int_{V}\vec{J}(r')\delta(\vec{r'} - \vec{r''})dV +\end{align*} +Where $r''$ is the location of the test particle. Now the [[id:90574fea-88f4-4b80-9cda-32cff0bcb76d][dirac delta]] distribution propreties under an integral: +\begin{align*} +\vec{\nabla} \times \vec{B} = \mu_{0}\vec{J}(\vec{r''}) +\end{align*} +or simply: +\begin{align*} +\vec{\nabla} \times \vec{B} = \mu_{0}\vec{J} +\end{align*} +This is for magnetostatics only; [[id:fde2f257-fa2e-469a-bc20-4d11714a515e][Maxwell's Equations]] offer a correction to this equation. +* The Vector Potential +We can define a /vector potential/ $\vec{A}(\vec{r})$ such that: +\begin{align*} +\vec{B} = \vec{\nabla} \times \vec{A} +\end{align*} +which is consistent with the fact that: +\begin{align*} +\vec{\nabla} \cdot \vec{B} = 0 +\end{align*} +By taking the divergence of both sides in the first equation in this section. When $\vec{J}$ is zero at infinity: +\begin{align*} +\vec{A} = \frac{\mu_{0}}{4\pi}\int_{V}\frac{\vec{J}}{r}d\tau +\end{align*} +The reasoning for this is not obvious, even to me. One could analogize this to the scalar potential for [[id:32f0b8b1-17bc-4c91-a824-2f2a3bbbdbd1][electrostatics]]. diff --git a/mindmap/mathematics.org b/mindmap/mathematics.org index d6d7065..dc51536 100644 --- a/mindmap/mathematics.org +++ b/mindmap/mathematics.org @@ -24,4 +24,7 @@ model using category theory. ** Mathematical Models *** [[id:ece8bf94-4e3c-4939-a77a-9949c1ec0dc6][Physics]] -This is a stub. +Physics is the study of the natural world and its laws, usually resorting to a mathematical framework. + +*** Economics +the study of human behavior; generally speaking, economists use mathematical models for models of the macroeconomy. diff --git a/mindmap/natural number.org b/mindmap/natural number.org index 9861df6..8b3f31a 100644 --- a/mindmap/natural number.org +++ b/mindmap/natural number.org @@ -13,8 +13,8 @@ I will start with the Peano arithmetic formulation. First, we define an immediat successor function $S:\mathbb{N}\rightarrow\mathbb{N}$ which effectively "adds one" (although we haven't defined addition yet), and a number we call $0 \in \mathbb{N}$. We then define an axiom: \begin{align*} -\forall n \in \mathbb{N} \; \nexists S(n) \; s.t. S(n) = 0; \\ -\forall n \in \mathbb{N} \; S(n) \in \mathbb{N}. +\forall n \in \mathbb{N}, \nexists S(n), s.t. S(n) = 0; \\ +\forall n \in \mathbb{N}, S(n) \in \mathbb{N}. \end{align*} which is equivalent to saying: adding one to any natural number makes it not equal to zero, and any natural number's successor is a natural number. Because zero is a natural number, we can define @@ -42,7 +42,7 @@ however, they don't allow for the ability for us to extrapolate properties of na ** [[id:16b06b82-99cc-4343-b171-fb2166c46a30][Induction]] Let's introduce our last axiom: \begin{align*} -\forall n \in \mathbb{N} \: \forall P(n) \; P(0) \land (P(n) \rightarrow P(S(n))) \rightarrow P(n) \; \forall n \in \mathbb{N} +\forall n \in \mathbb{N}, \forall P(x), P(0) \land (P(x) \rightarrow P(S(x))) \rightarrow P(n) \end{align*} now, this is the principle of [[id:16b06b82-99cc-4343-b171-fb2166c46a30][induction]] specific to natural numbers. What it is saying is that a property $P(n)$ is true for all $n$ if there is a "base case" $P(0)$ which is true, and you can show that $P(1)$ is diff --git a/mindmap/physics.org b/mindmap/physics.org index b70f829..f0fcf89 100644 --- a/mindmap/physics.org +++ b/mindmap/physics.org @@ -15,22 +15,31 @@ mathematical models postulate this, and non-mathematical models of the universe have been relegated to the study of metaphysics. * Fields in Physics +The current challenge in physics is uniting the big and the small; general relativity, and quantum mechanics. +There is no currently known theory that can describe [[id:2b8515d8-9f3c-44a3-a40d-147f6a2bbb25][everything]], and the very nature of this problem is one containing +many correspondences and [[id:1b1a8cff-1d20-4689-8466-ea88411007d7][dualities]]. ** Classical Mechanics Classical mechanics deals with fields of physics that do not deal with time dilation or quantum -weirdness. It is called classical mechanics because most of these theories were invented before +weirdness. It is called classical mechanics because most of these theories wer invented before their quantum or relativistic counterparts, and usually serve as a baseline understanding for the later topics. -*** Newtonian Mechanics +*** [[id:6e2a9d7b-7010-41da-bd41-f5b2dba576d3][Newtonian mechanics]] It all started when Newton created three (but really two) fundamental laws of the universe that governed all things. -*** Lagrangian Mechanics +*** [[id:83da205c-7966-417e-9b77-a0a354099f30][Lagrangian mechanics]] This is a different strain of classical mechanics. Instead of looking at direction and vectors, it looks at a single fundamental principle, even more fundamental than inertia and conservation of momentum: -optimization. We believe that nature always optimizes for some parameters in all physical phenomena. +optimization. We believe that nature always optimizes for some parameters in all physical phenomena. Almost +all physical theories including electromagnetism, general relativity, Newtonian mechanics, and even quantum mechanics can be explained +within the Lagrangian framework. *** Classical Electrodynamics Classical electrodynamics attempts to explain the electromagnetic force from a classical perspective. What is light? How does electricity actually work? All these questions you will find (half) answered in the study -of electrodynamics. -**** [[id:32f0b8b1-17bc-4c91-a824-2f2a3bbbdbd1][Electrostatics]] -This is a study of the force of particles with charge on another in a motionless context. It is the baseline -for studying more complicated electromagnetic theory. +of electrodynamics, giving rise to the complete theory encoded in [[id:fde2f257-fa2e-469a-bc20-4d11714a515e][Maxwell's Equations]]. +*** General Relativity +General Relativity aims unify gravity with [[id:e38d94f2-8332-4811-b7bd-060f80fcfa9b][special relativity]], in a unified theory of macroscopic forces +including classical electromagnetism. + +** Quantum Mechanics +Quantum mechanics renounces all hope of having a deterministic view of physics, and instead replaces direct causation +with statistical causation, at least according to some interpretations. diff --git a/mindmap/recursion.org b/mindmap/recursion.org index f500fb3..bfedaca 100644 --- a/mindmap/recursion.org +++ b/mindmap/recursion.org @@ -20,34 +20,35 @@ as [[id:42dbae12-827c-43c4-8dfc-a2cb1e835efa][self-assembly]] and it has deep co describe it in a mathematics context, and then a programming context. For demonstration purposes, I will use [[id:5d2e2f3b-96ac-4196-9baf-4c3d6d349c98][python]]. * [[id:a6bc601a-7910-44bb-afd5-dffa5bc869b1][Mathematics]] Describes Recursion -For this example, I will be using the factorial. One might define it like so: +For this example, I will be using the [[id:aed6b5dc-c2ec-4e8c-b793-538cd5d6e355][factorial]]. One might define it like so: \begin{align*} f: \mathbb{N}\rightarrow\mathbb{N}\ s.t. \\ f(0) = 1 \\ f(n) = nf(n - 1) \end{align*} -in other words, we want a function defined over [[id:2d6fb5ac-a273-4b33-949c-37380d03c076][natural numbers]] that is one when the input is zero, +in other words, we want a [[id:b1f9aa55-5f1e-4865-8118-43e5e5dc7752][function]] defined over [[id:2d6fb5ac-a273-4b33-949c-37380d03c076][natural numbers]] that is one when the input is zero, and otherwise multiplies the input with a copy of itself, only the input is one less. Let's try evaluating -this function at $x = 3$. +this [[id:b1f9aa55-5f1e-4865-8118-43e5e5dc7752][function]] at $x = 3$. \begin{align*} -f(3) = 3 * f(3 - 1) = 3 * f(2) \\ -f(2) = 2 * f(1) \\ -f(1) = 1 * f(0) \\ +f(3) = 3f(3 - 1) = 3f(2) \\ +f(2) = 2f(1) \\ +f(1) = 1f(0) \\ f(0) = 1 \end{align*} once we substitute $f(0) = 1$ in, you will see it all collapses. \begin{align*} f(0) = 1 \\ -f(1) = 1 * f(0) = 1 * 1 = 1 \\ -f(2) = 2 * f(1) = 2 * 1 = 2 \\ -f(3) = 3 * f(2) = 3 * 2 = 6 +f(1) = 1f(0) = 1 \times 1 = 1 \\ +f(2) = 2f(1) = 2 \times 1 = 2 \\ +f(3) = 3f(2) = 3 \times 2 = 6 \end{align*} and so the result is multiplying $3 * 2 * 1 * 1 = 6$. If you observe what we did, you'll see that we started by trying to replace unknown variables by trying to evaluate $f(x)$ one number down, and eventually we reach a "base case" -- zero. As soon as the "base case" occurs, we then "go back up" by replacing all the unknown values with known ones -- and that's how we evaluate recursive functions. + * Programming Describes Recursion -Even if you don't understand programming, it should be clear that this represents the factorial function: +Even if you don't understand programming, it should be clear that this represents the [[id:aed6b5dc-c2ec-4e8c-b793-538cd5d6e355][factorial]] [[id:b1f9aa55-5f1e-4865-8118-43e5e5dc7752][function]]: #+begin_src python :exports both def factorial(x): if x < 0: @@ -130,5 +131,4 @@ Assembly language section coming soon! We will be using NASM due to its readabil * TODO Recursion Describes…? * TODO Recursion is not Recursive -There are some things * TODO Recursion = [[id:1b1a8cff-1d20-4689-8466-ea88411007d7][duality]]? diff --git a/mindmap/special relativity.org b/mindmap/special relativity.org new file mode 100644 index 0000000..ffb4cb7 --- /dev/null +++ b/mindmap/special relativity.org @@ -0,0 +1,68 @@ +:PROPERTIES: +:ID: e38d94f2-8332-4811-b7bd-060f80fcfa9b +:END: +#+title: special relativity +#+author: Preston Pan +#+html_head: +#+html_head: +#+html_head: +#+options: broken-links:t + +* Motivation +[[id:6e2a9d7b-7010-41da-bd41-f5b2dba576d3][Newtonian mechanics]] is proven to be experimentally effective for macroscopic phenomena. However, it fails in the attempt +to unify it with [[id:fde2f257-fa2e-469a-bc20-4d11714a515e][Maxwell's Equations]]; the speed of light and electromagnetic radiation in general confirmed by Maxwell's equations +are invariant to relative speed; this is in contradiction to the Galilean velocity addition that Newtonian mechanics postulates: +\begin{align*} +\vec{v} = \vec{v}_{1} + \vec{v}_{2} +\end{align*} +Where $\vec{v}_{1}$ and $\vec{v}_{2}$ are the speeds of the two objects, and $\vec{v}$ is the relative velocity between the two. The contradiction lies in the +attempt to do this type of velocity addition with the speed of light. The speed of light must remain invariant including the relative +speed (all experiments thus far confirm this and Maxwell's equations have an absolute velocity of the speed of light in a vacuum), +but when another object is moving relative to light, it results in something lesser or greater than the speed of light, even though +it must remain the same. To solve this, we must add another two postulates to Newtonian mechanics: +1. The speed of light must remain constant under all reference frames. +2. The laws of physics remain consistent within all inertial reference frames. +The result of these two additions is known as the /special theory of relativity/. + +* Derivation of Gamma Factor +Suppose Bob is on a train, where the train is moving at a constant speed to the right $\vec{v}$. Alice is outside of the train observing +Bob. Now Alice and Bob decide to use a clock to keep track of time; they do this by calculating the amount of times light +bounces from the floor to the roof of the train on mirrors. Note that the method by which they keep track of time doesn't matter, and +who keeps track of time doesn't matter, as we will see. All that matters is that nothing can move faster than the speed of light, so +no information can either; light in this case can be replaced with something else that can keep track of time in the same way. In any case, +once the light reaches the roof from the floor, where this distance is $d$ meters, $\frac{d}{c}$ seconds will have passed for Bob. + +#+caption: A very scientifically accurate drawing of the situation +#+attr_html: :width 300px +[[../img/relativity1.jpg]] + +Now this image is from Bob's perspective; when we switch to Alice's perspective, we gain a new insight; that /light has to travel the same speed for her/, but +it has a larger distance to travel because of the train's velocity. + +#+caption: Light ray from Alice's perspective +#+attr_html: :width 300px +[[../img/relativity2.jpg]] + +from this diagram, we can gather that the amount of time it takes for light to reach the roof will be longer. +Also, we can see that if Alice believes in Bob's clock, her time would be: +\begin{align*} +t' = \frac{d}{\sqrt{c^{2} - v^{2}}} +\end{align*} +which is considerably different from the $\frac{d}{c}$ we got for Bob. This means that using the same clock can cause /different time measurements/ between the two +people. The gamma factor is defined as: +\begin{align*} +\gamma = \frac{t'}{t} \\ +\gamma = \frac{d}{\sqrt{c^{2} - v^{2}}}\frac{c}{d} \\ += \frac{c}{\sqrt{c^{2} - v^{2}}} \\ += \frac{c}{\frac{c}{c}\sqrt{c^{2} - v^{2}}} \\ +\gamma = \frac{1}{\sqrt{1 - \frac{v^{2}}{c^{2}}}} +\end{align*} +Note that the gamma factor is independent of distance traveled, which lets us calculate our relativistic time: +\begin{align*} +\gamma t = t' +\end{align*} +There is a profound implication from this realization, and that is that it is not sufficient to view time in an objective way; time measurements +are inertial reference frame dependent. This process where time slows down for the moving reference frame is called /time contraction/. +* Space Contraction +Now we introduce the idea of /space contraction/; just like how time can slow down for moving inertial reference frames with respect to other +reference frames, space can also contract in the same way. Imagine a light ray that goes from one side of the train to the other. diff --git a/mstile-150x150.png b/mstile-150x150.png new file mode 100644 index 0000000..8e1fd5d Binary files /dev/null and b/mstile-150x150.png differ diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/safari-pinned-tab.svg b/safari-pinned-tab.svg new file mode 100644 index 0000000..47377e2 --- /dev/null +++ b/safari-pinned-tab.svg @@ -0,0 +1,4100 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site.webmanifest b/site.webmanifest new file mode 100644 index 0000000..b20abb7 --- /dev/null +++ b/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/style.css b/style.css index f1d5295..9d28237 100644 --- a/style.css +++ b/style.css @@ -1,330 +1,162 @@ -/* -The MIT License (MIT) +@import url("https://fonts.googleapis.com/css2?family=Lora:wght@500&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Inconsolata&display=swap"); -Copyright (c) 2015 Thomas Frössman - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. -*/ -@import url(http://fonts.googleapis.com/css?family=Inconsolata); -@import url(http://fonts.googleapis.com/css?family=PT+Sans); -@import url(http://fonts.googleapis.com/css?family=PT+Sans+Narrow:400,700); -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -nav, -section, -summary { - display: block; -} -audio, -canvas, -video { - display: inline-block; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden] { - display: none; -} -html { - font-family: sans-serif; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} body { - margin: 0; -} -a:focus { - outline: thin dotted; -} -a:active, -a:hover { - outline: 0; -} -h1 { - font-size: 2em; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -mark { - background: #ff0; - color: #000; -} -code, -kbd, -pre, -samp { - font-family: monospace, serif; - font-size: 1em; -} -pre { - white-space: pre-wrap; - word-wrap: break-word; -} -q { - quotes: "\201C" "\201D" "\2018" "\2019"; + margin: 40px auto; + width: 610px; + max-width: 100%; + line-height: 1.6; + font-size: 16px; + background: #fffff4; + color: #3a1616; + padding: 0 10px; + font-size: 18px; + line-height: 28px; + font-family: "Lora"; + font-weight: 500; + /* Smooth the font a little bit, it's a + bit too bold on retina screens */ + -webkit-font-smoothing: antialiased; } -small { - font-size: 80%; -} -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 0; -} -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} -legend { - border: 0; - padding: 0; -} -button, -input, -select, -textarea { - font-family: inherit; - font-size: 100%; - margin: 0; -} -button, + +/* --------------------------------------------------- */ +/* Make a nice input form with rounded corners and hover + animations*/ +/* --------------------------------------------------- */ input { - line-height: normal; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -input[disabled] { - cursor: default; -} -input[type="checkbox"], -input[type="radio"] { + padding: 10px 16px; + margin: 2px 0; box-sizing: border-box; - padding: 0; -} -input[type="search"] { - -webkit-appearance: textfield; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} -textarea { - overflow: auto; - vertical-align: top; + border: 2px solid #dabebe; + border-radius: 6px; + background: #fffff4; + color: #3a1616; + font-size: 16px; + -webkit-transition: 0.5s; + transition: 0.5s; + outline: none; +} +input:focus { + border: 2px solid #3a1616; } -table { - border-collapse: collapse; - border-spacing: 0; + +/* --------------------------------------- */ +/* The button is very similar to the input */ +/* --------------------------------------- */ +.button { + background-color: #fffff4; + border: none; + color: black; + padding: 6px 14px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + margin: 4px 2px; + transition-duration: 0.4s; + cursor: pointer; + border: 2px solid #3a1616; + border-radius: 6px; } -html { - font-family: 'PT Sans', sans-serif; +.button:hover { + background-color: #3a1616; + color: white; } -pre, -code { - font-family: 'Inconsolata', monospace; + +/* ----------------------------------------------- */ +/* Various classes for messages of different kinds */ +/* ----------------------------------------------- */ +.isa_info, +.isa_success, +.isa_warning, +.isa_error { + width: 90%; + margin: 10px 0px; + padding: 12px; +} +.isa_info { + color: #00529b; + background-color: #bde5f8; +} +.isa_success { + color: #4f8a10; + background-color: #dff2bf; +} +.isa_warning { + color: #9f6000; + background-color: #feefb3; +} +.isa_error { + color: #d8000c; + background-color: #ffd2d2; } h1, h2, -h3, -h4, -h5, -h6 { - font-family: 'PT Sans Narrow', sans-serif; - font-weight: 700; -} -html { - background-color: #e6fafc; - color: #4c4f69; - margin: 1em; -} -body { - /* background-color: #f5e0dc; */ - margin: 0 auto; - max-width: 23cm; - /* border: 1pt solid #586e75; */ - padding: 1em; +h3 { + line-height: 1.2; + font-family: "Lora"; } -code { - color: #cdd6f4; - background-color: #073642; - padding: 2px; + +img { + width: 500px; + max-width: 100%; + border-radius: 10px; + text-align: center; } + +/* --------------------------------------------- */ +/* Bold hover animations on links and clickables */ +/* --------------------------------------------- */ a { - color: #1e66f5; -} -a:visited { - color: #e64553; + cursor: pointer; + color: #217ab7; + line-height: inherit; + transition: 0.14s; } a:hover { - color: #e64553; + color: white; + background-color: #3297d3; } -h1 { - color: #04a5e5; +a:visited { + color: #43458b; + border-color: #43458b; } -h2, -h3, -h4, -h5, -h6 { - color: #04a5e5; +a:visited:hover { + color: white; + background-color: #9251ac; } + pre { - background-color: #002b36; - color: #839496; - border: 1pt solid #586e75; - padding: 1em; - box-shadow: 5pt 5pt 8pt #073642; -} -pre code { - background-color: #002b36; -} -h1 { - font-size: 2.8em; -} -h2 { - font-size: 2.4em; + font-family: "Inconsolata", monospace; } -h3 { - font-size: 1.8em; -} -h4 { - font-size: 1.4em; -} -h5 { - font-size: 1.3em; -} -h6 { - font-size: 1.15em; -} -.tag { - background-color: #073642; - color: #d33682; - padding: 0 0.2em; -} -.todo, -.next, -.done { - color: #002b36; - background-color: #dc322f; - padding: 0 0.2em; -} -.tag { - -webkit-border-radius: 0.35em; - -moz-border-radius: 0.35em; - border-radius: 0.35em; -} -.TODO { - -webkit-border-radius: 0.2em; - -moz-border-radius: 0.2em; - border-radius: 0.2em; - background-color: #2aa198; -} -.NEXT { - -webkit-border-radius: 0.2em; - -moz-border-radius: 0.2em; - border-radius: 0.2em; - background-color: #268bd2; -} -.ACTIVE { - -webkit-border-radius: 0.2em; - -moz-border-radius: 0.2em; - border-radius: 0.2em; - background-color: #268bd2; -} -.DONE { - -webkit-border-radius: 0.2em; - -moz-border-radius: 0.2em; - border-radius: 0.2em; - background-color: #859900; -} -.WAITING { - -webkit-border-radius: 0.2em; - -moz-border-radius: 0.2em; - border-radius: 0.2em; - background-color: #cb4b16; -} -.HOLD { - -webkit-border-radius: 0.2em; - -moz-border-radius: 0.2em; - border-radius: 0.2em; - background-color: #d33682; -} -.NOTE { - -webkit-border-radius: 0.2em; - -moz-border-radius: 0.2em; - border-radius: 0.2em; - background-color: #d33682; -} -.CANCELLED { - -webkit-border-radius: 0.2em; - -moz-border-radius: 0.2em; - border-radius: 0.2em; - background-color: #859900; + +::selection { + color: white; + background: #ff4081; } + #postamble { - padding-top: 12px; - font-size: 12px; } +/* #table-of-contents { */ +/* height: 100%; /\* Full-height: remove this if you want "auto" height *\/ */ +/* width: 160px; /\* Set the width of the sidebar *\/ */ +/* position: fixed; /\* Fixed Sidebar (stay in place on scroll) *\/ */ +/* z-index: 1; /\* Stay on top *\/ */ +/* top: 0; /\* Stay at the top *\/ */ +/* left: 0; */ +/* overflow-x: hidden; /\* Disable horizontal scroll *\/ */ +/* padding-top: 20px; */ +/* } */ +/* #table-of-contents ul a { */ +/* padding: 6px 8px 6px 16px; */ +/* text-decoration: none; */ +/* font-size: 25px; */ +/* display: block; */ +/* } */ + +.src, .example { - color: #fdf6e3; -} -.src { - color: #fdf6e3; + color: #ebdbb2; + background-color: #282828; }