John Fletcher

John Fletcher is an academic chemical engineer with an interest in computer programming and a lot else besides. After more than 40 years as an academic I signed up to spend one more year, working three days per week, I have now retired at the end of August 2014. This does not mean the end of my involvement here, but I want to let folks here know this.

I am one of the PunchCardGeneration as I started work in 1969 and my FortranLanguage programs existed entirely on the deck of cards. There was no copy stored electronically anywhere. I have realised only in recent years how the work then instilled in me an attention to detail which has stayed with me.

I am amazed when I think back to when I started as an academic in 1972 and how much the technology available to me has changed in that time. The computer power I have here at home is probably more than several universities had in total in 1970.

Current wiki persona (at work) (at home) or just jpf, although I have now removed as many of these references using my initials as I can find, except on my own home page and the one of DougMerritt, where there are numerous uses in dialogues from some time ago. This is in response to the discussion on ShortWikiSignaturesSmell.

This page has several sections. Probably the most useful to me and hopefully to readers is a section where pages are indexed by topic and in alphabetical order within the topics. The rest of it is an accumulation of thoughts and sometime dialogue with others. Some of those people no longer write on C2 and I miss them, though of course I don't know their faces. I have been around on here on and off for a lot of years. I started in 1997 - I am in VisitorsInNinetySeven.

That statement about faces shows how things change with time. Now I could much more easily see their faces using modern tools such as Facebook and Linkedin.

That is an interesting comment which I had not noticed previously. I do indeed use such systems now.

I often want to go to RecentChanges next.

-- John Fletcher (

Past interests and present interests include FunctionalProgramming GraphTheory StandardTemplateLibrary BoostLambdaLibrary TemplateMetaprogramming ThePragmaticProgrammer WhenShouldWeUseCeePlusPlus CommonHigherOrderFunctions CliffordAlgebra TemplatesAndRunTimeTypeInformation GenerativeProgramming TraitsTemplates RunTimeTypeInformation TemplatesForReflectionInCpp

Adopted Orphans

C++ and templates and functional programming

Clifford Algebra


ParallelProgramming, LinearAlgebra and FortranLanguage




Rather than focusing on disagreements about WikiGnome topics, I would encourage you to add your personal expertise to any pages here that interest you. I note that you listed CliffordAlgebra. A friend pointed out to me quite recently that the semi-new Algebraic Geometry foundation espoused in what's-his-name's 2001 Oersted Lecture was in fact the same thing, modulo ...something, as CliffordAlgebras, which I had missed before, since I haven't digested the new foundational approach being championed.

Some people prefer to say Geometric Algebra instead of CliffordAlgebra. See page 36 in Hestenes paper (below) jpf

[I think Doug must mean Hestenes's 2002 Oersted Medal Lecture, "Reforming the Mathematical Language of Physics" (] (See HestenesOerstedMedalLecture.)

Thanks for that, it is on the printer - Hestenes is a key person in this and I am putting this reference onto CliffordAlgebra. jpf

If you happen to know something about that, that would be something of great interest to me, since I'd like to learn more about the subject, and might therefore be of interest to some others here, too.

Or similarly with any of the other subjects in which you have expertise. -- Thanks, DougMerritt

Oops, excuse me, I see that you long ago contributed to page CliffordAlgebra. I hope you see that there might be still more to be said, in the context I raised. Thanks again, -- DougMerritt

My main focus at the moment is on implementing computer algebra for CliffordAlgebra. This has led me deep into FunctionalProgramming as a means of implementing all the overloaded operators I need. I am currently looking into DaixtroseLib which seems to have been rather ignored. It has compile time differentiation of expression templates, which I have never come across anywhere else. I am also interested in ways of storing the complicated algebra results which can be made. -- jpf

Interesting. Theorem databases seem to get frequently reinvented. One would think that there's some handy off-the-shelf answer that would work for you, but the devil is in the details. The most recent mention of something similar I've seen is the most recent post on -- I forget which system he was using. -- Doug

DeleteWhenRead if you wish -

Problems with presenting highly technical stuff on Wiki

So far, so good. Well-named leaf pages are okay. I download interesting pdf (or postscript) files as they are generally bulky. Please note the availability of the symbols and amongst others (see OpenWikiGraphics). Regarding the broken link you noticed in TemplatesSmell, I found a version of it using the WaybackMachine, then used Google to locate what seemed to be the current version (or new location) of it. Regarding the change you intended to make to TemplateMetafunctionHasFunction, please note what actually happened - Wiki has a big problem with lines that end with "\", so I restored the page (using the history file, not the EditCopy) then added a trailing space to the lines affected.

Thank you for finding FADBAD. I am interested to find such things. As regards the second, all I did was to add the categories. I am aware that wiki seems to wrongly credit changes sometimes, and I do not know why it should do that. The changing of the format of all the code was someone else. -- jpf

No - you unwittingly made other changes, due to a bug in Wiki. To confirm that, view http:histDiff.cgi?page=TemplateMetafunctionHasFunction&old=8&new=9 to see the two changes occurred in a single edit.

O.K. That changes reports the edit as 39 years ago!! In any case, I take no responsibility for the line endings. I took a copy of the code in order to try it out. What I can report is that before I made my changes, the changes to the code had been made by a previous editor, and were shown as such. I have experiences several occasions where the wiki change system reports as mine things I have not done. It may be caused by a bug in the save mechanism, or automatic reformatting, but it does not make me responsible. -- jpf

Perhaps that depends on your operating system. At any rate, shows the original, and shows the result of your edit, whilst http:posts?TemplateMetafunctionHasFunction shows you created version 9. A corrected link for the changes you made is If you know of any other recent time when a change seemed to be misreported, please mention the pagename here, as the history files are kept for only a few days.

I tried looking for older history e.g. and there is no change reported at all. Your previous edit of this page (Revision 219) show you as changing my paragraph as well as your own. The only change appears to be that the lines are longer. I wonder if this is what is causing it - format instructions. That will of course be replaced by this edit. -- jpf

Version 8 of the TemplateMetafunctionHasFunction page was probably created by (a US ip address) on August 5 2005. That's far too long ago for the history file to be around still, but you would have been able to see the changes by that person by looking at the QuickDiff for the page before editing it. When the specified history files are unavailable, no changes are listed by HistDiff. The missing files(s) don't cause an error message. The problem lies with certain software treating a "\" character at the end of a line in a special way. As for revision 219 of this page, I did change your paragraph - I added a comma to it. That's a technique for keeping the previous contribution visible - it shows as a paragraph with a minor correction or punctuation change. Had your previous edit changed several paragraphs, I would not necessarily have re-edited all of them. Most people don't use this technique, so you can't rely on it.

Thanks for that explanation about minor edits to punctuation. Is there a wiki page about the technique? -- jpf

Not that I'm aware of. People are encouraged to learn by observation. Occasionally, someone puts a tip in a page and puts a link to that page in TipsForBeginners, but such pages rarely achieve more than two votes. If a QuickDiff shows many spelling corrections, it may be the case that a paragraph changed by the previous editor appears at the end of the QuickDiff.

It seems there is more to WikiAdminProgression than I realised. There are things which are too useful to be written down? The risk of that is that observers may not understand and may even be misled. My observation had been that a number of pages I have edited e.g. to put in a category link which seemed useful, then were edited again, often in minor details. I put this down to the fact that as they now came up in RecentChanges (and other such), they came to be noticed. I took the edits at face value and did not see a tactical significance.

To go back to where all this started, I have been looking at the code on TemplateMetafunctionHasFunction and related pages. I have been able to generate some of the incomprehensible error messages discussed on TemplatesSmell and have made some progress. I think I need to move to a better compiler than gcc 3.3.3, which I have been able to crash with this code. That then raises the problem of how to make code available on Wiki without causing the problem before of lines ending with '\' causing problems for Wiki. That means that the long macro which is central to that code would have to be done in one long line, or else put the code up with spaces which would be a problem for someone copying it and trying to use it. -- jpf

If the compiler needs lines ending in "\", just add a trailing space for wiki purposes, but add a note telling people to remove those added trailing spaces if they are copying the code to compile using it. It's unlikely that source code would need a mix of lines with and without the trailing space.

Creating CliffordAlgebra pages

This is a humbling experience. It is a bit like writing a paper which writes itself. I set out a few days ago to adapt what was there already, keeping all of the contributions which were already there, including some of my own from long ago. These were all jumbled up, as they would be on wiki, as different things had been added. I designed a scheme and set about it, but cannot do all that in one session, owing to the need to sleep, eat, work etc. Usually, when writing a paper, the feedback comes when I ask for it. Here, the page does not belong to me so it grows in its own way. So that what I want in the end is unimportant. Which is the case anyway as what I really want is to share the knowledge, and for that I have to let go of control. The knowledge was not mine anyway to keep. Even the bits I have figured out for myself, which are not on these pages yet, don't belong to me. So thank you to all those who are involved, including some I know only from their electronic tags. -- jpf

Hmm? How many of them do you know in real life? (And how many people have contributed to those pages in recent days? Sounds like more than I had noticed.) -- Doug

Some, such as you, I know by name. Others I have spoken to on the phone. Someone - see above - has helped me with typesetting special characters. I left a dangling link to WilliamKingdonClifford which someone else has started. Someone else has put a link onto CliffordAlgebraDetails which refers to something I have never heard of. I did meet quite a lot of CliffordAlgebra people at the AGACSE conference in Cambridge (U.K.) in 2001, so I correspond electronically with some from time to time. -- jpf

Not sure which CliffordAlgebraDetails link you mean, but I did anonymously add the comment about negative curvature and WickRotation, if that's the one you mean. Very important topics (in SR, QM, and quite a few other places). -- Doug

That was the one I meant. Thank you for the comments, particularly the WikiPedia link. WickRotation does not appear as a term in either GeometricAlgebraForPhysicists or Clifford Algebras and Spinors (Lounesto). HestenesOerstedMedalLecture doesn't cover the Minkowski space, see note on future work. There are some papers on the transformation between spaces in CliffordAlgebra. One I refer to in is this:

D. Mirrales, J.M.Parra, and J. Vaz, "Signature Change and Clifford Algebras", International Journal of Theoretical Physics, vol. 40 (1) pp. 227-238, (2001)

I should add that "Signature Change" is a shorthand for moving between Clifford algebras of different basis type but the same dimension e.g. from Cl(4) (all real) to Cl(3,1) (1 imaginary) to Cl(1,3) (3 imaginary).

This is all leading to a whole section on the geometrical interpretation. -- jpf

It is interesting to note that general relativists have found that, in almost all situations (with apparently certain exceptions in certain extensions to GR), Cl(1,3) and Cl(3,1) (spacetime signatures +++- and ---+) are ultimately equivalent, e.g. in yielding the same predictions. I alternate between seeing that as natural and seeing it as surprising. -- DougMerritt

I have not forgotten about this - I will come back to it. I am a bit busy at the moment marking undergraduate maths tutorials. -- jpf

There is a page on GeometricAlgebra which needs to be related. It contains external references, some which are not in CliffordAlgebra.

Yes, I created that a couple of years ago. It originally contained a plea for other programmers' experiences with it, which went unanswered. (An example of a page with little content, just a bag 'o links, which I would probably not create nowadays.) Now I see people spinning new content that I can barely follow. I do hope to come back to the topic someday and catch up. -- DanMuller

If you're having trouble following, after what you wrote on GeometricAlgebra, it's probably just that we are not slowing down to explain what we're writing. Throw out some questions. -- DougMerritt

Dan, I had not spotted your contribution here. Please do ask. In particular, I can contribute from the point of view of a programmer. I have been implementing most of what Doug and I are discussing, using C++. See CliffordAlgebraComputation, which I plan to expand with some examples. -- jpf

The page is largely my creation, with only a few small edits by others since. I copied it from a private wiki that I run. It used to be signed, but I removed the signature some months ago. I'll no doubt toss out some questions when I've made time to give the current content the study it deserves.

BTW, I ran across this related blog entry today: -- DanM

Thanks, Dan for that, I have picked up a useful link for Leo Dorst and also for Chris Doran's Ph.D., which I have put onto CliffordAlgebraResources.

Feel free to wipe out the now-redundant info, maybe leaving a description of how GeometricAlgebra related to CliffordAlgebra. I'd do it if I were confident of my understanding of the relationship ... but I'm not! Is the former a special case of the latter, a subset, or merely a synonym? -- DanM

Some of the links on GeometricAlgebra were duplicates the ones on CliffordAlgebra and some were not. I have now started another page called CliffordAlgebraResources which has all the information to hand.

On your other point, some authors do not make a distinction and some do. See some of the material on CliffordAlgebra at the top and also the link to Leo Dorst, incidentally that is a more recent one than the one on GeometricAlgebra. -- jpf

I have now started to refactor the material on CliffordAlgebra from here to other pages, e.g. CliffordAlgebraInverseDiscussion. -- jpf

I wanted to find something like NewYearResolution but the nearest I can find are HappyNewYear and WikiResolution?. So HappyNewYear everyone. -- jpf

Following your lead: HappyNewYear, John, and thanks for sharing your time, energy, expertise, and thoughts. -- Doug :-)

There is an article in NewScientist this week ("A leap into hyperspace" 7 January 2006, p.24) which discusses the work of Burkhard Heim. See and My interest is that this is a mathematical theory of everything which includes extra dimensions. I have only begun to read the various articles, including this reference given by the NewScientist - I have not seen any link to CliffordAlgebra, but there do seem to be some similarities to WickRotation. Does anyone else know anything about this? -- jpf

Heim theory's inclusion of extra dimensions is not the uncommon thing you seem to think it is; extra dimensions (particularly compactified ones) arose in the 1921 Kaluza-Klein theory ( that fairly successfully unified GeneralRelativity and MaxwellsEquations?/electromagnetism by adding a fifth, compactified dimension to the 4 of space-time in GR. Heim uses very much that same approach - as does StringTheory, for that matter; Kaluza-Klein was and is famous and influential in fundamental physics, because it was so successful. "Merely" adding still more dimensions to Kaluza-Klein in order to further unify the weak and strong nuclear forces turned out to be extremely problematic, but in a certain sense, StringTheory is more or less just the most recent and most sophisticated approach to doing exactly that.

(Wick rotation is nothing more and nothing less than converting -x^2 to (x*i)^2 in some equation, any equation, in any area of physics, although as I mentioned it signals a negatively curved dimension and hence is particularly interesting in special relativity. But by the same token, it sort of has to be lurking in any similar theory, including Heim's, whether it is done explicitly or just left implicit.)

That said, the most interesting claims about Heim's work are not peer reviewed, and therefore the claims are almost certain to be either wrong or misleading. For instance, the wikipedia article claims fundamental particle mass prediction accurate to within 1:10000. I have the following critiques of this:

It would appear that physicists consider his work very fringe, but is popular with e.g. UFO fans, because of his notions for a space drive. That doesn't mean he's wrong, but fundamental physicists are not so closed-minded as those UFO fans always think they are. If someone thought they could win a Nobel prize by continuing Heim's work, I guarantee you they'd be all over it.

I'm not really qualified to evaluate his work in fine detail, but in broad approach there doesn't seem to be anything unique about it at all.

And the usual rule of thumb is, "why spend time proving whether an apparently fringe theory is actually true or not?".

If you want a truly qualified opinion, though, try asking about it in sci.physics.research. People like Bill Unruh and John Baez could give a truly expert opinion, and the question doesn't appear to have been asked there before, although it was in other newsgroups (science fiction, ufo, etc) over the last decade, including today.

If you want a really good overview of how these things are approached, see Physical Review D, "Particles and Fields -- Review of Particle Properties", published every two years. It summarizes all of the best experimental results and evidence for and against the Standard Model, predictions of other theories that contradict the Standard Model, tests that potentially could falsify the Standard Model, and of course, highly detailed tables of all particle properties. The stuff that has been carefully tested to try to disprove the Standard Model is pretty mind blowing; far more wide ranging than one would every guess.

I should restart my subscription to NewScientist; articles like the one you're talking about are always fun, even when overly credulous. -- DougMerritt

Thank you for the comments. There is plenty there to think about. -- jpf

re ParallelProgrammingDiscussion

I am not just creating pages for the sake of it. They join up, but at the moment it is a bit like the early stages of the pictures of the Forth Bridge being built, there are just the foundations of the towers. I am actively using OOMPI (see ParallelProgramming) to do CliffordAlgebra on several computers at once. I am combining this with DaixtroseLib to find multiple solutions of equations in parallel, one on each computer. I am building on a few pages which were there already - InterProcessCommunication, MessagePassingInterface, ParallelVirtualMachine. What I need to add is a way of visualising the results of things which here much run in batch mode, so I am interested in ways of getting a GUI back to a web page, e.g. RubyOnRails, RubyTk etc.

Note to self: Don't forget WhatWikiShouldBe

The comments from Gunnar and I are suggestions to help you make the relevance of the pages ScreaminglyObvious. When I embark on a multi-page information download from my knowledge and researches into this wiki, I always start with an informal note of my intentions, a comment showing that I have done my homework, and some evidence that things will be tied up and woven in.

One of the things I have found out in the last few days is how to overcome the lack of the VisualTour. I run it and get the text of the dot file and then run it in a copy of dotty which I have downloaded. I then look at the graph and can see where there are links missing which would be helpful to someone who was looking around. For example, there are quite a lot of topics on RubyLanguage which are not linked from that page, which I have attempted to remedy to make it more cohesive and also include some relevant books.

One or two things I have seen have been a real surprise and delight. I have used SingularValueDecomposition extensively, but did not know of its use in LatentSemanticIndexing, which has not been my field. It would be interesting to have a version of VisualTour which used LatentSemanticIndexing rather than simple page size, which tends to go to things like RecentChanges simply on size.

Considering parallel programming, parallel processing, distributed programming, distributed processing, co-operative programming, fully parallel programming, and related issues - yes, there is more than one idea, more than one model, more than one objective. Currently, I have no constructive suggestions, but I will think about it.

I have come up with ProgrammingForParallelComputing based on some WikiPedia definitions. -- John

Re: DaixtroseLib and "I am also interested in ways of storing the complicated algebra results which can be made." I'm interested in what you're doing. Did you find something satisfactory, or if not, what sort of thing are you looking for? -- DougMerritt

Doug, I have done some experiments with MathML but have not got very far in that direction. I also have made use of EfourGraph and MetaKit as database storage. -- John

Have your pages about parallel programming and message passing all got the same category tag?

Interesting you should say that. I was waiting to see what made sense as things developed. I did put something about this on ParallelProgrammingDiscussion, which has not yet generated any interest. I don't think that I can use CategoryConcurrency without some discussion, as that seems to be about the low level things such as threads and mutexes. What I am talking about is the problems of the application of parallel computing to engineering problems. I have used the appropriate language tags, but don't have one yet for the topic area. -- John

"which has not yet generated any interest" -- from my point of view, it's because the topic is overly broad. It's as if you put up a page on Computing. I wouldn't know where to begin. Splitting things into (approximately) threads vs workstation vs fine-grained parallelism is well and good, but what exactly are you looking for people to write? -- Doug

O.K. I am coming from the position of having programs that work on single processors. Some are in FortranLanguage and some in CeePlusPlus, for historical reasons. We want to be able to run larger cases, and for this we have access to multiple processor environments, usually not fine-grained. 16 PC's with a megabit switch was our cluster three years ago. Now we have access to a bigger Cray system. I have been working for some time with the ParallelVirtualMachine software and I am now changing to the MessagePassingInterface software. Some tools, e.g ScaLapack, work with either. The challenge for me is integrating various different software tools, e.g. DaixtroseLib, with the parallel environment, where it has not been used before. Some of the problems are also associated with the matrix methods, some with data storage. Some of the textbooks give hints and parts of the story. -- John

I have been working on applying DaixtroseLib to some programs called ConSol. -- John


So it's Fortran, what can I say. -- Doug

Fortran 77 with enhancements which need to be understood.

Thanks for this. I was not aware of it. -- John

Thanks to your CliffordAlgebraResources page, I bought and read A HistoryOfVectorAnalysis, which I found fascinating. A lot of issues that I struggled with personally in math turn out to be large issues that historical figures worked deeply with, not a sign of defective thinking on my part, as I had often felt in the past.

Also thanks to your book list, I stumbled over GeometricalVectors, a very cool book; check out the page I created and the MAA review linked to. -- DougMerritt

John: With your interest in object functional programming, you might be interested in Martin Odersky's blog post and its external links: -- ElizabethWiethoff

Thanks - there is also ScalaLanguage. I had not made the connection. -- John

I have started PatternImplementationDiscussion.

I have made my point on NoBindingContract. I will not attempt to edit it any more. -- John

ParkingTicket and TrafficWarden started to have WikiBadges for throw away remarks and the originators.

John, thanks for the tip about RubyCoerce. Please see that page for more. -- ElizabethWiethoff

My plans currently include more work on VariadicTemplatesForGnuCpp which I am currently linking with one of the new BoostLibraries. It is called BoostFusion which now has a page here. It is now available in 1.35.0 (March 2008) so I can now start to make serious use of it. -- John

I have now become involved with TheCppStandardsCommittee through the UK Panel. Currently I am exploring the ideas of ConceptCpp by applying it to FC++ (FunctoidsInCpp). There is an interesting discussion on ConceptIntersection. Unfortunately this particular proposal was not included in CeePlusPlusEleven. -- John

Hi, John. Thanks for your greeting at TheAdjunct. I haven't said boo online in almost a year. But I wrote about JayRuby here a couple weeks ago and just finished ranting about SmugRubyWeenies. Last night I paced back and forth coming up with a page about (Ruby) StupidPetTricks, but I have yet to write it. Perhaps I'll take you up on your FortranWeenie challenge. :-) -- ElizabethWiethoff

Good to hear from you, Eliz. That comment is amazing. I thought about starting FortranWeenie this morning and didn't do it yet. The other reference is an old one I had forgotten about. I have made a start, as I am a fortran user. -- John

John, thank you for your work to get CategoryOperatingSystem to combine both the singular and plural pages. Great work! -- ChrisGarrod

I have started to look at items in CategorySemanticWeb such as SemanticWeb, DublinCore, PracticalRdf and ResourceDescriptionFramework. The pages existing before I started seem to have been contributed by a number of different intiatives over a period of time and were not all linked. I am attempting to build a more complete framework. There is now a page for RedlandRdfLibraries.

This has lead me on to look at ways in which I could organise my software. One way is to use GnowSys, a set of software built on the ZopeApplicationServer. I have now been promised uptodate source for GnowSys and so am creating a page for it. In the meantime I have done some tidying work on the old references to ZoPe and have learned a lot in the course of doing it. I thought I had done this job, increasing ZopeApplicationServer to over 70 references. It turns out that there are another 100 or so to Zope or zope which were not showing up at all as it is not a wiki word by itself. A lot more work is to be done collecting them in. The reference count is now up to 91 on 20071225. Most of the unchanged ones are in home pages or are the string zope in a web reference.

There are several ContentManagementSystems built on top of Zope. I have installed PloNe and ZwiKi as a way of capturing my own information. These do not (yet) have an interface to ResourceDescriptionFramework data. I have then found CollaborativePortalServer which does have an interface to RedlandRdfLibraries and also runs on top of Zope. I have been using ZwiKi for the first time and I find it very different from other wikis because of the automatic PageHierarchy which is not present in other wikis I have used.

I have created a page for myself on SemanticMediaWikis as as follows

I am starting to get a feel for how to use a wiki with semantic features. What would be very nice would be to construct a tool which could extract information from an existing wiki e.g. this one and add semantic content.

I am also beginning to get a feel for how to enrich the connections between pages. For example, in the pages linked to I have been able to enrich links such as See Periodic table to have the meaning Has explanation: Periodic table where the wiki will collect and index this information, which can be exported using RDF (ResourceDescriptionFramework). Also, the category concept can be carried much further.

OntoClean is an interesting way to define metaproperties for web OntologyLanguage.

I have been looking at FunctoidsInCpp again with particular reference to the problems discussed last year in ContinuationPassingStyleInCeePlusPlus. Particular problems have come to light which I had not realised before. These come in the FC++ lambda language, which makes use of OverloadingCommaOperator in combination with ArgumentDependentNameLookup. This makes some assumptions about the types of the arguments which are usually valid but lead to some unexpected failures. I have been finding ways around these and learning yet more about the code.

One of the problems is that when ArgumentDependentNameLookup of the comma operator does not succeed, the compilation process proceeds by ignoring the argument before the comma. I have been able to modify the behaviour by changing the types of the arguments so that they are found. I cannot find a way to generalize this so that the problem objects are retyped automatically. -- JohnFletcher

I have just upgraded my MicrosoftOffice suite to 2007 and have discovered OneNote for the first time. I am experimenting with it for keeping track of lots of different things. It can work as a personal data collection system with notebooks, folders and pages and also WikiLike links between the pages. See also BeyondBullets for a way of using PowerPoint. -- JohnFletcher

TheresAlwaysOneEmptyKey seems to be the story when running a registry check on MicrosoftWindows.

September 2008. I am revisiting my previous work on the ParallelProgrammingModel. There is a new way of doing efficient matrix computation in single precision, which is to use the processor capacity of the graphics processor!! This leads to thinking whether double precision all the time is the best way to do things. Instead, using single precision to start with and then refining the answer may be quicker. I plan to start a page on this. One resource in use at the moment is the book PatternsForParallelProgramming. -- JohnFletcher

You may already be aware of this, but see Kahan Summation.

And everything else Kahan has every written; the man's a genius.

While you're here, John, I'd like your opinion on TransactionalActorModel. Also, ResumableException (which describes an implementation for C++).

-- David

Thanks, I'll take a look as I had not seen those pages. -- John

Thank you for reviving the practice of pruning and preserving RecentChanges. -- JeffGrigg

Note: Inspired by your recent very helpful work on RecentChanges, I did some cleanup work:

This cleans up some outdated and contradictory information, and makes the complete range of history more easily accessible.

I encourage you to keep up the ChangesInMonth work. Thanks! -- JeffGrigg

I am enthusing about RosettaCode, although I have not yet got involved there. I have also found a RubyLanguage wiki on PatternImplementations, something which I have been keeping a lookout for for a long time - see PatternImplementationDiscussion.

Started FamilyHistoryOfWiki and proposed ThoseWhoWereThere as a WikiBadge.

I just found CeePlusPlusDotOrg.

I have wanted to be able to run ConceptGcc on Windows as it is inconvenient for me to boot up a separate computer for Linux just to run a few examples. I have done this using MinimalistGnuForWindows (MinGW), which allows GCC to run in a windows environment. TwilightDragon have a more uptodate release of GCC (4.3.3) for MinGW, and there is also CodeBlocks, which allows me to have projects running on different compilers. I have used the TwilightDragon compiler to build ConceptGcc using MSYS.

I came across MathematicalIllustrations in a bookshop. I have not looked at PostScript as something to program in myself before. See ProgrammingPostscript. I am also trying out ConnectedText which is interesting as another alternative to the ways of storing data. It allows pages to have LaTex (using MimeTex) and also GraphViz.

I have started a page for PebblePad.

Someone suggested having CategoryBoost so I have created that. It now has 20 pages including BoostSpiritLibrary.

PodFather is the title of a programme I saw on the television recently giving the biography of RobertNoyce who was in on the start of integrated circuits and microprocessor architecture. He was one of the founders of IntelCorporation at a time when SiliconValley had not begun. I am surprised how little there is here on this wiki on this. There is no page for IntelCorporation (although there were a number of dangling links) and only a little discussion of hardware at all. I have found a page MicroDesign which had not been edited since 1998. MicroprocessorReport is available as an online publication.

There is some information. One way in is through AssemblyLanguage.

One personal note. I started as an academic in 1972, one year after the first microprocessors were built. I have been using successive versions of them ever since they first made their way to us. Now we even have GeneralPurposeGraphicsProcessUnits.

We often think we WouldntStartFromHere and DontLetTheSunSetOnBadCode, but MostGoodCodeIsWrittenAfterDark it seems. Or we can go ToMorrow.

Remember TheGap although we never found out much about what happened. November 2009

I have restarted some work using LogicProgrammingInCpp and started to look for some references. I have found OoppExploringTheMultiparadigmShift which seems worth its own page. FunctionalReactiveProgramming is something I had never found out about before, and that has led me to SpecifyingBehaviorInCpp, which initially I have spelt not as written by the authors as I read it as what I am used to. I am extending now to FunctionalSimulationProgramming.

Thanks to ScottCooper for bringing SourceWatch to my attention.

There is a little referenced page VariantEnglishSpellings which I want to bear in mind when the question of spelling comes up.

I have just had a novel experience - someone maintaining software has contacted me, instead of the reverse process. Tim Daly from AxiomTheScientificComputationSystem has contacted me about some issues on CliffordAlgebra.

I have just found VUE (VisualUnderstandingEnvironment) and ZoTero which have given me a pair of integrated tools which are going to make a big difference to keeping track of information. I am just starting.

I have begun using TiddlyWiki which I rather like for keeping track of things.

I have been learning a lot with CoMonads and HaskellArrows. See also WikiAsReference.

I have switched to using GitVersionControl for code versioning. I am making good progress with it.

Started HowStandardsEmerge. Also NvidiaCorporation and ComputeUnifiedDeviceArchitecture (CUDA).

While on holiday I bought a book on the R language (ArrLanguage) which is used in statistics. I had not heard of it before. I thought quite hard as to the correct WikiName for R and when I made the page I found there was already a backlink. In the course of finding out about this I have discovered LiterateProgramming. I am amazed I had not come across this before. Related pages are ArrInaNutshell, EssLanguage, EssWeave and LyEks.

I have just found PXSL (ParsimoniousXmlShorthandLanguage) one of the ThingsIwishIhadKnownBefore?.

Interesting paper: DeprecatingTheObserverPattern based on ScalaLanguage.

LowLevelVirtualMachine (LLVM) and Clang look interesting. Doug Gregor is involved, which is interesting. He is also involved in C++-Next (CppNext) which needs a page so I have created one. Leading on to StlFilt which I should have noticed before. ColorGcc gives coloured error messages to GnuCee and GnuCpp.

I have a weird problem with UbuntuLinux which has led me to look into IntelSixtyFourBitLinux a bit more closely. Looking at it again, I have found FilesystemHierarchyStandard (FHS) and LinuxStandardBase (LSB), terms I had not noticed before.

Found for the first time: TrustTheMetastructure, TrustingTheCode, CausallyReflectiveMetastructure, TheKenThompsonHack.

I have just been exploring the EclipseIde for the first time. How could I have missed this? I have integrated the addon to work with CeeCeePlusPlus and also GitVersionControl. FortranLanguage anyone? I was joking, but there is something called Photran - This leads on to MixedLanguageProgramming. It can also do PythonLanguage as well.

Now looking for graphical output I have found OpenGl, MathGl, FlTk, GnuPlot (old friend) and GluPlot?.

I have found a new piece of software for the SemanticWeb called CubicWeb. I am attempting to get it working. Along with this I want to explore links between the ideas of LiterateProgramming and the SemanticWeb -> LiterateProgrammingAndTheSemanticWeb. CubicWeb has an option to use ReStructuredText (which has had a page here since 2004). It is used by DocUtils which is a PythonLanguage thing not yet mentioned here. I have also just found PyLit. I am getting rather excited about the potential of CubicWeb and some of the other interests here are concerned with ways of getting information out of other wikilike things and into it. It always turns out to be easier to get presentation information out than structural information including links. A warning there not to be enthusiastic too quickly without checking the export options. I am finding CorePythonProgramming helpful for this work.

Responses and Ramblings

-- DonaldNoyes.20110118

When I went searching for information on EverNote I have also found NeverNote.

I have not made the progress I expected with the GeneralPurposeGraphicsProcessUnits (GPGPUs) as I distracted myself with CubicWeb instead. I have now made up for that by finding that the MagmaLibrary makes it very easy to adapt programs which use LAPACK (LinearAlgebraPackage) to run on a GPGPU.

Hooray. I can still find things in WikiWiki which have been there for years and I never knew. Look at HereDocument which is a phrase I had not heard before, but is actually well known enough to have a WikiPedia page.

Curious. No one has ever up until now created a page for StaticCodeAnalysis and there are no pages for Lint and similar tools for C and C++.

I have started pages for ProgrammingTheSemanticWeb and ResourceDescriptionFrameworkInAttributes (RDFa). I have been searching to find a way of embedding RDF into the data in TiddlyWiki as part of wanting to integrate my PersonalWiki work. I have found an addon for TiddlyWiki which enables a mixing of wiki markup with HTML. This means I can at last bring in some of the data with HTML markup from other wikis and integrate it with my TiddlyWiki files. I have not found a way to automate that at the moment, so it is a long task to do all of it, 2500 pages. See TiddlyWikiExtension for more discussion of this.

Celebrating WikiAtThirtyFiveThousand with PageThirtyFiveThousand!!!

Started MaspImplementationDiscussion and ReflectionToolForEngineers. Now exploring PiratePad.

Started CarParkSyndrome as a ManagementAntiPattern. Thoughtful about the ProgrammersStone.

I am investigating Mahara ( as an alternative to PebblePad. I have come across (again) ConnectedText which I had explored before. I am now using this instead of TiddlyWiki as personal notemaking software.

SmallestFederatedWiki looks extremely interesting.

I have been putting together pages on programming for GPGPUs, which I will add to the index above in the ParallelProgramming topic.

I have been programming for the first time in VisualBasicForApplications, to write some macros for a spreadsheet in MicrosoftExcel. Thank you to someone who provided VbaExercises.

I have for a long time had a copy on my bookshelf of ThePragmaticProgrammer by AndrewHunt and DavidThomas. Now I have a copy of PragmaticThinkingAndLearning by AndrewHunt which is very thought provoking. These are both part of the PragmaticBookshelf.

Today I have updated some pages to introduce OpenBlas as a successor to GotoBlas which I have used for a number of years but is no longer being developed. This also provides an implementation of the LinearAlgebraPackage (LAPACK). I am used to the fact that nobody else seems to comment on these pages relating to computation of LinearAlgebra. I hope that some of the many readers of this wiki derive benefit from information which is kept up-to-date as far as possible.

I have had an interesting time as a result of asking the question WhatIsaThunk and finding the answer on this wiki. This has lead me into so many avenues of WikiHistory that it feels like WikiArchaeology - a page I thought I was inventing but it is already here and has been since 2005!! On closer inspection I find I seem to have invented it!!

WhatIsaThunk has a link to CallByName which is something I had never heard of before, with origins in AlgolSixty. CallByName in turn links to JensensDevice and code like this:

 sum(i, 1, 100, 1/i)
Here i is a placeholder indicating how the values 1 to 100 are to be treated. I have taken this as a challenge to see how this could be implemented in CeePlusPlus. I have found several ways including these:

Next challenge Most of these things already have pages here. There turn out to be some interesting issues about handling the fact that what starts out as a calculation with integer values has a floating point result. Some of the methods above handle this better than others.

I have since been looking at using the BoostPhoenixLibrary in combination with FC++. I now have a work in progress to build a new version of FC++ which will be able to do things which it could not do before, which it will inherit from Boost Phoenix. This is turning out to be very interesting and not too difficult when using some things available with CeePlusPlusEleven. I find that I am going to have to learn a lot about the BoostProtoLibrary to make progress. That looks worthwhile as it is a good toolkit for building an EmbeddedDomainSpecificLanguage in CeePlusPlus.

JavaScriptObjectNotation (JSON) was one of the applications I started to look at with all this.

February 2014 I have now become the maintainer of the BoostPhoenixLibrary!! That has given me the responsibility to catch up on a considerable backlog of bug reports. In the course of tackling these I have learned a lot about the software, the tools needed, and the process of learning. I can see an important difference between being a user of a library and the maintainer.

I have been doing some more WikiArchaeology in the course of building CategoryLearningMethods. WikiArchaeology is fun!! Someone has brought my attention to MentalIndexability and I have added it to the category.

I am pondering the following entry made about 10 years ago (2002) by WardCunningham about this wiki on the page PleaseDontDeleteMyName:

This site is more about the organization of experience than the preservation of history.

The thought I am having is that without some history to reflect on I cannot organise my experience. He does use the word more.

organization of experience vs. preservation of history

Interesting. Although I think they describe the same dichotomy, these words make more sense to me than the words document mode vs. thread mode. It's funny - there are some wiki pages I consider "good pages", but I cannot say what makes a good wiki page. Some good pages have history, some do not. Maybe Ward's comment has to do with history being a "means" of organizing experience on wiki, not an "end", or "purpose", of wiki. -- StanSilver

Yet another example of HowWikiWorks for me. I noticed that there was a page called EtPlusPlus on RecentChanges. Anything with PlusPlus in the name looks interesting to me. What is this? It turns out that it some code which no longer exists, but the reference was on the web page of IvTools which still does exist and is in current development. So I have followed that up and found also IplPackage (Invocation Programming Language) and a number of other related pages, explained best by looking at ScottJohnston's page. There is also a link to history as some of this code was written while people were discovering patterns, which is the reason this wiki is here in the first place. Time well spent.

I have now also found the LushLanguage while looking for more things on IvTools. Someone knew about it as it has a reference in SeriousVersusScriptingLanguages before it gets indexed.

I have started a page for GeometricAlgebraForComputerGraphics by John Vince, which I found recently in a bookshop.

Until recently I thought that the best approach to the solution of a set of linear equations, or related eigenvalue problems, could be found through use of LAPACK (LinearAlgebraPackage) or related libraries which apply standard numerical methods to the matrix or matrices and produce answers subject only to the roundoff errors. I have now found that there are a class of iterative methods which can solve some large matrix problems using less memory and more quickly. Some of these have only been clearly defined in recent years. There is very little on this wiki about numerical solution of equations, so I don't think I am going to start a lot of pages on this topic here.

By 'large', do you mean 'large, but sparse'?

That is a good question to which I am working on the practical answer. I had assumed that the matrices were not sparse and so had not looked at techniques directed at sparse problems, with the exception of the Arnoldi method (ARPACK) which I have used to find a small number of eigenvalues. However, the matrices are now so large that it looks as though there is an advantage to use e.g. GMRES.

The answer to the question is that for an example, about 60% of the matrix entries are zeroes, but the rest are so distrubuted that sparse methods are difficult to deploy. It does mean that there are some methods which are called 'sparse direct methods' do help.

As the problems get larger and larger, the methods needed have to be more and more parallel in implementation, something which is coming to be known as ExascaleComputing.

About a year ago (summer 2012) I cam across PragmaticThinkingAndLearning by AndyHunt. This has set me thinking about how the human brain works in two different ways, one more analytical (left brain) and one more graphical and integrating (right brain). This is discussed in much more detail in TheMasterAndHisEmissary by IainMcGilchrist. I expect I will convert those references into page links here quite soon, but I am not quite ready. I have been looking for relevant material and some of that is referenced next.

I am finding a small amount of material here around the key word gestalt such as GestaltPhilosophy and MuddyDecomposition. I can see a lot of arguments going on here which display signs of the war between the sides of the brain e.g. HolyWar. I am picking up some useful gems e.g. VisualPython.

I have also found pages on DouglasHofstadter and his books including FluidConceptsAndCreativeAnalogies which I want to compare with PragmaticThinkingAndLearning.

Right-brain vs left-brain is perhaps a handy metaphor but as a neurological reality, wasn't it thoroughly debunked some time ago?

See TheMasterAndHisEmissary by IainMcGilchrist for a LONG discussion of this issue. He looks at a lot of the medical evidence. He also has a lot to say about metaphor.


It is time for a separate page, which I have now made. I had been hesitating as there is not a direct link to programming. There is an indirect link through PragmaticThinkingAndLearning as both books reference Dreyfus and Dreyfus (see DreyfusModel).

Also relevant: WittgensteinsLadder which I only just found by way of ShuHaRi.

I have started a page for NepomukKde within the context of the KayDesktopEnvironment. This has links to the SemanticDesktop.

Thinking about books, I have started BookStart and ReadersGroups. I rediscovered BookShelved wiki which I had forgotten about. I also started UnderstandingTheLinuxKernel in response to discussion on UserSpace.

I have just seen a page DeclarativeMetaprogramming which looks very interesting. On ThereAreExactlyThreeParadigms it is linked to FunctionalReactiveProgramming which is something I have looked at before. I thought of a link to LogicProgrammingInCpp. There is also a possible link to IntentionalProgramming.

Very interesting: KnowledgeMapsWhitePaper. I have just put in links here between KnowledgeMap and MindMap which were not linked at all or even have category in common. This needs further work.

Do not let a new page be lonely in the morning when the indexing comes. Always think what links it should have so that it can be found. (Of course, when the indexing comes depends on your timezone in the world. I am in the U.K. most of the time.)

Creating TheMasterAndHisEmissary and linking it took me to 500 links to this page!! 20130709

I am searching around with the name Paulo Friere in my mind. I found some interesting links to AugmentationOfTheIntellect and AugmentingHumanIntellect (articles by different people).

New page on InternetHistory started (not by me). I have been looking for the links it needs.

I have just looked up WabiSabi and found also PervasiveUnsatisfactoriness (a page with very few links). All of this reminded me of my visit to the city of Hoi An in Vietnam.

I have started CommentOnCriticismOfTheGangOfFour about criticism on GangOfFour about the DesignPatternsBook. I have also taken off the bookshelf the RefactoringBook and RefactoringToPatterns. I have not used them much as the examples are in JavaLanguage rather than the CeePlusPlus of the DesignPatternsBook. This is leading me to think about the nature of expertise and how it is acquired, see DomainExpert, SubjectMatterExpert. Also expertise is sometimes not accepted, see DismissalOfSubjectExperts. I am linking this very much to the DreyfusModel and PragmaticThinkingAndLearning.

I have started PatternsInFunctionalProgramming which looks very interesting. I already have one new functoid for FunctoidsInCpp, fork_. (fork_(f,g,a) -> (f(a),g(a))

Quite by chance I have come across the page MetaBaby which has the following:

MetaBaby (MB) is mostly for the RightBrain?, WardsWiki (WW) for the LeftBrain?. WW persists, MB is transient. MB is the opposite end of the continuum from


I find this very interesting. The links LeftBrain? and RightBrain? are unfilled. This has been around since at least 2007. I wonder if there has been much debate about this. I did get a comment on TheMasterAndHisEmissary to the effect that left and right brain had been debunked. I am tempted to start the pages.

I have been amazed and very pleased that Steven Lahar who has written CliffordAlgebraaVisualIntroduction emailed me today quoting something I wrote on CliffordAlgebra.

I now have a second edition on TheCppStandardLibrary by Nicolai Josuttis. This covers also CeePlusPlusEleven. I will write some notes on it when I have started to use it.

I am reconnecting myself with the work I did to implement PatternsInFunctionalProgramming and linking it to a number of other topics including ImplicitLazyEvaluation, ExplicitLazyEvaluation and LazyPtrProxy, one of the hidden gems in FC++ (FunctoidsInCpp).

I have found SideWiki and WeavingTheWebWithCmapsAndSidewiki which seems to be abandoned..

I have a copy of PurelyFunctionalDataStructures by Chris Okasaki which has some interesting discussion of FunctionalProgramming. There is a page on it here but it has been an orphan until I adopted it. I have also found this review on the topic: I think I can feel a new page coming on.

Some months ago I contributed to WikiReadersBackground.

Discovery: IndustrialStrengthCeePlusPlus, ExtremeGuidelinesForCeePlusPlus, ExtremeGuidelinesForCeePlusPlusDiscussion

These need further investigation.

20140906 - DonaldNoyes - I added some information about pdf versions and an online html version of the book to the page IndustrialStrengthCeePlusPlus that may be helpful

Thank you, very helpful.

I have had an interesting trip around the wiki starting from HyperTextHistory where someone had added a link to PaulOtlet. I had never heard of this pioneer of the study of information. I now plan to visit the Mundaneum in Mons, Belgium when I can. That lead on to a look around a lot of pages about HyperText and a revisiting of a category that I had forgotten I created in 2009!

I recently asked WhatAreTheDifferencesBetweenPythonTwoAndPythonThree and have had an answer which helps. I need this to understand the choice which is available on the RaspberryPi.

For information on compression tools such as xz (EcksZed) now being used by LLVM (LowLevelVirtualMachine) see CategoryCompression for a link to a WikiPedia article.

I am interested in idea of a ThresholdConcept and the nearest page here I can find is InorganicComplexityThreshold. See also ParadigmShift.

I have started BoostForDummies and TipsForBoostLibraries. At the moment I am working on BoostPhoenixLibrary. I became one of the maintaineers early in 2014 and I have gone back to it lately and had some encouraging moments figuring out how to fix some of the bugs. It is clear to me that each CeePlusPlus compiler has subtle differences and these throw up problems for maintainers of the BoostLibraries.


EditText of this page (last edited December 23, 2014) or FindPage with title or text search