From f61026119df4700f69eb73e95620bc5928ca0fcb Mon Sep 17 00:00:00 2001 From: User Date: Tue, 13 Oct 2009 02:52:09 +0000 Subject: Grand rename for gitit transfer --- software/MOSS | 98 ----------------------- software/MOSS.page | 98 +++++++++++++++++++++++ software/bash | 6 -- software/bash.page | 6 ++ software/debian | 40 ---------- software/debian.page | 40 ++++++++++ software/firefox-tricks | 16 ---- software/firefox-tricks.page | 16 ++++ software/freebsd-packages | 63 --------------- software/freebsd-packages.page | 63 +++++++++++++++ software/freebsd-tricks | 24 ------ software/freebsd-tricks.page | 24 ++++++ software/functional programming | 52 ------------ software/functional programming.page | 52 ++++++++++++ software/gimp | 19 ----- software/gimp.page | 19 +++++ software/git | 7 -- software/git.page | 7 ++ software/grub-boot | 17 ---- software/grub-boot.page | 17 ++++ software/matlab | 39 --------- software/matlab.page | 39 +++++++++ software/pynsfs | 150 ----------------------------------- software/pynsfs.page | 150 +++++++++++++++++++++++++++++++++++ software/ruby | 67 ---------------- software/ruby.page | 67 ++++++++++++++++ software/sagemath | 23 ------ software/sagemath.page | 23 ++++++ software/scheme | 85 -------------------- software/scheme.page | 85 ++++++++++++++++++++ software/server-setup | 51 ------------ software/server-setup.page | 51 ++++++++++++ software/unix-tricks | 13 --- software/unix-tricks.page | 13 +++ software/vim | 38 --------- software/vim.page | 38 +++++++++ 36 files changed, 808 insertions(+), 808 deletions(-) delete mode 100644 software/MOSS create mode 100644 software/MOSS.page delete mode 100644 software/bash create mode 100644 software/bash.page delete mode 100644 software/debian create mode 100644 software/debian.page delete mode 100644 software/firefox-tricks create mode 100644 software/firefox-tricks.page delete mode 100644 software/freebsd-packages create mode 100644 software/freebsd-packages.page delete mode 100644 software/freebsd-tricks create mode 100644 software/freebsd-tricks.page delete mode 100644 software/functional programming create mode 100644 software/functional programming.page delete mode 100644 software/gimp create mode 100644 software/gimp.page delete mode 100644 software/git create mode 100644 software/git.page delete mode 100644 software/grub-boot create mode 100644 software/grub-boot.page delete mode 100644 software/matlab create mode 100644 software/matlab.page delete mode 100644 software/pynsfs create mode 100644 software/pynsfs.page delete mode 100644 software/ruby create mode 100644 software/ruby.page delete mode 100644 software/sagemath create mode 100644 software/sagemath.page delete mode 100644 software/scheme create mode 100644 software/scheme.page delete mode 100644 software/server-setup create mode 100644 software/server-setup.page delete mode 100644 software/unix-tricks create mode 100644 software/unix-tricks.page delete mode 100644 software/vim create mode 100644 software/vim.page (limited to 'software') diff --git a/software/MOSS b/software/MOSS deleted file mode 100644 index 4de6d23..0000000 --- a/software/MOSS +++ /dev/null @@ -1,98 +0,0 @@ -==== -MOSS -==== --------------------------------- -Many User Operating System Stuff --------------------------------- - -:Author: Bryan Newbold - -Moss is a vague concept I have for an operating-system-like-system that -attempts to realize some of the promises of distributed universal computing -and user management, continuation-based serializable programming, persistent -data accessibility, file and process versioning, central foreign function -management, and code/content distribution. It'll be easy! - -.. topic:: Implementation - - Moss would probably start as "stuff": middleware, userland applications, - utilities, and native shell and GUI interfaces. It could also be a - separate hosted virtual machine, a monolithic application, a kernel - extension, or ultimately run alone over a high performance shim host OS. - - Distribution would be self hosting and viral: users would replicate a copy - of the system from a friend instead of from a central server, patches - and applications would be distributed word-of-mouth, and trust networks - would form naturally via this distribution. Customization and feature sets - would be passed on, which makes it likely that a user would receive a - system already tweaked for their own needs and computing knowledge level. - - *Existing Projects:* Inferno, Xen, vmware, Java, GNU/* - -.. topic:: Universal, distributed file system - - The core of the system would be a universally accessible identity-based - operating system. Some authoritive domain would probably be required, but - public identity brokers would allow anonymous identities. "Strong - Cryptography" is a goal, allowing a user's content to be hosted/cached - on third party machines in an encrypted form. The real challenge of course - is a flexible crypto system than can be transitioned or upgraded if a flaw - is discovered without total data loss. - - My dream path would look something like:: - - /net/user@some.domain.tld/media/ledzep/tangerine.mp3 - - From the application end there would be no concept of "local" or "remote" - files to a particular machine, though perhaps some feedback on access time. - So, for instance, once tokens/authentication is handled, user utilities - like ``mv`` or ``cat`` could be applied, instead of ``scp`` or ``rcat``. - - Versioning, write locks, etc would have to be considered. - - *Existing projects:* OpenAFS, freeNet, ssh, kerberos, git - -.. topic:: Serializable Programs - - The state/continuation/environment of a running program or chain of - programs should be a "first level object": a bundle of data like any other - that can be transmitted, copied, and stored away for later. A user should - be able to drag an entire application running on a desktop computer - onto their laptop when then need to travel, or from laptop to workstation - if then need additional computing power. Distributed computing could be - implemented by bundling up applets that are shot off to a cluster or - higher performance computer for processing, and the result state of the - program would simply be bundled back to the requesting client. Such bundles - wouldn't be very large: data would be stored on the distributed filesystem, - which appears identical (*exactly?*) to every node on the network. - - Properly written, such a serializable system could also lead to performance - and power consumption savings by swapping idle programs and processes to - disk, or let low-usage nodes shift their processes off to other nodes - and power down. - - *Existing Projects:* Lisp, Stackless - -.. topic:: Foreign Function Management - - It would be nice to see a move away from the library model for shared - code to a more flexible/dynamic foreign function interface that would - allow any appropriate code to announce its availability to other - applications regardless of version, platform, coding language, etc. - This would be a high-level feature, not intended to replace kernel level - operations (read/write) but to make package/library management easier - (it doesn't matter if an image conversion function is coming from a video - editing package or libpng as long as it reads a raw array and returns - a binary stream). - - There's room for dynamic optimization here: if program - realizes it's native string manipulation library sucks for 5meg+ datasets - it could look through the library and see if there's a better one. - - *And,* this too could be distributed, allowing super easy access to - distributed computing resources; underutilized nodes could make their - functions available to nearby nodes, or a machine with tons of matrix - crunching silicon (eg high end video cards) could swap work units - with a machine with a dedicated crypto chip or 64bit+ processor. - - *Existing Projects:* Script-fu from the Gimp diff --git a/software/MOSS.page b/software/MOSS.page new file mode 100644 index 0000000..4de6d23 --- /dev/null +++ b/software/MOSS.page @@ -0,0 +1,98 @@ +==== +MOSS +==== +-------------------------------- +Many User Operating System Stuff +-------------------------------- + +:Author: Bryan Newbold + +Moss is a vague concept I have for an operating-system-like-system that +attempts to realize some of the promises of distributed universal computing +and user management, continuation-based serializable programming, persistent +data accessibility, file and process versioning, central foreign function +management, and code/content distribution. It'll be easy! + +.. topic:: Implementation + + Moss would probably start as "stuff": middleware, userland applications, + utilities, and native shell and GUI interfaces. It could also be a + separate hosted virtual machine, a monolithic application, a kernel + extension, or ultimately run alone over a high performance shim host OS. + + Distribution would be self hosting and viral: users would replicate a copy + of the system from a friend instead of from a central server, patches + and applications would be distributed word-of-mouth, and trust networks + would form naturally via this distribution. Customization and feature sets + would be passed on, which makes it likely that a user would receive a + system already tweaked for their own needs and computing knowledge level. + + *Existing Projects:* Inferno, Xen, vmware, Java, GNU/* + +.. topic:: Universal, distributed file system + + The core of the system would be a universally accessible identity-based + operating system. Some authoritive domain would probably be required, but + public identity brokers would allow anonymous identities. "Strong + Cryptography" is a goal, allowing a user's content to be hosted/cached + on third party machines in an encrypted form. The real challenge of course + is a flexible crypto system than can be transitioned or upgraded if a flaw + is discovered without total data loss. + + My dream path would look something like:: + + /net/user@some.domain.tld/media/ledzep/tangerine.mp3 + + From the application end there would be no concept of "local" or "remote" + files to a particular machine, though perhaps some feedback on access time. + So, for instance, once tokens/authentication is handled, user utilities + like ``mv`` or ``cat`` could be applied, instead of ``scp`` or ``rcat``. + + Versioning, write locks, etc would have to be considered. + + *Existing projects:* OpenAFS, freeNet, ssh, kerberos, git + +.. topic:: Serializable Programs + + The state/continuation/environment of a running program or chain of + programs should be a "first level object": a bundle of data like any other + that can be transmitted, copied, and stored away for later. A user should + be able to drag an entire application running on a desktop computer + onto their laptop when then need to travel, or from laptop to workstation + if then need additional computing power. Distributed computing could be + implemented by bundling up applets that are shot off to a cluster or + higher performance computer for processing, and the result state of the + program would simply be bundled back to the requesting client. Such bundles + wouldn't be very large: data would be stored on the distributed filesystem, + which appears identical (*exactly?*) to every node on the network. + + Properly written, such a serializable system could also lead to performance + and power consumption savings by swapping idle programs and processes to + disk, or let low-usage nodes shift their processes off to other nodes + and power down. + + *Existing Projects:* Lisp, Stackless + +.. topic:: Foreign Function Management + + It would be nice to see a move away from the library model for shared + code to a more flexible/dynamic foreign function interface that would + allow any appropriate code to announce its availability to other + applications regardless of version, platform, coding language, etc. + This would be a high-level feature, not intended to replace kernel level + operations (read/write) but to make package/library management easier + (it doesn't matter if an image conversion function is coming from a video + editing package or libpng as long as it reads a raw array and returns + a binary stream). + + There's room for dynamic optimization here: if program + realizes it's native string manipulation library sucks for 5meg+ datasets + it could look through the library and see if there's a better one. + + *And,* this too could be distributed, allowing super easy access to + distributed computing resources; underutilized nodes could make their + functions available to nearby nodes, or a machine with tons of matrix + crunching silicon (eg high end video cards) could swap work units + with a machine with a dedicated crypto chip or 64bit+ processor. + + *Existing Projects:* Script-fu from the Gimp diff --git a/software/bash b/software/bash deleted file mode 100644 index e3402fb..0000000 --- a/software/bash +++ /dev/null @@ -1,6 +0,0 @@ -================== -BASH -================== - -Job Control - The syntax for "job number" or "JOBSPEC" (when using ``kill`` or similar) is ``%4`` or ``%5``. diff --git a/software/bash.page b/software/bash.page new file mode 100644 index 0000000..e3402fb --- /dev/null +++ b/software/bash.page @@ -0,0 +1,6 @@ +================== +BASH +================== + +Job Control + The syntax for "job number" or "JOBSPEC" (when using ``kill`` or similar) is ``%4`` or ``%5``. diff --git a/software/debian b/software/debian deleted file mode 100644 index d7a047b..0000000 --- a/software/debian +++ /dev/null @@ -1,40 +0,0 @@ -=========================== -Debian Linux -=========================== - -See also `freebsd `_ and -`unix `_ tricks. - -Some gotchas from installing debian a few times: - - * To enable sshd in ubuntu install ``openssh-server`` - - * Massive ``ssh`` headache issues from around 2007-2008; make sure to check on - these. - - * ``git`` is not what you want; you want ``git-core`` - - * Python transition should be better, but I couldn't find a way. - To get to python 2.5 on etch, do something like:: - - Edit /usr/share/python/debian_defaults to this Code: - - # the default python version - default-version = python2.5 - # all supported python versions - supported-versions = python2.4, python2.5 - # formerly supported python versions - old-versions = python2.3 - # unsupported versions, including older versions - unsupported-versions = python2.3 - - Then sudo pycentral updatedefault python2.4 python2.5 - And change the symlink /usr/bin/python to point to python2.5 - - * Make sure to install things like bzip2, unzip, less, etc - - * ``bash`` by default takes a very long time to initialize because the - auto-completion scripts are loaded multiple times; disable this in - ``~/.bashrc``? - - * For building stuff you want build-essential diff --git a/software/debian.page b/software/debian.page new file mode 100644 index 0000000..d7a047b --- /dev/null +++ b/software/debian.page @@ -0,0 +1,40 @@ +=========================== +Debian Linux +=========================== + +See also `freebsd `_ and +`unix `_ tricks. + +Some gotchas from installing debian a few times: + + * To enable sshd in ubuntu install ``openssh-server`` + + * Massive ``ssh`` headache issues from around 2007-2008; make sure to check on + these. + + * ``git`` is not what you want; you want ``git-core`` + + * Python transition should be better, but I couldn't find a way. + To get to python 2.5 on etch, do something like:: + + Edit /usr/share/python/debian_defaults to this Code: + + # the default python version + default-version = python2.5 + # all supported python versions + supported-versions = python2.4, python2.5 + # formerly supported python versions + old-versions = python2.3 + # unsupported versions, including older versions + unsupported-versions = python2.3 + + Then sudo pycentral updatedefault python2.4 python2.5 + And change the symlink /usr/bin/python to point to python2.5 + + * Make sure to install things like bzip2, unzip, less, etc + + * ``bash`` by default takes a very long time to initialize because the + auto-completion scripts are loaded multiple times; disable this in + ``~/.bashrc``? + + * For building stuff you want build-essential diff --git a/software/firefox-tricks b/software/firefox-tricks deleted file mode 100644 index 7eae670..0000000 --- a/software/firefox-tricks +++ /dev/null @@ -1,16 +0,0 @@ -===================================== -Firefox Tricks -===================================== - -Backspace "Go Back" ----------------------- - -Go to ``about:config`` (as if it was a URL), search for "backspace", and set -``browser.backspace_action`` to ``0``. - -Extensions ----------------------- - -BugMeNot is great. - -Firebug is very useful but tends to be a resource hog. diff --git a/software/firefox-tricks.page b/software/firefox-tricks.page new file mode 100644 index 0000000..7eae670 --- /dev/null +++ b/software/firefox-tricks.page @@ -0,0 +1,16 @@ +===================================== +Firefox Tricks +===================================== + +Backspace "Go Back" +---------------------- + +Go to ``about:config`` (as if it was a URL), search for "backspace", and set +``browser.backspace_action`` to ``0``. + +Extensions +---------------------- + +BugMeNot is great. + +Firebug is very useful but tends to be a resource hog. diff --git a/software/freebsd-packages b/software/freebsd-packages deleted file mode 100644 index c58bea4..0000000 --- a/software/freebsd-packages +++ /dev/null @@ -1,63 +0,0 @@ -======================== -FreeBSD Packages -======================== - -These are the packages I typically install for a workstation; this is after selecting an "X windows kernel developer" base system with ``sshd``, linux binary support, and NTP configured:: - - bash - vim - xmms-wma - xmms-flac - xmms-faad2 - xmms - unzip - bzip2 - emacs - mplayer - pork - xpdf - ctorrent - teTeX - ipython-py25 - nginx - firefox - fluxbox - git - subversion - alpine - screen - python - vlc - xzgc - lyx - wget - e2fsprogs - gtkchtheme - -The following are large and/or "optional":: - - xfce - apache - py25-matplotlib - py25-scipy - py-numpy - gimp - mit-scheme - eclipse - pidgin - -The following are added by download:: - - java ("Diablo Latte" jdk from FreeBSD Foundation) - -Bulk Installation ------------------ - -``pkg_add`` will fail with a ``getcwd`` error if you try to install many -packages with the same command. Instead, once you have ``bash`` installed, -you want to do something like:: - - $ for i in `echo vim screen python blah blah blah`; do pkg_add -r $i; done - -Note that with many packages it's almost impossible to avoid installing X -windows; I think there's a flag for this somewhere. diff --git a/software/freebsd-packages.page b/software/freebsd-packages.page new file mode 100644 index 0000000..c58bea4 --- /dev/null +++ b/software/freebsd-packages.page @@ -0,0 +1,63 @@ +======================== +FreeBSD Packages +======================== + +These are the packages I typically install for a workstation; this is after selecting an "X windows kernel developer" base system with ``sshd``, linux binary support, and NTP configured:: + + bash + vim + xmms-wma + xmms-flac + xmms-faad2 + xmms + unzip + bzip2 + emacs + mplayer + pork + xpdf + ctorrent + teTeX + ipython-py25 + nginx + firefox + fluxbox + git + subversion + alpine + screen + python + vlc + xzgc + lyx + wget + e2fsprogs + gtkchtheme + +The following are large and/or "optional":: + + xfce + apache + py25-matplotlib + py25-scipy + py-numpy + gimp + mit-scheme + eclipse + pidgin + +The following are added by download:: + + java ("Diablo Latte" jdk from FreeBSD Foundation) + +Bulk Installation +----------------- + +``pkg_add`` will fail with a ``getcwd`` error if you try to install many +packages with the same command. Instead, once you have ``bash`` installed, +you want to do something like:: + + $ for i in `echo vim screen python blah blah blah`; do pkg_add -r $i; done + +Note that with many packages it's almost impossible to avoid installing X +windows; I think there's a flag for this somewhere. diff --git a/software/freebsd-tricks b/software/freebsd-tricks deleted file mode 100644 index bd36ff1..0000000 --- a/software/freebsd-tricks +++ /dev/null @@ -1,24 +0,0 @@ -===================================== -FreeBSD Tricks -===================================== - -See also `unix `_ and -`debian `_ tricks. - -Set User Shell ------------------------ -``bash`` isn't always installed, so the default user shell is ``sh``; after -``bash`` is installed, a user can change their login shell with the command: - -$ chsh -s /usr/local/bin/bash - -Burn an ISO image ------------------------ -To burn a CD-R, use ``burncd`` like so:: - -$ burncd -f /dev/acd0 data FILENAME.iso fixate - -Network Tools ----------------------- - -``iftop`` is great. diff --git a/software/freebsd-tricks.page b/software/freebsd-tricks.page new file mode 100644 index 0000000..bd36ff1 --- /dev/null +++ b/software/freebsd-tricks.page @@ -0,0 +1,24 @@ +===================================== +FreeBSD Tricks +===================================== + +See also `unix `_ and +`debian `_ tricks. + +Set User Shell +----------------------- +``bash`` isn't always installed, so the default user shell is ``sh``; after +``bash`` is installed, a user can change their login shell with the command: + +$ chsh -s /usr/local/bin/bash + +Burn an ISO image +----------------------- +To burn a CD-R, use ``burncd`` like so:: + +$ burncd -f /dev/acd0 data FILENAME.iso fixate + +Network Tools +---------------------- + +``iftop`` is great. diff --git a/software/functional programming b/software/functional programming deleted file mode 100644 index 4720280..0000000 --- a/software/functional programming +++ /dev/null @@ -1,52 +0,0 @@ -=================================== -Functional Programming -=================================== - -Recursion --------------- -**Partial** functions can recurse endlessly over a finite input. **Total** -functions will terminate/halt over a finite input. (TODO: check this -definition) - -Collectors --------------- -The collector concept/pattern/paradigm is the one I am least familiar with -in functional programming. - -My current understanding is that they essentially allow allow recursive -functions to maintain something like state by wrapping immutable functions -or variables in layer after layer of functions and just holding on to -the outermost layer. For instance, the typical way to write a ``length`` -function in python would be:: - ->>> def how-long(x): ->>> l = 0 ->>> while x.has_next() ->>> l = l+1; ->>> x.pop() ->>> return l - -Using recursion, we could do:: - ->>> def how-long-recurse(x): ->>> if x.has_next() ->>> x.pop() ->>> return how-long-recurse(x) + 1 ->>> else ->>> return 0 - -Using the collector paradigm, we could do:: - ->>> def add1(x): return a+1; ->>> def how-long-col(x, col): ->>> if x.has_next() ->>> return col(0) ->>> else ->>> x.pop() ->>> return how-long-col(x, lambda a: col(add1(a))) - -The first two ways, the plus one operation is actually executed at any given -time, while with the collector implementation we're really creating a -function step by step which will give the answer at the end when it is all -executed. - diff --git a/software/functional programming.page b/software/functional programming.page new file mode 100644 index 0000000..4720280 --- /dev/null +++ b/software/functional programming.page @@ -0,0 +1,52 @@ +=================================== +Functional Programming +=================================== + +Recursion +-------------- +**Partial** functions can recurse endlessly over a finite input. **Total** +functions will terminate/halt over a finite input. (TODO: check this +definition) + +Collectors +-------------- +The collector concept/pattern/paradigm is the one I am least familiar with +in functional programming. + +My current understanding is that they essentially allow allow recursive +functions to maintain something like state by wrapping immutable functions +or variables in layer after layer of functions and just holding on to +the outermost layer. For instance, the typical way to write a ``length`` +function in python would be:: + +>>> def how-long(x): +>>> l = 0 +>>> while x.has_next() +>>> l = l+1; +>>> x.pop() +>>> return l + +Using recursion, we could do:: + +>>> def how-long-recurse(x): +>>> if x.has_next() +>>> x.pop() +>>> return how-long-recurse(x) + 1 +>>> else +>>> return 0 + +Using the collector paradigm, we could do:: + +>>> def add1(x): return a+1; +>>> def how-long-col(x, col): +>>> if x.has_next() +>>> return col(0) +>>> else +>>> x.pop() +>>> return how-long-col(x, lambda a: col(add1(a))) + +The first two ways, the plus one operation is actually executed at any given +time, while with the collector implementation we're really creating a +function step by step which will give the answer at the end when it is all +executed. + diff --git a/software/gimp b/software/gimp deleted file mode 100644 index 97d7393..0000000 --- a/software/gimp +++ /dev/null @@ -1,19 +0,0 @@ -====================== -The Gimp -====================== - -How to Sharpen Photos ----------------------------- -First decompose the image into HSV: Colors/Compose.../Decompose. Select -"HSV" from the list and "Decompose to Layers". This will make a new image -(close the original). - -Select the "Value" layer for editing (so that colors aren't affected). The -"Unsharped Mask" filter is under Filters/Enhance. - -Radius is how many pixels to select, amount is the strength of the filter, -and threshold allows parts of the image to be ignored. - -After applying the filter go back to Colors/Compose.../Compose and select -HSV again to regenerate the color image. - diff --git a/software/gimp.page b/software/gimp.page new file mode 100644 index 0000000..97d7393 --- /dev/null +++ b/software/gimp.page @@ -0,0 +1,19 @@ +====================== +The Gimp +====================== + +How to Sharpen Photos +---------------------------- +First decompose the image into HSV: Colors/Compose.../Decompose. Select +"HSV" from the list and "Decompose to Layers". This will make a new image +(close the original). + +Select the "Value" layer for editing (so that colors aren't affected). The +"Unsharped Mask" filter is under Filters/Enhance. + +Radius is how many pixels to select, amount is the strength of the filter, +and threshold allows parts of the image to be ignored. + +After applying the filter go back to Colors/Compose.../Compose and select +HSV again to regenerate the color image. + diff --git a/software/git b/software/git deleted file mode 100644 index cd0da69..0000000 --- a/software/git +++ /dev/null @@ -1,7 +0,0 @@ -======================= -Git -======================= - -Quick tip: when you have ``.gitignore`` ignoring everything (with a ``*`` -entry), you need to use ``git-update-index --add FILE`` to actually add the -file, instead of just ``git-add FILE``. diff --git a/software/git.page b/software/git.page new file mode 100644 index 0000000..cd0da69 --- /dev/null +++ b/software/git.page @@ -0,0 +1,7 @@ +======================= +Git +======================= + +Quick tip: when you have ``.gitignore`` ignoring everything (with a ``*`` +entry), you need to use ``git-update-index --add FILE`` to actually add the +file, instead of just ``git-add FILE``. diff --git a/software/grub-boot b/software/grub-boot deleted file mode 100644 index 76c4f7b..0000000 --- a/software/grub-boot +++ /dev/null @@ -1,17 +0,0 @@ -================== -GRUB Boot -================== - -This is useful for, eg, installing debian over the network with no cd drive or -usb stick. - -Download the appropriate initrd.gz and linux kernels from whatever netboot -intallation location (two seperate files), and put them somewhere like -``/boot/install/``. Then edit ``/boot/grub/menu.lst`` and add an entry like:: - - title new install - root (hd0,0) - kernel /boot/install/linux ramdisk_size=128000 root=/dev/rd/0 rw - initrd /boot/install/initrd.gz - -Edit the ramdisk size, ramdisk device path, etc as needed. diff --git a/software/grub-boot.page b/software/grub-boot.page new file mode 100644 index 0000000..76c4f7b --- /dev/null +++ b/software/grub-boot.page @@ -0,0 +1,17 @@ +================== +GRUB Boot +================== + +This is useful for, eg, installing debian over the network with no cd drive or +usb stick. + +Download the appropriate initrd.gz and linux kernels from whatever netboot +intallation location (two seperate files), and put them somewhere like +``/boot/install/``. Then edit ``/boot/grub/menu.lst`` and add an entry like:: + + title new install + root (hd0,0) + kernel /boot/install/linux ramdisk_size=128000 root=/dev/rd/0 rw + initrd /boot/install/initrd.gz + +Edit the ramdisk size, ramdisk device path, etc as needed. diff --git a/software/matlab b/software/matlab deleted file mode 100644 index 20e7110..0000000 --- a/software/matlab +++ /dev/null @@ -1,39 +0,0 @@ -================== -Matlab -================== - -.. warning:: - Stub, just getting started - -`cyclismo.org `_ has a good tutorial. - -Matrix Syntax ------------------- -A = [1,2,3,4] - creates a new matrix -A(1) - selects the first element of a matrix, **zero-indexed** -B = [ [1,2,3], [4,5,6], [7,8,9] ] - creates a one dimensional matrix - -:: - - B = [ [1,2,3], - [4,5,6], - [7,8,9] ] - - creates a two dimensional matrix - -Matrix Operations ------------------- -``inv`` - inverts a square matrix - -Meta-Commands ------------------- -Placing a semicolon at the end of a line prevents the output from being printed to screen. - -``whos`` - Displays variables and their size -``format long``/``format short`` - Selects either 4 or 14 decimal place display diff --git a/software/matlab.page b/software/matlab.page new file mode 100644 index 0000000..20e7110 --- /dev/null +++ b/software/matlab.page @@ -0,0 +1,39 @@ +================== +Matlab +================== + +.. warning:: + Stub, just getting started + +`cyclismo.org `_ has a good tutorial. + +Matrix Syntax +------------------ +A = [1,2,3,4] + creates a new matrix +A(1) + selects the first element of a matrix, **zero-indexed** +B = [ [1,2,3], [4,5,6], [7,8,9] ] + creates a one dimensional matrix + +:: + + B = [ [1,2,3], + [4,5,6], + [7,8,9] ] + + creates a two dimensional matrix + +Matrix Operations +------------------ +``inv`` + inverts a square matrix + +Meta-Commands +------------------ +Placing a semicolon at the end of a line prevents the output from being printed to screen. + +``whos`` + Displays variables and their size +``format long``/``format short`` + Selects either 4 or 14 decimal place display diff --git a/software/pynsfs b/software/pynsfs deleted file mode 100644 index 08b726d..0000000 --- a/software/pynsfs +++ /dev/null @@ -1,150 +0,0 @@ -============================================= -Python Namespace File System -============================================= - -:Author: Bryan Newbold -:Date: July 2008 -:URL: http://git.bnewbold.net?p=pynsfs.git;a=summary - -.. contents:: - -This is an experimental implementation of a python namespace as a virtual -file system, implemented using the python bindings for fusefs on unix. - -At this point only the global namespace of the filesystem instance itself is -accessible, and only limited access is available to that. If anything goes -wrong it can cause a hard lock and system crash; don't leave it running and -don't try to write anything substantial. - -The source code can be checked out from the above URL. - -Features ---------------- -An example session goes like:: - - snark# ls /mnt/python/ - - snark# python nsfs.py /mnt/python/ - *** init complete - let's go! - - snark# cd /mnt/python/ - - snark# ls -l - total 6 - -r--r--r-- 1 root wheel 30 Dec 31 1969 DefaultStat - -r--r--r-- 1 root wheel 33 Dec 31 1969 DefaultStatVfs - -r--r--r-- 1 root wheel 19 Dec 31 1969 Fuse - -r--r--r-- 1 root wheel 30 Dec 31 1969 NamespaceFS - -r--r--r-- 1 root wheel 27 Dec 31 1969 NsfsFile - -r--r--r-- 1 root wheel 17 Dec 31 1969 StringIO - drwxr-xr-x 2 root wheel 0 Dec 31 1969 __builtins__ - -r--r--r-- 1 root wheel 4 Dec 31 1969 __doc__ - -r--r--r-- 1 root wheel 7 Dec 31 1969 __file__ - -r--r--r-- 1 root wheel 8 Dec 31 1969 __name__ - drwxr-xr-x 2 root wheel 0 Dec 31 1969 _find_fuse_parts - drwxr-xr-x 2 root wheel 0 Dec 31 1969 errno - drwxr-xr-x 2 root wheel 0 Dec 31 1969 fuse - -r--r--r-- 1 root wheel 29 Dec 31 1969 main - drwxr-xr-x 2 root wheel 0 Dec 31 1969 os - drwxr-xr-x 2 root wheel 0 Dec 31 1969 stat - -r--r--r-- 1 root wheel 24 Dec 31 1969 time - - snark# ls stat/ - ST_ATIME S_ENFMT S_IMODE S_ISDIR S_IWRITE - ST_CTIME S_IEXEC S_IREAD S_ISFIFO S_IWUSR - ST_DEV S_IFBLK S_IRGRP S_ISGID S_IXGRP - ST_GID S_IFCHR S_IROTH S_ISLNK S_IXOTH - ST_INO S_IFDIR S_IRUSR S_ISREG S_IXUSR - ST_MODE S_IFIFO S_IRWXG S_ISSOCK __builtins__ - ST_MTIME S_IFLNK S_IRWXO S_ISUID __doc__ - ST_NLINK S_IFMT S_IRWXU S_ISVTX __file__ - ST_SIZE S_IFREG S_ISBLK S_IWGRP __name__ - ST_UID S_IFSOCK S_ISCHR S_IWOTH - - snark# cat time - - - snark# echo " Hello Python" >> os/__name__ - - snark# cat os/__name__ - os Hello Python - - snark# rm time - - snark# ls - DefaultStat __builtins__ fuse - DefaultStatVfs __doc__ main - Fuse __file__ os - NamespaceFS __name__ stat - NsfsFile _find_fuse_parts - StringIO errno - - snark# ln __nameofos__ os/__name__ - ln: __nameofos__: No such file or directory - - snark# ln os/__name__ __nameofos__ - - snark# cat __nameofos__ - os Hello Python - - snark# cd .. - - snark# umount /mnt/python/ - -The root directory is the global namespace; modules are available as -subdirectories and all other objects are accessible as files. Strings can -be appended to; all other "files" are readonly and return their string -representation. "Files" can be deleted; "directories" can not. Hard links to -files are possible. - -Requirements ---------------- - -This was developed and has only been tested on FreeBSD 7.0 with Python 2.5.1 -version 0.2 of the python-fuse bindings. - -* `FUSE Filesystem`__ installed and configured on a compatible operating system -* Recent version of Python__ -* `FUSE Python Bindings`__ - -Once everything is installed and configured, the script can just be run -as root; no installation necessary. - -__ http://fuse.sourceforge.net/ -__ http://python.org -__ http://fuse.sourceforge.net/wiki/index.php/FusePython - -Usage --------------- -Try ``# python nsfs.py -h`` to get a list of general FUSE options. A simple -mount command would look like:: - - # python nsfs.py /mnt/python - -To unmount:: - - # umount /mnt/python - -I like to run in foreground, single threaded, with debug info:: - - # python nsfs.py -dsf /mnt/python - -Really only basic command line tools work because they don't check for many -attributes; try ``echo "blah" >> file``, ``cat file``, ``df -h``, ``ls -l`` etc. - -TODO ------------------------ -Functions taking simple arguments (or no arguments) could be implemented as -character devices; ``function_name.doc``, ``function_name.repr``, etc could -give meta-information. - -File of the form ``__thing__`` should be renamed ``.thing``. - -New files should be allowed and saved as strings. - -CHANGELOG ------------------------ - -July 28, 2008 - First implementation diff --git a/software/pynsfs.page b/software/pynsfs.page new file mode 100644 index 0000000..08b726d --- /dev/null +++ b/software/pynsfs.page @@ -0,0 +1,150 @@ +============================================= +Python Namespace File System +============================================= + +:Author: Bryan Newbold +:Date: July 2008 +:URL: http://git.bnewbold.net?p=pynsfs.git;a=summary + +.. contents:: + +This is an experimental implementation of a python namespace as a virtual +file system, implemented using the python bindings for fusefs on unix. + +At this point only the global namespace of the filesystem instance itself is +accessible, and only limited access is available to that. If anything goes +wrong it can cause a hard lock and system crash; don't leave it running and +don't try to write anything substantial. + +The source code can be checked out from the above URL. + +Features +--------------- +An example session goes like:: + + snark# ls /mnt/python/ + + snark# python nsfs.py /mnt/python/ + *** init complete + let's go! + + snark# cd /mnt/python/ + + snark# ls -l + total 6 + -r--r--r-- 1 root wheel 30 Dec 31 1969 DefaultStat + -r--r--r-- 1 root wheel 33 Dec 31 1969 DefaultStatVfs + -r--r--r-- 1 root wheel 19 Dec 31 1969 Fuse + -r--r--r-- 1 root wheel 30 Dec 31 1969 NamespaceFS + -r--r--r-- 1 root wheel 27 Dec 31 1969 NsfsFile + -r--r--r-- 1 root wheel 17 Dec 31 1969 StringIO + drwxr-xr-x 2 root wheel 0 Dec 31 1969 __builtins__ + -r--r--r-- 1 root wheel 4 Dec 31 1969 __doc__ + -r--r--r-- 1 root wheel 7 Dec 31 1969 __file__ + -r--r--r-- 1 root wheel 8 Dec 31 1969 __name__ + drwxr-xr-x 2 root wheel 0 Dec 31 1969 _find_fuse_parts + drwxr-xr-x 2 root wheel 0 Dec 31 1969 errno + drwxr-xr-x 2 root wheel 0 Dec 31 1969 fuse + -r--r--r-- 1 root wheel 29 Dec 31 1969 main + drwxr-xr-x 2 root wheel 0 Dec 31 1969 os + drwxr-xr-x 2 root wheel 0 Dec 31 1969 stat + -r--r--r-- 1 root wheel 24 Dec 31 1969 time + + snark# ls stat/ + ST_ATIME S_ENFMT S_IMODE S_ISDIR S_IWRITE + ST_CTIME S_IEXEC S_IREAD S_ISFIFO S_IWUSR + ST_DEV S_IFBLK S_IRGRP S_ISGID S_IXGRP + ST_GID S_IFCHR S_IROTH S_ISLNK S_IXOTH + ST_INO S_IFDIR S_IRUSR S_ISREG S_IXUSR + ST_MODE S_IFIFO S_IRWXG S_ISSOCK __builtins__ + ST_MTIME S_IFLNK S_IRWXO S_ISUID __doc__ + ST_NLINK S_IFMT S_IRWXU S_ISVTX __file__ + ST_SIZE S_IFREG S_ISBLK S_IWGRP __name__ + ST_UID S_IFSOCK S_ISCHR S_IWOTH + + snark# cat time + + + snark# echo " Hello Python" >> os/__name__ + + snark# cat os/__name__ + os Hello Python + + snark# rm time + + snark# ls + DefaultStat __builtins__ fuse + DefaultStatVfs __doc__ main + Fuse __file__ os + NamespaceFS __name__ stat + NsfsFile _find_fuse_parts + StringIO errno + + snark# ln __nameofos__ os/__name__ + ln: __nameofos__: No such file or directory + + snark# ln os/__name__ __nameofos__ + + snark# cat __nameofos__ + os Hello Python + + snark# cd .. + + snark# umount /mnt/python/ + +The root directory is the global namespace; modules are available as +subdirectories and all other objects are accessible as files. Strings can +be appended to; all other "files" are readonly and return their string +representation. "Files" can be deleted; "directories" can not. Hard links to +files are possible. + +Requirements +--------------- + +This was developed and has only been tested on FreeBSD 7.0 with Python 2.5.1 +version 0.2 of the python-fuse bindings. + +* `FUSE Filesystem`__ installed and configured on a compatible operating system +* Recent version of Python__ +* `FUSE Python Bindings`__ + +Once everything is installed and configured, the script can just be run +as root; no installation necessary. + +__ http://fuse.sourceforge.net/ +__ http://python.org +__ http://fuse.sourceforge.net/wiki/index.php/FusePython + +Usage +-------------- +Try ``# python nsfs.py -h`` to get a list of general FUSE options. A simple +mount command would look like:: + + # python nsfs.py /mnt/python + +To unmount:: + + # umount /mnt/python + +I like to run in foreground, single threaded, with debug info:: + + # python nsfs.py -dsf /mnt/python + +Really only basic command line tools work because they don't check for many +attributes; try ``echo "blah" >> file``, ``cat file``, ``df -h``, ``ls -l`` etc. + +TODO +----------------------- +Functions taking simple arguments (or no arguments) could be implemented as +character devices; ``function_name.doc``, ``function_name.repr``, etc could +give meta-information. + +File of the form ``__thing__`` should be renamed ``.thing``. + +New files should be allowed and saved as strings. + +CHANGELOG +----------------------- + +July 28, 2008 + First implementation diff --git a/software/ruby b/software/ruby deleted file mode 100644 index e64f73e..0000000 --- a/software/ruby +++ /dev/null @@ -1,67 +0,0 @@ -================== -Ruby -================== - -.. note:: This information is very rough, it's mostly my notes about what is - different about Ruby syntax compared to similar modern interpreted - pan-paradigm languages like Python. - -A unique intro to ruby is `"Why's Poignant Guide to Ruby"`__, a web-comic-y -short free online book by why the luck stiff. The more serious reference is -the "pickax" book. - -__ http://poignantguide.net/ - -Blocks ---------- -Blocks of code can be passed to functions, making ruby code more of a first -order data type. - -Ranges ----------- - ->>> 2..7 # => 2..7 ->>> (2..7).to_a # => [2, 3, 4, 5, 6, 7] ->>> (2...7).to_a # => [2, 3, 4, 5, 6] ->>> ('e'..'h').to_a # => ["e", "f", "g", "h"] - -Control Structures --------------------- -Can use ``if`` after a statement:: - ->>> a = c if c > b - -Along with the usual ``break`` and ``next``, there is ``redo`` which redoes -the current loop (initial conditions may have been changed). - - -Boolean Operators --------------------- -Anything that is not ``nill`` or ``false`` is true. To force interpretation -as boolean, use ``!!`` (not not):: - ->>> !!(nil) # => false ->>> !!(true) # => true ->>> !!('') # => true ->>> !!(0) # => true ->>> !!({}) # => true - - -Misc ----------------- -Can use nasty Perl style regular expression stuff:: - ->>> re1 = /\d+/ ->>> "There are 5 kilos of chunky bacon on the table!" =~ re1 # => 10, the index ->>> $~ # => # ->>> $~.pre_hash # => "There are " - -Also $1, $2, etc. - -The "splat operator", '*', either collects or expands extra arguments depending -on syntax (I think this is kind of icky):: - ->>> a, b = 1, 2, 3, 4 # a=1, b=2 ->>> a, *b = 1, 2, 3, 4 # a=1, b=[2,3,4] ->>> c, d = 5, [6, 7, 8] # c=5, d=[6,7,8] ->>> c, d = 5, *[6, 7, 8] # c=5, b=6 diff --git a/software/ruby.page b/software/ruby.page new file mode 100644 index 0000000..e64f73e --- /dev/null +++ b/software/ruby.page @@ -0,0 +1,67 @@ +================== +Ruby +================== + +.. note:: This information is very rough, it's mostly my notes about what is + different about Ruby syntax compared to similar modern interpreted + pan-paradigm languages like Python. + +A unique intro to ruby is `"Why's Poignant Guide to Ruby"`__, a web-comic-y +short free online book by why the luck stiff. The more serious reference is +the "pickax" book. + +__ http://poignantguide.net/ + +Blocks +--------- +Blocks of code can be passed to functions, making ruby code more of a first +order data type. + +Ranges +---------- + +>>> 2..7 # => 2..7 +>>> (2..7).to_a # => [2, 3, 4, 5, 6, 7] +>>> (2...7).to_a # => [2, 3, 4, 5, 6] +>>> ('e'..'h').to_a # => ["e", "f", "g", "h"] + +Control Structures +-------------------- +Can use ``if`` after a statement:: + +>>> a = c if c > b + +Along with the usual ``break`` and ``next``, there is ``redo`` which redoes +the current loop (initial conditions may have been changed). + + +Boolean Operators +-------------------- +Anything that is not ``nill`` or ``false`` is true. To force interpretation +as boolean, use ``!!`` (not not):: + +>>> !!(nil) # => false +>>> !!(true) # => true +>>> !!('') # => true +>>> !!(0) # => true +>>> !!({}) # => true + + +Misc +---------------- +Can use nasty Perl style regular expression stuff:: + +>>> re1 = /\d+/ +>>> "There are 5 kilos of chunky bacon on the table!" =~ re1 # => 10, the index +>>> $~ # => # +>>> $~.pre_hash # => "There are " + +Also $1, $2, etc. + +The "splat operator", '*', either collects or expands extra arguments depending +on syntax (I think this is kind of icky):: + +>>> a, b = 1, 2, 3, 4 # a=1, b=2 +>>> a, *b = 1, 2, 3, 4 # a=1, b=[2,3,4] +>>> c, d = 5, [6, 7, 8] # c=5, d=[6,7,8] +>>> c, d = 5, *[6, 7, 8] # c=5, b=6 diff --git a/software/sagemath b/software/sagemath deleted file mode 100644 index f01883f..0000000 --- a/software/sagemath +++ /dev/null @@ -1,23 +0,0 @@ -================== -SAGE Math Package -================== - -.. warning:: Under progress! - -This is a reference for the `sage `_ math package. - -Web Notebooks ------------------------------ -To start run ``notebook()`` from an interactive shell; passing a directory as an argument will store files there. Also try``sage_wiki()``! - -To get help on a ``cmd`` type ``cmd?`` in an cell and press the Escape key. - -Interactive Shell ------------------------------ -Instead of the usual python ``**`` you can use ``^`` like the rest of the world, at least from the notebook and shell; use the old operator in scripts? - -Prefacing with ``time`` gives processor time statistics; you can wrap a series of commands with ``t = cputime()`` and ``cputime(t)`` to get the sum of time statistics; ``walltime`` works similarly. - -The general trick for saving text representations of objects is to open a file dscriptor and write the ``str`` of the object to it. - -``save_session`` and ``load_session`` save all objects in the session to a ``.sobj`` file. diff --git a/software/sagemath.page b/software/sagemath.page new file mode 100644 index 0000000..f01883f --- /dev/null +++ b/software/sagemath.page @@ -0,0 +1,23 @@ +================== +SAGE Math Package +================== + +.. warning:: Under progress! + +This is a reference for the `sage `_ math package. + +Web Notebooks +----------------------------- +To start run ``notebook()`` from an interactive shell; passing a directory as an argument will store files there. Also try``sage_wiki()``! + +To get help on a ``cmd`` type ``cmd?`` in an cell and press the Escape key. + +Interactive Shell +----------------------------- +Instead of the usual python ``**`` you can use ``^`` like the rest of the world, at least from the notebook and shell; use the old operator in scripts? + +Prefacing with ``time`` gives processor time statistics; you can wrap a series of commands with ``t = cputime()`` and ``cputime(t)`` to get the sum of time statistics; ``walltime`` works similarly. + +The general trick for saving text representations of objects is to open a file dscriptor and write the ``str`` of the object to it. + +``save_session`` and ``load_session`` save all objects in the session to a ``.sobj`` file. diff --git a/software/scheme b/software/scheme deleted file mode 100644 index dda68f1..0000000 --- a/software/scheme +++ /dev/null @@ -1,85 +0,0 @@ -================== -Scheme -================== - -``mit-scheme`` with the ``scmutils`` package is assumed; the command -``mechanics`` starts in interactive edwin prompt. - -See also notes on `The Little Schemer `__. - -Scheme Implementations ------------------------ -Very partial list, mostly just the ones which are interesting to me. -Alexey Radul maintains a nice table of R5RS implementation details in various -packages on his `website `__. - -MIT/GNU Scheme - The 7.9.0 release (last stable as of 01/01/2009) is not R5RS compatible, - and is generally a pain in the ass to compile on new systems. The 9.0 - release should be easier to compile and distribute because it will use - a C compiler to bootstrap (true?). - -SCM - SCM is a fairly minimal, very small footprint R5RS-compatible - implementation. Apparently very portable and easy to compile. Includes - the Hobbit compiler. Part of the GNU project, maintained at MIT? - -SIOD - SIOD (scheme in one day) is a super small (75k binary?) Scheme - implementation. - -Coding in ``edwin`` ------------------------ - -..note: this section should be spun off as emacs. edwin is essentially a - scheme version of emacs. See this - `emacs cheatsheet `__ - -Common keyboard commands (usually 'M' is alt button, 'C' is ctrl, and 'S' is -meta/super/"windows"): - -========= ==================================================================== -C-x C-f Open a file, or create a new one -C-x C-s Save the file -C-x k Kill (close) a buffer -C-x C-c Exit the editor -C-g Abort a command -C-x C-e Evaluate the previous expression -M-z Evaluate the surrounding expression -M-o Evaluate the entire buffer (everything) -C-c C-c Kill evaluation after an error -C-y Paste (yank) -C-x 2 Split screen vertically -C-x 5 Split screen horizontally -C-x o Switch to next buffer window -C-x 1 Return to non-split screen -M-x Enter a command by name in minibuffer (use tab to complete) -C-x C-b Show buffer menu -C-x b Select buffer -C-x u Undo -C-y Paste -========= ==================================================================== - -Command in ``.edwin`` to set Super-TAB to autocomplete scheme variables:: - - (define-key 'Scheme #\s-tab 'scheme-complete-variable) - -Scope --------------- -``set!`` looks up a symbol name and permanently changes the first value it comes -across. ``let`` (and ``letrec``) create a new symbol with the given value. -But wait, you need a ``lambda`` block to make everything work? - -Environment/Interpreter Commands ------------------------------------ -``(disk-save filename)`` will save a binary microcode image; an existing -image can be specified with the ``--band`` option at runtime or with -``(disk-restore filename)`` from within the interpreter. Bands are also called -worlds. - -"First Class" ------------------- -"Procedures as first class objects" is one of the features commonly attributed -to scheme. What does that mean? SICP describes first class objects as those -that can be: named by variables, passed as arguments, returned as results, -and included in data structures. diff --git a/software/scheme.page b/software/scheme.page new file mode 100644 index 0000000..dda68f1 --- /dev/null +++ b/software/scheme.page @@ -0,0 +1,85 @@ +================== +Scheme +================== + +``mit-scheme`` with the ``scmutils`` package is assumed; the command +``mechanics`` starts in interactive edwin prompt. + +See also notes on `The Little Schemer `__. + +Scheme Implementations +----------------------- +Very partial list, mostly just the ones which are interesting to me. +Alexey Radul maintains a nice table of R5RS implementation details in various +packages on his `website `__. + +MIT/GNU Scheme + The 7.9.0 release (last stable as of 01/01/2009) is not R5RS compatible, + and is generally a pain in the ass to compile on new systems. The 9.0 + release should be easier to compile and distribute because it will use + a C compiler to bootstrap (true?). + +SCM + SCM is a fairly minimal, very small footprint R5RS-compatible + implementation. Apparently very portable and easy to compile. Includes + the Hobbit compiler. Part of the GNU project, maintained at MIT? + +SIOD + SIOD (scheme in one day) is a super small (75k binary?) Scheme + implementation. + +Coding in ``edwin`` +----------------------- + +..note: this section should be spun off as emacs. edwin is essentially a + scheme version of emacs. See this + `emacs cheatsheet `__ + +Common keyboard commands (usually 'M' is alt button, 'C' is ctrl, and 'S' is +meta/super/"windows"): + +========= ==================================================================== +C-x C-f Open a file, or create a new one +C-x C-s Save the file +C-x k Kill (close) a buffer +C-x C-c Exit the editor +C-g Abort a command +C-x C-e Evaluate the previous expression +M-z Evaluate the surrounding expression +M-o Evaluate the entire buffer (everything) +C-c C-c Kill evaluation after an error +C-y Paste (yank) +C-x 2 Split screen vertically +C-x 5 Split screen horizontally +C-x o Switch to next buffer window +C-x 1 Return to non-split screen +M-x Enter a command by name in minibuffer (use tab to complete) +C-x C-b Show buffer menu +C-x b Select buffer +C-x u Undo +C-y Paste +========= ==================================================================== + +Command in ``.edwin`` to set Super-TAB to autocomplete scheme variables:: + + (define-key 'Scheme #\s-tab 'scheme-complete-variable) + +Scope +-------------- +``set!`` looks up a symbol name and permanently changes the first value it comes +across. ``let`` (and ``letrec``) create a new symbol with the given value. +But wait, you need a ``lambda`` block to make everything work? + +Environment/Interpreter Commands +----------------------------------- +``(disk-save filename)`` will save a binary microcode image; an existing +image can be specified with the ``--band`` option at runtime or with +``(disk-restore filename)`` from within the interpreter. Bands are also called +worlds. + +"First Class" +------------------ +"Procedures as first class objects" is one of the features commonly attributed +to scheme. What does that mean? SICP describes first class objects as those +that can be: named by variables, passed as arguments, returned as results, +and included in data structures. diff --git a/software/server-setup b/software/server-setup deleted file mode 100644 index 58b419b..0000000 --- a/software/server-setup +++ /dev/null @@ -1,51 +0,0 @@ -========================================= -Generic Server Setup Tricks -========================================= - -See also `debian `_ and -`freebsd tricks `_. - -bind -------------- -You probably want to hide your bind verison name to prevent scanning and -attacks. Edit ``/etc/bind/named.conf`` or ``/etc/bind/named.conf.options`` -and add this line to the options block:: - - version "Withheld"; - -ntp ------------- -ntp servers listen on port 37. - -temboz ----------- -The temboz feed reader is started by:: - -$./temboz --server & - -in the appropriate directory. - - -File Hierarchy ------------------- -/srv/ - Root for server files, scripts, and databases - -/srv/http/ - Subdirectories for each virtual host live in this folder, out of which - static `HTTP `__ content is served. - -/srv/django/ - Django applications and their databases live in here. - -/srv/git/ - Bare git repositories are stored here; those with a file - ``git-daemon-export-ok`` get served up through a web interface and can be - publically cloned. - -/srv/ - SVN repository roots are stored in sub folder in here. - -/srv/python/ - Standalone python scripts and applications are stored in here (not Django - apps). diff --git a/software/server-setup.page b/software/server-setup.page new file mode 100644 index 0000000..58b419b --- /dev/null +++ b/software/server-setup.page @@ -0,0 +1,51 @@ +========================================= +Generic Server Setup Tricks +========================================= + +See also `debian `_ and +`freebsd tricks `_. + +bind +------------- +You probably want to hide your bind verison name to prevent scanning and +attacks. Edit ``/etc/bind/named.conf`` or ``/etc/bind/named.conf.options`` +and add this line to the options block:: + + version "Withheld"; + +ntp +------------ +ntp servers listen on port 37. + +temboz +---------- +The temboz feed reader is started by:: + +$./temboz --server & + +in the appropriate directory. + + +File Hierarchy +------------------ +/srv/ + Root for server files, scripts, and databases + +/srv/http/ + Subdirectories for each virtual host live in this folder, out of which + static `HTTP `__ content is served. + +/srv/django/ + Django applications and their databases live in here. + +/srv/git/ + Bare git repositories are stored here; those with a file + ``git-daemon-export-ok`` get served up through a web interface and can be + publically cloned. + +/srv/ + SVN repository roots are stored in sub folder in here. + +/srv/python/ + Standalone python scripts and applications are stored in here (not Django + apps). diff --git a/software/unix-tricks b/software/unix-tricks deleted file mode 100644 index 265609f..0000000 --- a/software/unix-tricks +++ /dev/null @@ -1,13 +0,0 @@ -===================================== -UNIX Tricks -===================================== - -See also `freebsd `_ and -`debian `_ tricks. - -Fork many processes with `xargs` ------------------------------------ -To fork off 10 instances of sleep with incremented lengths, 5 at a time:: - -$ seq 10 20 | xargs -n 1 -P 5 sleep - diff --git a/software/unix-tricks.page b/software/unix-tricks.page new file mode 100644 index 0000000..265609f --- /dev/null +++ b/software/unix-tricks.page @@ -0,0 +1,13 @@ +===================================== +UNIX Tricks +===================================== + +See also `freebsd `_ and +`debian `_ tricks. + +Fork many processes with `xargs` +----------------------------------- +To fork off 10 instances of sleep with incremented lengths, 5 at a time:: + +$ seq 10 20 | xargs -n 1 -P 5 sleep + diff --git a/software/vim b/software/vim deleted file mode 100644 index 76ffa24..0000000 --- a/software/vim +++ /dev/null @@ -1,38 +0,0 @@ -============ -It's vim! -============ - -Typical .vimrc ------------------- -Here's what a typical ``.vimrc`` looks like for me:: - - if has('syntax') && (&t_Co > 2) - syntax on - endif - - set history=50 - set wildmode=list:longest,full - set showmode - set showcmd - set smartcase - set shiftwidth=4 - set tabstop=4 - set shiftround - set expandtab - set autoindent - - autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except, finally,def,class - -Commands -------------- -I search and replace globally a lot:: - - :%s/before/after/g - -Tricks -------------- -I often want to pull a particular gnarly line or two from another file; here's -the command I use to grab three lines of context around 'phrase':: - - :r!grep -A 3 'phrase' ../otherfile.txt - diff --git a/software/vim.page b/software/vim.page new file mode 100644 index 0000000..76ffa24 --- /dev/null +++ b/software/vim.page @@ -0,0 +1,38 @@ +============ +It's vim! +============ + +Typical .vimrc +------------------ +Here's what a typical ``.vimrc`` looks like for me:: + + if has('syntax') && (&t_Co > 2) + syntax on + endif + + set history=50 + set wildmode=list:longest,full + set showmode + set showcmd + set smartcase + set shiftwidth=4 + set tabstop=4 + set shiftround + set expandtab + set autoindent + + autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except, finally,def,class + +Commands +------------- +I search and replace globally a lot:: + + :%s/before/after/g + +Tricks +------------- +I often want to pull a particular gnarly line or two from another file; here's +the command I use to grab three lines of context around 'phrase':: + + :r!grep -A 3 'phrase' ../otherfile.txt + -- cgit v1.2.3