Monday, June 26, 2017

News of MIT's NAT saddens me.

I remember when the names iteration.mit.edu and recursion.mit.edu were mine; they pointed to my public IPv4 address 18.238.3.106. I don't claim to have done anything innovative with them, but what I did was very educational. I wrote a minimal http server in C++ and hosted a static website with fractal images I created and a Mandelbrot set Java applet I wrote.

I probably never would have been motivated to learn how to write an http server without such public visibility. Security risks? Yes. (I promptly fixed that one.) Despite this, MIT thrived without a NAT for many years. Even if security risks are greater today, firewalls can be made arbitrarily strict without a NAT.

Monday, June 19, 2017

A bit of TeX hacking

I've decided that if I state, say, Theorem 2.2.15 but don't prove it until many pages and lemmas later in Section 5, then, for the reader's sake, I should repeat the theorem verbatim, including the original theorem number, immediately before the proof, as opposed to going straight from the proof of Lemma 5.2.33 to "Proof of Theorem 2.2.15." (Granted, if the delay between statement and proof is just for one "Main Theorem" whose statement is easy to remember, then this is not necessary. My decision is in the context of revising a longer paper with several theorems stated early and proved much later.)

%#1 theoremstyle inpute (plain/definition/remark/...)
%#2 type of theorem (Theorem/Lemma/Corollary/...)
%#3 label of theorem to be repeated 
%#4 unique new input for \newtheorem 
%#5 statement of theorem
\def\repeattheoremhelper#1#2#3#4#5{
  \theoremstyle{#1}
  \newtheorem*{#4}{#2 \ref{#3}}
  \begin{#4}
    #5
  \end{#4}
}

\def\repeattheorem#1#2{
  \repeattheoremhelper{plain}{#1}{#2}{repeat#2}{\csname state#2\endcsname}
}

%usage example
%\theoremstyle{plain}
%\newtheorem{thm}{Theorem}
%...
%\def\statemytheorem{blah blah}
%\begin{thm}\label{mytheorem}\statemytheorem\end{thm}
%...
%\repeattheorem{Theorem}{mytheorem}
%\begin{proof}
%...
%\end{proof}