Mitchell N. Charity
Some local pages:
Some printable paper rulers
How Big Are Things?
How Big Are Things? Cube
A Solar System Scale Model Meta Page
A View from the Back
of the Envelope
Cosmic View: The Universe in 40 Jumps - by Kees Boeke
Some other pages:
Angle Cards - A "business card" for measuring angle and distance
and A chart for measuring angle and distance to targets
Getting to know the Joule (J), an energy unit
Your enormous surface area...
Where is China? It is down over there...
Round Earth, Tilted People
The Monty Hall Problem - a state-space explanation
An Exponential Notation Meta Page
Make A 10 Centimeter Cube
Inline.pm Notes - "it's not just scripting glue, it's dynamic code generation"
An Illustration of Perl Objects with C APIs
An Optimization Anecdote about PyInline
The Year in Scripting Languages (2002)
Using Inline::CPP with wxPerl
A Combined Table of Contents for Several Programming Languages
Source files which work with perl, python, and ruby , and tcl, C, C++
Software engineering - our maze of twisty passages, glowing bright
Principles of Computer System MisDesign - some notes
Patched version of Paul Moore's FFI [...for perl]
Some other pages:
a BtYacc patch page
Some C Language miscellanea ,
C Language - Grammars (both old and crufty)
(Perlman's 1998 thesis)
(LCS TR list mirror) (trying to help google around an unfortunate robots.txt)
What color are the stars? and
What color is a blackbody?
How big is Afghanistan? - An example of map comparison.
How big is Iraq? - An example of map comparison.
Making globes of the planets
Year 1740 Treasurer's Account (Town of Cambridge, Massachusetts Bay Colony)
US Frequency Allocation Chart - a printable tiled version
A few other "current" projects:
- F=ma presented as interactive order-of-magnitude scales - I
still don't understand why an oom quantitative understanding of
equations isn't taught. Despite a half century of bemoaning the lack.
could be surprised by even this most familiar of equations (a cell,
accelerated by a magic zero-mass constant-force hand-cranked
transmission, takes how long to go relativistic?).
- Cosmic Signpost: Like you have at the crossroads in
European villages. But with more varied arrows. Including a
transparent globe variant of pointing
down (a "this _site_ up" globe - another concept which needs a
webpage). And an Earth's rotation corrected pole, with planet,
stellar, and galactic arrows (spinward, coreward, etc). I'm hoping to
do this for a spring
'02 '03 astronomy day at the boston
museum of science, and spin off a web page. But that's been true for at least
two three years now.
- Dot-a-day history: Having a distinct dot
for every day gives a tangibility to history. Mousing over days
triggers DHTML pop-ups, sidebars, overlays, etc, allowing one to browse
- Fermi Question game webpage - an interactive webpage to
teach FQ problem solving.
- "What is science?" - teaching from pathology: The nature of
science is often taught from gem-like definitions of limited utility,
or from unmotivated artifacts ("do logs"). A complementary
perspective is that individual and group thought has a number of
common failure modes, and science is, at least in part, a set of
approaches, culture and institutions, designed to mitigate them. If
one could create introductory material which systematically induced
such pathologies (eg, message corruption in relayed verbal
communication ("telephone" or "gossip game")), and demonstrate the
efficacy of science's assorted mitigation strategies, one might leave
students motivated and capable of applying them in their own lives.
(Another, somewhat related need, is for some `observer of science'
skills. `How do you recognize the health of a subfield?', etc.)
- "You can't teach what you don't understand" - Are science
education difficulties a symptom of a deeper problem? The physics
education research literature contains each level of teacher bemoaning
the shallow and broken understanding observed in their students, and
the observation that most instructors are unaware of this failure.
K-12 physics understanding is bemoaned by their teachers, the teachers
by their instructors, and undergrads, grads, and postdocs by their
professors. What I have not seen is the observation that this
difficulty is pervasive, nor an exploration of its implications.
I fuzzily recall a story that Feynman once observed the Brazilian(?)
education system was producing postdocs who seemed to understand
physics, but who were unable to do research, the quality of their
(rote) understanding being insufficient. US postdocs can do research,
but their professors remark on pervasive problems with their quality
of understanding (mostly "integrationist" defects). With the observed
failures of science education, and the common sense observation that
one's ability to teach something is tightly coupled with one's
understanding of it, I suggest a connection.
I'd like to line up the ducks, do a narrow-topic worked example, and
forcefully deliver this meme.
- This SITE Up: Earth globes oriented so the local site is on
top. So connection between globe and planet is merely one of scale
and offset. Which, at least for some people, makes the relationship
much more tangible. And the Sun's shadow on globe matches that on
- Earth puddle: The Earth is a puddle. A gravitationally
confined blob of liquid. It just happens that puddles in space are
And falling down the infinite todo list into oblivion:
- Using C++ libraries from C - automatic glue creation:
Parse C++ headers and generate extern "C" glue functions.
So you can use C++ libraries and code from C. Currently uses gccxml.
- A programmatic code-creation environment: Instead of the
common direct-manipulation approach to generating code (editors), I'd
like a deeply programmatic one which permits aggressive and graceful
delegation to the development environment. Every few years I take a
stab at it. With the last one, I could actually lazily stitch
together a semantic net describing a C program, shake, and out would
pop a distribution tar-ball. Time to try again. The obstacle is, as
always, broken languages making the simple, complex.
- Common Embedding/Extending C API: Various languages have
C API's to allow extending them using C, and some to allow embedding
them in C programs. The API's are all different. I am so very tired
of language balkanization. Limited sampling suggests most extensions
(of Perl, Python, Ruby, OCaml) use a common subset of functionality.
So I'd like to package it up. I don't expect anyone but me to actually
want to use it, but oh well. (Anyone disagree...?:)
- Inline::OCaml: Include OCaml code in perl source.
- Wrap Light-Weight C++ (lwc) as a library: LWC is a
C++-subset to C translator/compiler. I'd like to try using it with
libtcc (an in memory C compiler), to do diskless C++ runtime
compilation and linking. Apparently wrapping LWC will require
intercepting its "program termination will free things" calls to
malloc/free. Little work has been done on this "project" (so I'm not
sure it really belongs on this list).
- For the aggressive multilingual programmer: Some webpages
of links, recipes, and commentaries...
There are times for
the disciplined, professional craftsmanship of software engineering.
But there are also times (weekends:) where, in outraged frustration,
one wishes to desperately pretend our field has reached the point
where one can actually get work done. A time when one can mixin
whatever language is optimal to a subtask. Can use most of the
software our balkanized community creates. C, C++, Lua, Perl, Python,
PostScript, Java, CL, APL, dotNET. Can use closures in C (eg,
ffcall), generics in C++ (Cmm), etc, etc. A time of source code
analysis, transformation, and generation tools. When one can offload
the pointless crud of programming. A time when code flows like water,
with the viscosity of wind. ;) We are getting there. If ever so
sloooowwwwwlllyyy. It only took what, a human generation, to combine
Objective-C and C++? Sigh. And, well, you get the point. The pieces
are coming together. They are fragments with sharp edges. But a
lot of the fragments now exist. They often don't work or mesh well
enough to use in production. But enough to play... and to pretend.
Some other (rather old) links:
- plpython, aka Language::Python::InPerl: A python to perl
source code transliterator. You write python directly in your perl
source file, and it gets translated at runtime into perl. Handles the
difficult things, including iterators, exceptions, and threads
(sortof). There didn't seem to be any interest, so I didn't finish it.
I never ran pybench.
- A language feature proselytization page. It is a source of
some joy that I will never again have to have the "garbage collection
is a good idea" argument. And there continues to be a warm and fuzzy
across-the-board progress. But still, some desirable features are
not yet widely appreciated, even among language weenies. The sooner
they are, the sooner their absence can stop complexifying my life. :)
Though, this project has been on my background todo list for a decade,
so don't hold your breath. (Probably doesn't belong on this "current"
project list, but I periodically wist on it.)
- Beyond SourceForge's viewCVS - "viewCode": It would be nice
to be able to rapidly browse large volumes of open-source source code,
aided by a zoo of code understanding and analysis tools. This could
both extract additional value from open-source, and by providing an a
high-exposure stage for such tools, thus perhaps helping to get the
tools field unstuck.
- Raw C code parser: I've a parser for unpreprocessed C code.
A mutant but readable yacc-ish grammar is munged by a perl script into
Prolog which generates an AST in prolog or perl or ... (XML, etc).
Contains common preprocessor conventions, with the intent that users
will add their own weird ones as needed. Intended for bulk code
analysis and transformation. The project is unfinished. Little
semantic processing has been done. I'm looking for a driving
application to motivate finishing the tool. A "refactoring browser"
backend is one possibility. Maintaining kernel structure guards is
ACE yardstrips - disposable paper rulers
Musings - miscellaneous, mostly old
An old homepage.
From the preface of John Scott Russell's (engineer and naval
architect) massive "The Modern System of Naval Architecture", 1865
(135+ years ago)...
We the passing generation have had to
grope our way out of the dark slowly and
painfully, with trial and error. But
what has to be pardoned to us can no
longer be pardoned to our successors, to
whom we bequeath the costly knowledge and
painful experiences that have cost us so
dear, but which we have gladly earned,
and now painstakingly contribute for
their instruction, and the advancement of
(John Scott Russell, from the preface of
"The Modern System of Naval Architecture", 1865.
Quoted in Henry Petroski's "John Scott Russell",
Engineering column of American Scientist,
Mitchell N Charity <firstname.lastname@example.org>
Add more current projects.
Characterize other activities? Self?
Mention "rat in pane", a gui comment.
It seems obvious, but google/dogpile don't list it.
2004-Feb-19 Added tcl/C/C++ multifile.
2004-Feb-17 Added "Combined ToC".
2004-Feb-17 A bit of organizing and dusting.
2003-Nov-30 Added "Getting to know the Joule", direct link to tr list.
2003-Nov-17 Added, and then removed, a page on a now-fixed specrend bug.
2003-Sep-01 Added plpyrb source hack.
2003-Aug-11 Added FFI patch.
2003-Jul-08 Added Perlman's thesis.
2003-Mar-21 Cloned afghan_map to create iraq_map. Quick hack.
2003-Feb-04 Re-added `Exp.Not. Meta'. Seems to have been dropped over the years.
2003-Jan-16 Added `Year in Scripting..'.
2002-Sep-30 Added `Inline::SWIG'. Changed email address. Trimmed active list.
2002-Sep-23 Added `Inline/wxPerl' post.
2002-Sep-07 Added `rulers'. Bumped FermiQ's to Active, given recent work.
2002-Jul-23 Added `Make A 10 Centimeter Cube'. `Exp Meta' off active list.
2002-Jun-23 Added `interactive F=ma'. Downgraded `language proselytization'.
Missed spring astronomy day.
2002-Apr-11 Pulled over old TIAC homepage as site goes away.
2002-Mar-12 A light edit. Gasp. "Under construction" moved to end.
After almost five years. Yipes.
Fiddled with so-called "current projects" list. Sigh.
2002-Mar-05 Added Inline page.
2001-Dec-08 Reflected title change of 1740 page.
2001-Nov-16 Added planet globes.
2001-Nov-05 Added a sketch of some current projects.
2001-Oct-21 Added `Freq Alloc Chrt'.
2001-Oct-05 Added `Afghan map'.
2001-Aug-14 Added `Angle Cards' and `chart'.
2001-Jul-19 Added Russell quote.
2001-Jul-09 Added `A BtYacc patch page'.
2001-Jun-04 Added `What color is a blackbody?' and `are stars?'.
2001-Feb-16 Added `How Big Are Things?'.
2000-May-31 Added `yardstrips'.
2000-May-27 Added `Treasurer's Acct'.
1999.Mar.23 Added `Some C Language miscellanea'.
1999.Jan.26 Added `C Language - Grammars'.
1998.Oct.15 Added `Monty Hall Problem'.
Upsized Musings. Removed times from History.
1998.Sep.22 Added `maze of twisty passages'.
1998.Jul.08 Reshuffled links.
1998.Jun.06 Added Cosmic View.
1998.Mar.15 Relocated some http://www.tiac.net/users/mcharity/ pages to here.
1998.Feb.25 Added China is down over there....
1997.Dec.23 Added MisDesign.
1997.Aug.18 Added link to an old homepage.
1997.Jul.12 Added link to An Exponential Notation Meta Page.
1997.May.29 Scooter just picked up. Ah well. So added note.
Time slips by:
2004-Feb-17 - It seems people are now reading this page (not just spiders).
So it's been dusted a bit... after almost 7 years. And the following removed. :)
AltaVista's "scooter" just picked up this page (29 May 97), so some comment is in order.
I do not have a current personal home page.
This is the closest approximation. I plan to fleshed it out at some point.
Hasn't happened yet (1998.Jul.08). Still (2001-Feb-16).