Chronological listing of my recent accomplishments:
- 1995 (SegMat, MaasInfo.html)
- 1996 (4 full screens: flashcard program, Macintosh internals, porting to Solaris, Go program)
- 1997 (Fred windows, procmail,
MS-Windows, knot, PCNET)
- 1998 (flashcards, file maintenance)
- 1999 (peer counseling, personal growth)
- 2000 (peer counseling, porting software to Unix)
- 2001 (porting software to CGI, new CGI demos)
- 2001.Nov-2002.Jan (spam-fighting software)
- 2002 (more spam-fighting software, new CGI services, tutoring, flashcard-drill via CGI)
- 2002.Dec..2003.May (much more spam-fighting software)
- 2003 (classes, tutorials, more spam-fighting software, WAP/cellphone pages)
- 2004 (classes, interval arithmetic, Java programming, more spam-fighting software, tutorials, UniCode)
- 2005 (classes, J2EE, BeanShell, SAX, ELISP, Web-accessible instant alert service)
- 2007.Jan -- Began work on my multi-programming-language "cookbook"
-- Wrote new software module for mostly-balanced binary search tree
containing intervals instead of single integers as the keys.
- 2007.Feb -- Completed chapters 1,2, began work on chapter 3, the actual matrix relating two different datatypes to show all utilities which work between them.
-- Began making new decks for my flashcard-drill optimizer: Pre-school reading readiness, ESL, citizenship, English-to-Mandarin. Started another round of enhancements to my existing English-to-Spanish deck.
-- Began re-organizing my old spam-fighting code and related utilities
to have each module in its own separate file, with interfaces between modules
clearly delimited. Also wrote some new modules, and added code to old modules,
and changed old code to be more flexible:
- 2007-2-cmucl.lisp -- Low-level patches etc. specific to CMU
Common Lisp.
- 2007-2-dialup.lisp -- Functions related to VT-100 dialup,
including deliberately-slow printing to avoid buffer overflow.
- 2007-2-mayload.lisp -- Automatic one-time loading of modules
that are needed but haven't been loaded before.
- 2007-2-roll.lisp -- Rolling main version of file to backup and
latest uploaded temporary version to be new main version.
- 2007-2-span1.lisp -- Utilities for dealing with Spanish-language
text, including generating English-to-Spanish flashcard records.
- 2007-2-top.lisp -- Toplevel applications.
- 2007-2-util.lisp -- Low-level utilities not specific to any
specific type of application.
- 2007.Mar -- Continuing work on flashcard decks. Made improvements to flashcard-drill program, including fixing a couple minor bugs which hadn't been noticed before. Began seriously using my program to simultaneously learn Spanish and Mandarin. Making JI\NBU\ daily...
-- More reorganization of old software modules and writing new modules:
- 2007-3-html.lisp -- Fullfledged two-pass parser for HTML syntax!
- 2007-3-nntp.lisp -- Connect to NNTP server and issue commands and download+collect data such as headers or articles.
- 2007-3-rawbw.lisp -- Utilities specific to configuration of this shell machine and the ISP's mail server.
- 2007-3-rfc822.lisp -- Parsing RFC822 headers etc.
- 2007-3-spamu.lisp -- Dealing with spam as it specifically relates to e-mail that arrived on a Unix shell account.
- 2007-3-top.lisp -- More toplevel applications.
- 2007-3-whois.lisp -- Querying WHOIS servers and parsing the result.
- 2007.Apr -- More reorganization of old software modules and writing new modules:
- 2007-4-glean.lisp -- Smart system for recognizing tens of different ad hoc formats by which admins have mentionned spam-complaint (CTW) addresses within whois records, and gleaning the appropriate addresses found there.
- 2007-4-html.lisp -- More add-ons to HTML parser.
- 2007-4-lynx.html -- Running Lynx as sub-process.
- 2007-4-spam.lisp -- Generic routines for dealing with spam, not specific to Unix
- 2007-4-spamu.lisp -- More Unix-specific code related to spam.
- 2007-4-whois.lisp -- Query a WHOIS server to download records (which are later parsed by either the proper WHOIS-record parser here, or simply gleaned by the smart system in another file).
- 2007.May -- More reorganization of old software modules and writing new modules:
- 2007-5-dig.lisp -- Running DiG as sub-process and parsing the report it generates, used to query Domain Name Servers to learn MX and A records.
- 2007-5-mbbt-intlen.lisp -- Add-on to MBBT (mostly-balanced binary-search-tree) to store intervals as keys, and maintain both sub-tree node count and sub-tree total of interval lengths.
- 2007.Jun -- 2007-6-smtp.lisp -- New code for SMTP client using direct
TCP streams.
- 2007.Jul -- Began translating SMTP and NNTP clients to Java, for
porting to MicroSoft Windows.
- 2007.Oct -- Continued work on 2007-4-spamu.lisp which processes spam that arrived on Unix, keeping track of postings to newsgroup news.admin.net-abuse.sightings and Yahoo! Group "Binary Spam Attachments".
Continued work on 2007-2-fc2.lisp which contains maintainence utilities for my flashcard Web applications, including automatically building new decks of flashcards for foreign languages etc.
- 2008.Mar -- Began serious development of ProxHash technology for specific application: Transferrable/Soft skills.
Wrote 2008-3-TextGraphics.lisp which draws diagrams of nodes connected by edges using ASCII-art technique.
- 2008.Apr -- Continued ProxHash development, achieved success mid-month.
Began work on 2008-4-MayLoad.lisp which is similar to the Unix 'make' utility (updating outputs whenever inputs have changed) except that it works with both disk files and in-memory data structures.
Began refactoring ProxHash code to support automatic maintainance of dataflow from input to various needs using 2008-4-MayLoad.lisp.
- 2008.May -- Continued refactoring ProxHash work-to-date to use automated dataflow.
Wrote first draft of specification of 2008-4-MayLoad.lisp
- 2008.Jun -- Began R&D for additional stages of ProxHash application to transferrable skills, including automatic generation of a listing of outliers starting with the most distant from nearest neighbor.
- 2008.Jul -- Re-implemented the basic idea of my 1977 quick-and-dirty algorithm for generating large random proven prime numbers using a newly-conceived cleaner algorithm.
Modified the pseudo-random hashing algorithm used for ProxHash to run as a lazy infinite series, thereby making it usable as an unlimited stream of of pseudo-random numbers that are determined by a seed string.
Modified my quick-and-dirty random-prime algorithm to use the seeded pseudo-random number sequence, thereby providing a deterministic map from seed plus parameters to specific prime(s), thereby allowing the seed to serve as a "password" for re-creating a user's secret prime number(s).
Got InterNet enabled on my cellphone ($5 for up to 5 megabytes download over a 30-day period). Edited my existing WAP pages from 2003 back down to appropriate
tiny size and started creating new WAP pages including ESL for former-Chinese residents who don't yet understand the concept of our semi-phonetic alphabet.
After discovering my login form from 2003 doesn't work on my new cellphone, in parallel with the regular HelloCGI+steps, I've now started HelloWAP+steps for cellphone, to see what needs changing to make CGI applications work on cellphones.
- 2008.Aug -- Finished the ESL page (see link above) for lower-case English letters as first letter of word for easily recognized picture.
Developed extremely defensive measures to protect me from loss of work each time PowerLisp hangs my computer forcing a COLD RESTART.
Wrote PL-patch.lisp which defines nearly-essential Common Lisp functions missing from PowerLisp (REDUCE SLEEP BREAK).
Converted 2005-7-ranpri-gp.lisp and 2005-8-readers.lisp to work in PowerLisp.
Wrote 2008-8-cols.lisp which parses multi-column tabular layout such as directory listing from FileList.
Wrote 2008-8-fill.lisp which fills paragraph with prefix copied to start of each line, essentially what the original EMACS at MIT used to do. One standard usage copies the prefix from the first line. This is useful for quoting what somebody said before you in a discussion forum or e-mail. Another standard usage copies the whitespace indentation from the second line. This is useful for emulating the indentation of HTML list items in lynx or prettyprinting text inside parenthesized expressions.
Wrote 2008-8-wordParse.lisp, which defines a utility to parse words from a string, and uses that utility plus additional code to correctly parse lines from my caller-ID log file, and converts them to scriptlets to report harassing calls to whocalled.us.
- 2008.Sep -- Wrote 2008-9-pp.lisp which optimally pretty-prints a
Lisp structure as an s-expression, confined to various column widths.
- 2008.Oct -- Wrote a proposed plan for recovery from current housing/finacial/economic crisis.
- 2008.Nov -- Wrote a plan for my longstanding idea of a "cooperative" filtering service for job ads.
- 2008.Dec -- Wrote 2008-C-digits.lisp which efficiently computes the number
of digits (in arbitrary base) of a large integer.
- 2009.Jan -- Began maintaining listing of digital-TV channels with info about their quality of service.
- 2009.Feb -- Begin writing PHP code to implement Turing tests to distinguish live humans from spambots, as entry-portals to new Web-based services I'll be setting up, and getting custom TINYURLs to redirect to them. See for example:
- HotNot (photo-verification services affiliated with HotOrNot & America's Most Wanted & Vanished Children's Alliance)
- LinkII (combination of ideas from six degrees of freedom and LinkedIn)
- FilJob (filtering job ads to eliminate jobs requiring skills/experience you don't have)
- UrlBad (registry of bad Web pages and where to report each to appropriate WebMaster)
- xspamx (sample of Turing test, with PHP source which you are free to copy and adapt to protect your own Web-service site)
- NewEco (overall proposal for a new type of economy, namely a "cooperative" barter system, in which the specific services (some listed above) are functional components)
- 2009.Feb... Twitter.Com/CalRobert contains moment-by-moment notes on current work, vaguely analagous to a transaction journal in business, which I plan to eventually copy (selected items) to here.
.