Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a22220a91c4a26ee

Jump to content

Talk:ChiWriter

Page contents not supported in other languages.
Add topic
From Wikipedia, the free encyclopedia

How to get a web page's own metadata from the Internet Archive?

[edit]

The URL below provides the content of a page, as it stood at the time of archiving:

https://web.archive.org/web/20020131034708/https://www.horstmann.com/ChiWriter/

We can see that the page was archived in 2002. But what was the page's last modification time (mtime), at the time of archiving? HTTP provides this information via the "Last-Modified:" header field. The page at the URL above shows no HTTP headers. How do I get the field's value from archive.org? Do I need an account there? Do I need JavaScript?
 Black Walnut talk 01:03, 30 December 2025 (UTC)Reply

@Black Walnut: Are you familiar with CURL? It has a --dump-header option which I used to save the headers of the archive page into a file, which includes the header:
x-archive-orig-last-modified: Sun, 23 Sep 2001 07:28:12 GMT
So I take it that when the archive crawled this page in January 2002, this was the Last-Modified header that it received.
curl output (external pastebin because I couldn't figure out how to dump it in a wiki reply) ClaudineChionh (she/her · talk · email · global) 02:03, 30 December 2025 (UTC)Reply

Thank you so much Claudine! I understand now! You rock!
 Black Walnut talk 06:41, 30 December 2025 (UTC)Reply

You're welcome! This led me to discover that Cay Horstmann's home page now links to this Wikipedia article instead of the deleted page on his own site, which is an interesting choice. ClaudineChionh (she/her · talk · email · global) 06:45, 30 December 2025 (UTC)Reply

Huh! He orphaned his ChiWriter FAQ page! The page is still on the server and it isn't an island -- it's reachable through Wikipedia (and through Joop van den Eijnde's web page; maybe from others too) but... Huh! Yeah, that's messed up!
 Black Walnut talk 08:45, 30 December 2025 (UTC)Reply

Remove obvious original research regarding language used

[edit]

@Pburka: on 3 May 2026, you removed the information on the programming language in which ChiWriter was written, calling it original research.  I disagree.  Original research involves analysis: the creation and expounding of new ideas by the researcher.  Contrarily, the information which you removed involved mere transcription.  This information is no different from, say, a list of all the actors in a film.  In both cases, one examines the original material, such as the film's end credits or the executable's compiler strings, and copies the information into the Wikipedia article.  No original idea is being added.  Please restore the information.
 Black Walnut talk 09:43, 4 May 2026 (UTC)Reply

Original research includes "analysis ... of published material that reaches or implies a conclusion not stated by the sources." The binary files are primary sources, and reverse engineering the source language requires extensive technical analysis. Furthermore, the conclusion is dubious. Turbo C++ wasn't released until 1990, so claiming that a 1986 DOS program used C++ is a leap. We also can't know how much C or C++ code was included (could be a single function!), nor if a transpiler was employed from another high level language. pburka (talk) 14:33, 4 May 2026 (UTC)Reply

@Pburka: wrote:

reverse engineering the source language requires extensive technical analysis.

With respect, you misuse the term reverse engineering.  It doesn't apply here.

These strings serve no purpose except to advertise Borland Inc's tools.  The advertisements are aimed at potential customers (software developers) rather than at the general public.  So, they are embedded in the executable files, where they won't disturb said general public.  This doesn't negate the fact that they are just advertisements.  Checking out the ads isn't reverse engineering.  One simply encounters them, same as any billboard on a highway.

The citation which you removed merely showed each of the ads and pointed out where they are located, as a good citation should.  There was no analysis whatsoever.  Yes, seeing the ads involves using information technology tools.  We live in a technological society.  What's more, this article is about a technological product and the ads are aimed at technlogists.  Yes, the citation showed the commands to use to display the ads.  The citation was written this way because that is more helpful than merely pointing at the package's download URL.  The details aid verifiability.

Furthermore, the conclusion is dubious.  Turbo C++ wasn't released until 1990, so claiming that a 1986 DOS program used C++ is a leap.

1986 was ChiWriter's initial release date.  The program had many releases.  The information which you removed showed the timestamps 2007 for all files.  That is the date of ChiWriter's last release, which is available from the author's web site.  The article contained no claims about the initial release's programming language.

We also can't know how much C or C++ code was included (could be a single function!)

This is a silly argument.  It also ignores industry norms for build tools.  Some compilers advertise themselves; some don't.  When they do, it is on a per-executable basis, not per function nor per object file.  This is indeed what one sees in ChiWriter.

nor if a transpiler was employed from another high level language.

This idea (and the preceding one that ChiWriter could consist of mostly non-C/C++ code) isn't impossible but it is unreasonable to those familiar with the art.  To put things in perspective: we have no proof that Martians weren't involved in building Egypt's pyramids.  What we have is a preponderance of evidence that humans worked on them and that humans are perfectly capable of building such structures.  We also have a complete lack of evidence for the existence of intelligent, space-faring Martians.  This suffices.  See Occam's razor.

On reflection, the removed material did contain a logical error: the fact that a build tool advertises itself as a C++ compiler doesn't necessarily mean that it was used to build C++ sources.  In fact, it would be equally likely that all sources were *.c files and that Horstmann just used the tool he had on hand in 2007.  The infobox said "C and C++".  It should have said one of "C/C++", "C and/or C++", or "C and, possibly, C++".  Thank you for making me reflect on this.

Assuming that the above satisfy your concern over original research, please restore the information which you removed.  While you're at it, the noted correction is also needed.
 Black Walnut talk 01:48, 5 May 2026 (UTC)Reply

I've started a discussion at Wikipedia:No original research/Noticeboard#Identification of programming language in ChiWriter to get input from more editors. pburka (talk) 02:54, 5 May 2026 (UTC)Reply

@Pburka: Looks good.  Thank you.  Should the text there, maybe include a link to the discussion here?

Also, over there, you wrote:

It's also potentially inaccurate, since it's only searching for a handful of known patterns from some popular compilers around that period, and doesn't consider the possibility of multiple languages or transpilers.

I apologize for the misunderstanding.  The citation uses a form of communication that is common in the software industry, and it didn't occur to me to explain it, in our discussion.  Those search strings demonstrate final answers, for verifiability, not how to go about discovering the answer in the first place.

When one approaches the question initially:

What programming language was this application written in?  Is the answer easily knowable?

...not knowing the answer, one reads all the strings.  For example, simply with a command like this: strings CW.EXE.  And, hopefully, the answer is easy to spot amongst the rest of the text.  In ChiWriter's case, the answer came in the form of those specific copyright statements.

In programming circles, to prove a point with code, rather than with prose, one writes commands that output the thing being claimed, as a tidy report.  Then, one shows those commands, along with their output.  This makes it easy for others to verify the claim: copy, paste, execute.  It is understood that the ChiWriter executables contain much other textual material, which I deemed not relevant.  To verify the claim, one can simply execute the shown commands easy.  To dispute the claim, one looks at the entirety of the source material, in search of a counterexample.

A good citation shows the relevant text, not the entirety of the content of the work being studied.  The form of communication described above achieves this.

Returning to the movie metaphore, a film's credits are long.  In order to support a particular claim with precision, one would point to the specific timestamp at which a particular credit appears.  That doesn't mean there aren't other credits.  It just means that this is the item chosen to support the claim made in the article.  To verify the claim, you fast-forward to the specific timestamp in the movie, and observe the presence of the specific credit easy.  To dispute the claim, you watch the whole movie, in search of contradicting evidence, such as the recognizable presence of an actor in the role for which a different actor was credited.

This is the purpose of the commands and search strings in the citation which you deleted: they produce a tidy report to demonstrate the presence of the specific, relevant strings in the executable, along with the filenames, timestamps, file sizes, and magic strings, which corroborate the answer.  You either accept my word that I read the whole text and found no contradicting evidence or you read the whole text yourself (strings ...) to double-check that I wasn't wrong.
 Black Walnut talk 06:10, 5 May 2026 (UTC)Reply