To Do List for David
Online list of things to do ("tasklist")
How You Can Help:
If you can help me with any of these, I'd appreciate it.
If you find a dead link,
, so I can fix it and save the next visitor a bit of annoyance.
"Our chief defect is that we are more given to talking about things than to
-- Jawaharlal Nehru, Indian statesman (1889-1964)
- imaging ECG project - I hope this will help people understand the human heart better.
- propeller analyzer
- "User never notices any single fault" file server project ( partial milestone: distributed wiki )
- ultra-simple email client ... highly resistant to spam
- Jerome Garrett project
- RFID eyeglass-finder ( build small demo ``where are my keys ?'' device. )
- job search
- software bazaar
- wireless power transfer
- 24/7 audio recorder "personal recorder"
- "automated pulsar finder": robotic telescope
- Gumby project
- video camera on a radio controlled airplane (put on RC car first?)
start a ``lending library'' of engineering tools.
- drawing (Inkscape)
- circuit design (gEDA)
- programming (Java + Eclipse + Subversion; Python)
- set up electronics lab
- organize apartment
- getting a Ph.D. ... teaching ... perhaps do projects as "research projects"
Learn the next natural language on my list:
- American Sign Language (Ameslan)
- Morse Code
For more details,
"languages I want to learn"
the translation tools at
make link to show my pages in german
(via one of the online translation tools
Learn the next artificial language on my list:
- Perl (2 niches in particular: chip design / VLSI design and CGI programming)
- VHDL or Verilog
- GNU Octave
- Look at the languages that run on a PIC
- TeX and LaTeX,
- Lisp (probably the Scheme dialect). (Lisp language)
I doubt I will find the time to even start learning the artificial languages below this line.
- learn MHDL, a hardware design language
for modeling *analog* circuits (and microwave systems).
- Atmel AVR assembly language
- Parallax Propeller assembly language
- Prolog (OK, I learned a little bit, but I never got fluent)
- the "WEB" dialect of Pascal
- the "Delphi/Kylix" dialect of Pascal
- Knowledge Interchange Format (KIF)
- the Joy programming language
For more details on all of these languages,
I've already learned many artificial languages.
_Structure and Interpretation of Computer Programs_
book by HaroldAbelson, Gerald Jay Sussman (GeraldSussman) and Julie Sussman
"Do not read reviews of this book. Read the book. Do the exercises.
It will teach you more about the essence of programming than any other book I know."
"this is not a book about Scheme; it is a book about the fundamental aspects of computer programs.''
(Though it also teaches Scheme)"
become familiar with other software development tools:
Subversion, LXR, Bonsai, Tinderbox, Bugzilla.
work on some of my to-program projects
Do some genealogy research on my family
(the Stark, Rice, and Cary families).
Consider making a Rice family web site.
Attempt to become less
"over-specialised and/or excessively arrogant".
the Mozilla calendar project
seems like something important enough to spend time on.
Build electronics things -- things that are useful,
things that are educational, and things that are both.
needs to be implemented (this is way too big for me alone).
Make a list of lots of cool software tools (all the software on my machine)
and how to get it -- to make it easy for others to build a system at least
as good as mine. If everyone posted a list like this, then I could download
all the tools to make my machine at least as powerful as everyone elses,
and they could do the same, a win-win situation.
computer languages I want to learn
[FIXME: move to
for some recommended books for some of these languages,
(Postscript and others)
(FORTH and some others),
(Java and some others),
has a long list of tutorials
for many different computer programming languages.
has written some programming books and made them available online:
_Thinking in Java_,
_Thinking in Enterprise Java_,
_Thinking in C++_ ("This book won the Software Development Magazine Jolt Award for best book published in 1995"),
_Thinking in Python_,
_Thinking in Patterns with Java_
_Black Belt C++, The Master's Collection_
_Computer Interfacing with Pascal & C_
what I think is important for you to understand about the language, rather than
everything I know.
I believe there is an "information importance hierarchy," and
there are some facts that 95% of programmers will never need to know, but
would just confuse people and add to their perception of the complexity of the language.
(the comp.lang.* series of newsgroups)
[web pages with programming language comparisons]
comparison and contrast of various langauges:
"A language that doesn't affect the way you think about programming,
is not worth knowing"
-- Alan Perlis
"faqts : Computers : Programming : Languages"
lists well over 100 languages with
a discussion forum for each language.
[FIXME: move to #algorithm]
"faqts : Computers : Programming : Algorithms"
includes a discussion forum.
lists many computer languages.
The Internet's Current Opinion
What Languages Suck, And What Languages Rule
Developer Shed Network
has discussion groups for each of the popular programming languages ...
and related stuff like "Web Page Development",
"Database Discussion", "non-language specific... Software Design & Algorithms", etc.
``Learning a new language is harmless.
It gives you new ideas and insights.
You don't have to switch, just learn and try it.''
Review of existing Languages
All (?) known computer languages,
with pointers to more information.
There are lots of humourous comparisons between computer languages, such as
``The Parable of the Languages''
by Bb (?)
Computer Language Shootout Scorecard
about 30 different language implementations (a few languages represented by 2 implementations),
and a standard set of programs translated to each language.
compares speed, lines of code, etc.
Doesn't take itself seriously.
Programming Languages Requested --
These are in the order of the most frequently used listed at the top.
- Visual Basic
"which programming languages are hot with employers"
lists (as of 2003-01-04)
Visual Basic 10.07%
(the C programming language might be more or less popular than these -- no statistics were collected for it)
``Perl versus ....''
points to Java vs. Python, ... and other language comparisons
``Different tools are suited to different jobs.
[Y]you can pick up a bowling ball with tweezers,
it is rather difficult and ultimately unrewarding.''
(quoted by Jake Kauth 3 Apr 1996)
programming language comparison
[FIXME: offline ?]
"Review of existing Languages"
has the most exhaustive list I've ever seen of
computer programming languages,
many with useful links to further information.
[FIXME: move my PostScript and Forth links there ?]
The Internet's Current Opinion
gives a pretty (ASCII) 2 D graph,
with various languages plotted on the graph:
Languages that appear higher on the chart (like C and C++)
appear on a greater total number of web pages.
Languages that appear closer to the right side of the chart (like forth)
have a greater 'rules/sucks' ratio -- that is,
they appear more often with 'rules' than with 'sucks'.
DAV: perhaps I would have more fun
learning the languages that people like the best --
Forth, Smalltalk, and
are the furthest right on this chart.
Vote On Programming Languages
Alternatives To C++
has a long list of languages comparable to C++.
perhaps I should list the programming languages I know,
and my comments on each one ...
... maybe become more fluent in Prolog
Dan's Page of Computer Languages
some good C links,
[computer languages to learn]
``The Year Ahead: Skills trends for 2003''
article by Andrew Swinton 2002-12-27
The 'core' technical IT skills, according to e-skills,
demanded by employers for both contractors and permanent staff
are unchanged from last year except for the addition of .Net this year:
- Windows NT
- Visual Basic
- MS Office
Contract staff with SAP and Windows 2000 skills were consistently in demand in 2002
Small increases in demand have been tracked over the last two quarters
in the following skills areas:
free trial download
, OLAP, Smalltalk, BPCS and EPOS for permanent positions, with
JDBC, JSP EPOS, VPN, VBA and Switches had increased demand for contractors.
There is a trend for firms to hire more business-aware staff with
customer focus, client-facing and interpersonal abilities but also
in more technologically specific areas such as:
- Project Management
The Year In Scripting Languages
has good pointers to
the programming languages
Lua, Perl, Python, Ruby, and Tcl.
programming language comparison humor:
How to shoot yourself in the foot
in each of 20 different programming languages.
Scripting languages are becoming more and more popular.
Supposedly this "scripting language chooser"
helps you decide which one to use.
Learning various programming languages
has lots of tutorials and source code
for many languages (Visual Basic, C++, Java, Lisp, SQL, ...)
... I have lots of pointers to learning many specific languages below ...
``programming language was the wrong term,
because they just ain't like human languages.''
-- Edsger W. Dijkstra ? DAV wishes he had more context around this remark.
``world's most flexible programming language''
compares and contrasts several languages ...
and for these categories gives these recommendations:
imperative: PERL, Python, or C.
The follow-ups mention FORTH and PostScript.
learn Verilog, a hardware description language (HDL).
Some people I know seem to prefer Verilog over VHDL.
systems query language (SQL)
-- recc. Thomas Munn.
CSS: Cascading Style Sheets
(some tutorials and more information at
(I already picked up a little bit by osmosis,
leakage from other similar languages -- RPL, PostScript --
but I have a little ways to go before I'm fluent
Eric Steven Raymond
/* http://www.linuxjournal.com/article.php?sid=3882 */
I know over two dozen general-purpose languages,
write compilers and interpreters for fun,
and have designed any number of
special-purpose languages and markup formalisms myself.
Python ... an exceptionally good design.
another useful property of the language: it is compact --
you can hold its entire feature set
(and at least a concept index of its libraries)
in your head.
C is a famously compact language.
Perl is notoriously not...
this is an amazing testament to Python's clarity and elegance of design.
There was simply no way I could have pulled off a coup like this in Perl,
even with my vastly greater experience level in that language.
It was at this point I realized I was probably leaving Perl behind.
This was my most dramatic Python moment.
But, when all is said and done, it was just a clever hack.
The long-term usefulness of a language comes
not in its ability to support clever hacks, but
from how well and how unobtrusively it supports the day-to-day work of programming.
The day-to-day work of programming consists not of writing new programs,
but mostly reading and modifying existing ones.
Perl still has its uses.
For tiny projects (100 lines or fewer) that involve a lot of text pattern matching,
I am still more likely
to tinker up a Perl-regexp-based solution than
to reach for Python.
For anything larger or more complex,
I have come to prefer the subtle virtues of Python...
"VPython: 3D Programming for Ordinary Mortals"
I doubt I will find the time to even start learning the artificial languages below this line.
[FIXME: all these languages are probably mentioned at
perhaps I should just dump this information on various languages there
and leave a link from here to a couple of the most relevant pages there.
``froth'', very similar to FORTH.
Has ``address register'' to make it fit DSP architecture better.
[DAV: how much of this will fit on a PIC ?]
Is there any synergy between "froth" and
"dsp_K ... an open-source, real-time kernel and library for digital signal processors (DSPs).
(This seems to be designed for systems much too small for a full Linux kernal ...
competitor to eCos ?)
This language was developed at the Marin County Center for T'ai Chi, Mellowness and Computer Programming (now defunct), as an
alternative to the more intense atmosphere in nearby Silicon Valley.
The center was ideal for programmers who liked to soak in hot tubs while they worked.
Unfortunately few programmers could survive
there because the center outlawed Pizza and Coca-Cola in favor of Tofu and Perrier.
Many mourn the demise of LAIDBACK because of its reputation as a gentle and non-threatening language since all error messages are
in lower case. For example, LAIDBACK responded to syntax errors with the message:
"I hate to bother you, but i just can't relate to
that. can you find the time to try it again?"
- Lisp (probably the Scheme dialect).
(complete source code freely available)
(Originally developed on the Macintosh,
the ported to numerous other platforms
including Windows CE ... Acorn RiscOS ... Unix ...)
the Joy programming language, apparently designed by Manfred von Thun
has interesting similarities to Forth and RPL.
(DAV first heard about this in news:comp.sys.hp48 )
It's heavily stack-oriented, and a single item on the stack can be an entire list
or even a program.
``PHP is a server-side, cross-platform, HTML embedded scripting language.
Pascal (the Delphi dialect)
``Abundance: A Data Base language that can run backward in time''
by Roedy Green.
Has some interesting features:
Implicit Array Subscripts,
``Ruby is the interpreted scripting language
for quick and easy object-oriented programming.
It has many features to process text files and to do system management tasks''
(The interpreter is distributed under GPL or under an Artistic license).
learn MHDL, a hardware design language
originally focused toward the modeling of microwave systems,
but can also model more typical analog circuits.
Largely based on VHDL (which can only model digital circuits).
Understands track parasitics.
Developed by Intermetrics.
Or learn some other design tool just as powerful
(do any exist ? Analog Verilog (Verilog-A), also known as IEEE 1364 ?
Analog VHDL (VHDL-A) ?
GNAT, the GNU Ada
(see the ``Ada information'' section of
Parallaxis-III - A Structured Data-Parallel Programming Language
"Parallaxis is a structured programming language
for data-parallel programming (SIMD systems),
developed by Thomas Bräunl"
is apparently used to build dynamic websites
a list of projects that sound like fun,
but I have zero time to invest in right now:
(If anyone is interested in me doing any of these,
or if anyone else wants to do / has done these, I'd like to hear about it)
Connect a telescope to my computer.
Use it to search for pulsars and/or lasers (optical, IR, etc).
Can the doppler effect help discriminate
earth-based vs. extraterrestrial sources ?
If I come up with any clever ideas,
the folks at
Optical SETI at Harvard / Smithsonian
would probably be interested.
"The fastest pulsar found so far, however, spins at only about 600
revolutions per second." -- 2000-02-17
DAV: Do astronomers really have equipment for finding faster pulsars ?
todo: build something to find pulsars.
(I think careful manipulation of pulling charge across CCDs
and then using FFT to look for pulsars
would be interesting and low-cost
compared to brute-force high-speed cameras).
Theory predicts that
"newborn neutron star ... typically 50 rotations per second"
"matter orbiting a neutron star can have a period
as short as a millisecond."
Al Kelly's CCD Astrophotography Page
make model trains that don't need track,
they just follow lines of tape put on the floor.
This way you can put arbitrarily complicated
tracks on the dining room floor,
and when it's time to eat, you can *leave* them there
(only have to put away the train itself).
Perhaps have it sense little colored stickers
just before each intersection
to choose which way to turn ?
assemble a set of tools and plans that "has closure"
seems like a worthwhile organization.
"Engineers Without Frontiers (EWOF)
will provide the engineering skills of volunteers throughout the world
to non-profits and others who are doing humanitarian work
but lack the funding to pay for professional engineering services.
The project is somewhat modelled after Doctors Without Borders."
consider building a magnetoelectrohydrodynamic water pump.
It would be cool to implement
a "word processor" for this visual language
Considering helping re-design the
Taniwha Flight Computer
has some interesting and strange ideas for projects to do.
-- Bjarne Stroustrup 1995 (slightly paraphrased ?)
"Which language should programmers seek out and learn?"
1. Learn (or read) at least one every year or two so you don't get pigeonholed into the limitations of the language you use every day. Different languages promote different approaches - and different approaches/designs are the toolchest of this industry.
2. At least try out one functional language (Lisp/Scheme), one OOP language(C++/Java), one procedural language. None is better than the other, they have different takes on the world and shine at solving different types of problems.
3. Sticking with one language (at the total exclusion of others)limits your output and stunts your learning curve. Looking at more than one also reminds you what languages are for -- expressing more succinctly and clearly the instructions you want the computer to heed.
(c) 1997-2000 Jamie Zawinski
``I think Java is the best language going today, which is to say,
it's the marginally acceptable one among the set of complete bagbiting loser languages that we have to work with out here in the real world.''
[FIXME: move natural language info to idea_space.html ?]
``The Translator's Home Companion is intended to serve as a focal point of information about resources available on the Internet and elsewhere for translators, interpreters, and all those interested in the arts and crafts of foreign languages.''
todo: build some of the more interesting circuits / tools in
Started: 1997 Jul 28.
Original Author: David Cary.
Current maintainer: David Cary.
Return to index
/* was http://rdrop.com/~cary/html/todo.html */