|
History Writer Learns to Walk |
Seacoast History Blog #37
March 12, 2009
I couldn’t do what I do without the Web. Writing history is enormously time- consuming. You not only have to write about the past in a way that captures the over-stimulated modern reader, but you have to get the facts right. Facts are hard to find. They hide in corners in dusty archives, spread all across the planet. That used to mean costly trips to libraries, getting access to archives, waiting for reference librarians to access those sources, taking notes on the fly. Now, in more and more cases, I can get what I am looking for in seconds by clicking a mouse. (Continued below)
Web turns crawl into cakewalk
Take today. This morning I was reading a text on child labor practices for a book I’m working on. I have more than a dozen books piled up on my desk that I ordered from Amazon.com, the largest supplier of books in the world. I paid as little as a dollar (plus $3.99 postage) for texts I could not have found in a lifetime of rummaging through used bookshops. Same goes for scholarly articles. Essays that might take weeks to obtain via interlibrary loan, I can now download in seconds. I paid $8 the other day for a 10-page article via PayPal and thought it was a bargain made in heaven.
So far I’ve spent a little over $100 on research for this project and saved myself weeks of digging. I downloaded a bunch of books on child labor reformers from Google books. Minutes ago, I learned about the "anti" reformers too. These were people who thought child labor was a good thing, not evil. One of those reformers was Thomas Robinson Dawley, Jr. He wrote a book in 1913 arguing that kids in Appalachia were better off working in factories than on failed family farms. A 12-year old boy could now earn one-and-a-half times more money than his 40-year-old father, Dawley said. He complained that the Northern progressives who wanted to stop child labor were "parasites". Their efforts to vilify child labor practices, he wrote, were further Yankee attempts to control Southern mills as they had done with Southern lifestyles in the Civil War. I needed to see that point of view.
Thanks to the Web, I was able to put down my text book and, in less than a minute, find a 1913 review of Dawley’s book online at the New York Times. I ran that article onto my printer. Dawley’s entire book "The Child That Toileth Not" is online. In minutes I was able to look directly into the time period I am writing about. I could see the issue from both sides and read Dawley’s own words. Before the Internet, just finding that NYT article meant slogging through the Reader’s Guide to Periodical Literature and, with luck, locating the piece on microfilm. What might have been a forgotten footnote, became a lively counterpoint to the chapter I am writing. We tend to read only about the winners in history and quickly dismiss the failed opposition. This creates a highly skewed view that becomes increasingly oversimplified as time scrubs the gritty truth down to a polished chestnut. At least a dozen times a day I go down a short research rabbit hole. I can visit 10 web sites in half an hour, widen my knowledge, and sharpen my views.
This is important. Historians, as I often note, tend to recycle the stuff that previous historians wrote. That info, especially when done by local amateurs, is often out of date, or biased, or based on inaccurate sources. Penetrating resources back to their primary (or even secondary) sources is exhausting work. That’s why it can take years to research and write a college thesis. Working writers, paid by the piece or by the hour, rarely have the luxury to dig deeper. So what we write is just more recycled history.
Now there is time to double or triple check the facts, or to dig into deeper, diverse, sometimes previously undiscovered sources. Take this piece on Daniel Webster I’m writing for Monday’s newspaper. I wanted to confirm a quotation from a short story by Stephen Vincent Benet, but I don’t own a copy of "The Devil and Daniel Webster". But there it was, right online. So was the data about the two film versions of the story, rich retails on Webster’s life, details about his time at Dartmouth, his speeches and court cases, and on and on.
One of my editor’s recently sent a note reminding authors that they may not use Wikipedia as a research source. Good call. The online encyclopedia is often unreliable, but a wonderful place to start. I found some info there while researching privateering last week. That led me to a web site of a researcher in Scotland. We emailed back and forth and then, out of the blue, he offered to check a few maritime documents for me during his next trip to a maritime archive in London. They arrived by email days later – a project that would have taken me a week, thousands of travel miles, and cost at least $1000. Yes, I missed a trip to London, but when I go, I won’t have to spend all my time in the library.
The wider the Web reaches, the more enjoyable the research gets, and the more quickly I can finish richer and better-documented articles and books. One must be cautious. Speed kills, I know. But remember that, until recently, we were crawling. Now history writers can finally walk upright, and some days, even break into a slow run.
Copyright © 2009 by J. Dennis Robinson. All rights reserved.
Joomla! Debug Console
session.client.forwarded ⇒ 10.3.184.74
session.client.browser ⇒ Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
password_clear ⇒
groups ⇒
com_rsfirewall.geoip ⇒
6.18 MB (6,483,488 Bytes)
61 Queries Logged
SELECT `data`
FROM `rabbul_session`
WHERE `session_id` = '2dea496b35b1191189900d46c228d5f8'SELECT `session_id`
FROM `rabbul_session`
WHERE `session_id` = '2dea496b35b1191189900d46c228d5f8'
LIMIT 0, 1INSERT INTO `rabbul_session`
(`session_id`, `client_id`, `time`)
VALUES
('2dea496b35b1191189900d46c228d5f8', 0, '1793691906')SELECT extension_id AS id, element AS "option", params, enabled
FROM rabbul_extensions
WHERE `type` = 'component'
AND `element` = 'com_users'SELECT b.id
FROM rabbul_usergroups AS a
LEFT JOIN rabbul_usergroups AS b
ON b.lft <= a.lft
AND b.rgt >= a.rgt
WHERE a.id = 1SELECT id, rules
FROM `rabbul_viewlevels`SELECT folder AS type, element AS name, params
FROM rabbul_extensions
WHERE enabled >= 1
AND type ='plugin'
AND state >= 0
AND access IN (1,1)
ORDER BY orderingSELECT extension_id AS id, element AS "option", params, enabled
FROM rabbul_extensions
WHERE `type` = 'component'
AND `element` = 'com_languages'SELECT `query`
FROM `rabbul_admintools_wafexceptions`
WHERE (`option` IS NULL OR `option` = '')
AND (`view` IS NULL OR `view` = '')
GROUP BY `query`
ORDER BY `query` ASCSELECT `value`
FROM `rabbul_admintools_storage`
WHERE `key` = 'cparams'SELECT `path`
FROM rabbul_rsfirewall_ignored
WHERE `type`='ignore_folder' OR `type`='ignore_file'SELECT `file`
FROM rabbul_rsfirewall_hashes
WHERE `type`='protect'SELECT *
FROM rabbul_rsfirewall_configurationSHOW FULL COLUMNS
FROM `rabbul_sef_config`SELECT *
FROM rabbul_sef_config
WHERE `id` = '1'SELECT non_sef_url,alias
FROM rabbul_sef_alias
WHERE published='1'
ORDER BY idSELECT m.id, m.menutype, m.title, m.alias, m.note, m.path AS route, m.link, m.type, m.level, m.language,m.browserNav, m.access, m.params, m.home, m.img, m.template_style_id, m.component_id, m.parent_id,e.element as component
FROM rabbul_menu AS m
LEFT JOIN rabbul_extensions AS e
ON m.component_id = e.extension_id
WHERE m.published = 1
AND m.parent_id > 0
AND m.client_id = 0
ORDER BY m.lftSELECT *
FROM rabbul_sef_redirect
WHERE CONVERT(source USING latin1) COLLATE latin1_general_cs = 'history-writer-learns-to-walk/?print=1&tmpl=component'
AND published='1'
LIMIT 1SELECT id
FROM rabbul_menu
WHERE alias='history-writer-learns-to-walk'
AND published=1SELECT id
FROM rabbul_categories
WHERE path='history-writer-learns-to-walk'
AND extension='com_content'SELECT id,catid
FROM rabbul_content
WHERE alias='history-writer-learns-to-walk'
AND state>0SELECT id,catid
FROM rabbul_content
WHERE alias='history-writer-learns-to-walk'
AND state>0SELECT id
FROM rabbul_menu
WHERE type='component'
AND published='1'
AND link LIKE 'index.php?option=com_content&view=article%&id=2285'
ORDER BY idSELECT id
FROM rabbul_menu
WHERE type='component'
AND published='1'
AND link LIKE 'index.php?option=com_content&view=categor%&id=258'
ORDER BY idSELECT `id`
FROM `rabbul_usergroups`SELECT parent.id, parent.lft, parent.rgt
FROM rabbul_usergroups AS parent
ORDER BY parent.lftSHOW FULL COLUMNS
FROM `rabbul_assets`SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT b.rules
FROM rabbul_assets AS a
LEFT JOIN rabbul_assets AS b
ON b.lft <= a.lft
AND b.rgt >= a.rgt
WHERE (a.name = '')
GROUP BY b.id, b.rules, b.lft
ORDER BY b.lftSELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT rules
FROM rabbul_assets
WHERE id = '1'SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT id
FROM rabbul_assets
WHERE parent_id = 0SELECT u.*
FROM rabbul_user_usergroup_map m
RIGHT JOIN rabbul_users u
ON (u.id=m.user_id)
WHERE m.group_id IN (6,7,8)
GROUP BY u.id
ORDER BY u.username ASCSHOW FULL COLUMNS
FROM `rabbul_rsfirewall_logs`SELECT *
FROM rabbul_rsfirewall_hashes
WHERE (`type`='2.5.28' OR `type`='protect')
AND `flag`!='C'SELECT *
FROM rabbul_rsfirewall_snapshots
WHERE `type`='protect'SELECT `ip`,`reason`
FROM rabbul_rsfirewall_lists
WHERE (`ip`='10.3.184.74' OR `ip` LIKE '%*%')
AND `type`='1'
AND `published`='1'SELECT `ip`,`reason`
FROM rabbul_rsfirewall_lists
WHERE (`ip`='10.3.184.74' OR `ip` LIKE '%*%')
AND `type`='0'
AND `published`='1'SELECT *
FROM rabbul_rsfirewall_exceptions
WHERE `published`='1'SELECT extension_id AS id, element AS "option", params, enabled
FROM rabbul_extensions
WHERE `type` = 'component'
AND `element` = 'com_content'SELECT *
FROM rabbul_languages
WHERE published=1
ORDER BY ordering ASCSELECT id, home, template, s.params
FROM rabbul_template_styles as s
LEFT JOIN rabbul_extensions as e
ON e.element=s.template
AND e.type='template'
AND e.client_id=s.client_id
WHERE s.client_id = 0
AND e.enabled = 1SELECT a.rules
FROM rabbul_assets AS a
WHERE (a.id = 1)
GROUP BY a.id, a.rules, a.lftSELECT b.rules
FROM rabbul_assets AS a
LEFT JOIN rabbul_assets AS b
ON b.lft <= a.lft
AND b.rgt >= a.rgt
WHERE (a.name = 'com_content')
GROUP BY b.id, b.rules, b.lft
ORDER BY b.lftSELECT a.id, a.asset_id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext,
CASE WHEN badcats.id is null THEN a.state ELSE 0 END AS state, a.mask, a.catid, a.created, a.created_by, a.created_by_alias,
CASE WHEN a.modified = 0 THEN a.created ELSE a.modified END as modified, a.modified_by, a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.images, a.urls, a.attribs, a.version, a.parentid, a.ordering, a.metakey, a.metadesc, a.access, a.hits, a.metadata, a.featured, a.language, a.xreference,c.title AS category_title, c.alias AS category_alias, c.access AS category_access,u.name AS author,(
SELECT MAX(contact.id) AS id
FROM rabbul_contact_details AS contact
WHERE contact.published = 1
AND contact.user_id = a.created_by) as contactid,parent.title as parent_title, parent.id as parent_id, parent.path as parent_route, parent.alias as parent_alias,ROUND(v.rating_sum / v.rating_count, 0) AS rating, v.rating_count as rating_count
FROM rabbul_content AS a
LEFT JOIN rabbul_categories AS c
on c.id = a.catid
LEFT JOIN rabbul_users AS u
on u.id = a.created_by
LEFT JOIN rabbul_categories as parent
ON parent.id = c.parent_id
LEFT JOIN rabbul_content_rating AS v
ON a.id = v.content_id
LEFT
OUTER JOIN (SELECT cat.id as id
FROM rabbul_categories AS cat JOIN rabbul_categories AS parent
ON cat.lft BETWEEN parent.lft
AND parent.rgt
WHERE parent.extension = 'com_content'
AND parent.published <= 0
GROUP BY cat.id) AS badcats
ON badcats.id = c.id
WHERE a.id = 2285
AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2026-11-03 07:45:06')
AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2026-11-03 07:45:06')
AND (a.state = 1 OR a.state =2)SELECT c.*,
CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(':', c.id, c.alias) ELSE c.id END as slug
FROM rabbul_categories as c
LEFT JOIN rabbul_categories AS s
ON (s.lft <= c.lft
AND s.rgt >= c.rgt) OR (s.lft > c.lft
AND s.rgt < c.rgt)
LEFT JOIN (SELECT cat.id as id
FROM rabbul_categories AS cat JOIN rabbul_categories AS parent
ON cat.lft BETWEEN parent.lft
AND parent.rgt
WHERE parent.extension = 'com_content'
AND parent.published != 1
GROUP BY cat.id) AS badcats
ON badcats.id = c.id
WHERE (c.extension='com_content' OR c.extension='system')
AND c.access IN (1,1)
AND c.published = 1
AND s.id=258
AND badcats.id is null
GROUP BY c.id, c.asset_id, c.access, c.alias, c.checked_out, c.checked_out_time,
c.created_time, c.created_user_id, c.description, c.extension, c.hits, c.language, c.level,
c.lft, c.metadata, c.metadesc, c.metakey, c.modified_time, c.note, c.params, c.parent_id,
c.path, c.published, c.rgt, c.title, c.modified_user_id
ORDER BY c.lftSELECT a.alias AS article
FROM rabbul_content AS a
WHERE a.id = 2285UPDATE rabbul_content
SET hits = hits + 1
WHERE id = 2285UPDATE `rabbul_session`
SET `data` = '__default|a:9:{s:15:\"session.counter\";i:1;s:19:\"session.timer.start\";i:1793691906;s:18:\"session.timer.last\";i:1793691906;s:17:\"session.timer.now\";i:1793691906;s:24:\"session.client.forwarded\";s:11:\"10.3.184.74\";s:22:\"session.client.browser\";s:103:\"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)\";s:8:\"registry\";O:9:\"JRegistry\":1:{s:7:\"\0*\0data\";O:8:\"stdClass\":0:{}}s:4:\"user\";O:5:\"JUser\":25:{s:9:\"\0*\0isRoot\";b:0;s:2:\"id\";i:0;s:4:\"name\";N;s:8:\"username\";N;s:5:\"email\";N;s:8:\"password\";N;s:14:\"password_clear\";s:0:\"\";s:8:\"usertype\";N;s:5:\"block\";N;s:9:\"sendEmail\";i:0;s:12:\"registerDate\";N;s:13:\"lastvisitDate\";N;s:10:\"activation\";N;s:6:\"params\";N;s:6:\"groups\";a:0:{}s:5:\"guest\";i:1;s:13:\"lastResetTime\";N;s:10:\"resetCount\";N;s:10:\"\0*\0_params\";O:9:\"JRegistry\":1:{s:7:\"\0*\0data\";O:8:\"stdClass\":0:{}}s:14:\"\0*\0_authGroups\";a:1:{i:0;i:1;}s:14:\"\0*\0_authLevels\";a:2:{i:0;i:1;i:1;i:1;}s:15:\"\0*\0_authActions\";N;s:12:\"\0*\0_errorMsg\";N;s:10:\"\0*\0_errors\";a:0:{}s:3:\"aid\";i:0;}s:20:\"com_rsfirewall.geoip\";s:0:\"\";}'
, `time` = '1793691906'
WHERE `session_id` = '2dea496b35b1191189900d46c228d5f8'
40 Query Types Logged, Sorted by Occurrences.
SELECT Tables:
15 × SELECT id
FROM rabbul_assets3 × SELECT extension_id AS id, element AS "option", params, enabled
FROM rabbul_extensions3 × SELECT id
FROM rabbul_menu2 × SELECT id,catid
FROM rabbul_content2 × SELECT b.rules
FROM rabbul_assets AS a
LEFT JOIN rabbul_assets AS b
ON b.lft <= a.lft
AND b.rgt >= a.rgt2 × SELECT `ip`,`reason`
FROM rabbul_rsfirewall_lists1 × SELECT *
FROM rabbul_rsfirewall_hashes1 × SELECT rules
FROM rabbul_assets1 × SELECT *
FROM rabbul_rsfirewall_snapshots1 × SELECT u.*
FROM rabbul_user_usergroup_map m RIGHT JOIN rabbul_users u
ON (u.id=m.user_id)1 × SELECT *
FROM rabbul_rsfirewall_exceptions1 × SELECT c.*,
CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(':', c.id, c.alias) ELSE c.id END as slug
FROM rabbul_categories as c
LEFT JOIN rabbul_categories AS s
ON (s.lft <= c.lft
AND s.rgt >= c.rgt) OR (s.lft > c.lft
AND s.rgt < c.rgt)
LEFT JOIN (SELECT cat.id as id
FROM rabbul_categories AS cat JOIN rabbul_categories AS parent
ON cat.lft BETWEEN parent.lft
AND parent.rgt1 × SELECT a.alias AS article
FROM rabbul_content AS a1 × SELECT a.id, a.asset_id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext,
CASE WHEN badcats.id is null THEN a.state ELSE 0 END AS state, a.mask, a.catid, a.created, a.created_by, a.created_by_alias,
CASE WHEN a.modified = 0 THEN a.created ELSE a.modified END as modified, a.modified_by, a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.images, a.urls, a.attribs, a.version, a.parentid, a.ordering, a.metakey, a.metadesc, a.access, a.hits, a.metadata, a.featured, a.language, a.xreference,c.title AS category_title, c.alias AS category_alias, c.access AS category_access,u.name AS author,( SELECT MAX(contact.id) AS id
FROM rabbul_contact_details AS contact1 × SELECT a.rules
FROM rabbul_assets AS a1 × SELECT *
FROM rabbul_languages1 × SELECT id, home, template, s.params
FROM rabbul_template_styles as s
LEFT JOIN rabbul_extensions as e
ON e.element=s.template
AND e.type='template'
AND e.client_id=s.client_id1 × SELECT parent.id, parent.lft, parent.rgt
FROM rabbul_usergroups AS parent1 × SELECT id
FROM rabbul_categories1 × SELECT `query`
FROM `rabbul_admintools_wafexceptions`1 × SELECT `value`
FROM `rabbul_admintools_storage`1 × SELECT folder AS type, element AS name, params
FROM rabbul_extensions1 × SELECT id, rules
FROM `rabbul_viewlevels1 × SELECT `session_id`
FROM `rabbul_session`1 × SELECT b.id
FROM rabbul_usergroups AS a
LEFT JOIN rabbul_usergroups AS b
ON b.lft <= a.lft
AND b.rgt >= a.rgt1 × SELECT `path`
FROM rabbul_rsfirewall_ignored1 × SELECT `file`
FROM rabbul_rsfirewall_hashes1 × SELECT *
FROM rabbul_sef_redirect1 × SELECT `data`
FROM `rabbul_session`1 × SELECT m.id, m.menutype, m.title, m.alias, m.note, m.path AS route, m.link, m.type, m.level, m.language,m.browserNav, m.access, m.params, m.home, m.img, m.template_style_id, m.component_id, m.parent_id,e.element as component
FROM rabbul_menu AS m
LEFT JOIN rabbul_extensions AS e
ON m.component_id = e.extension_id1 × SELECT non_sef_url,alias
FROM rabbul_sef_alias1 × SELECT *
FROM rabbul_rsfirewall_configuratio1 × SELECT *
FROM rabbul_sef_config1 × SELECT `id`
FROM `rabbul_usergroups
OTHER Tables:
1 × UPDATE rabbul_content
SET hits = hits + 11 × UPDATE `rabbul_session`
SET `data` = '__default|a:9:{s:15:\"session.counter\";i:1;s:19:\"session.timer.start\";i:1793691906;s:18:\"session.timer.last\";i:1793691906;s:17:\"session.timer.now\";i:1793691906;s:24:\"session.client.forwarded\";s:11:\"10.3.184.74\";s:22:\"session.client.browser\";s:103:\"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)\";s:8:\"registry\";O:9:\"JRegistry\":1:{s:7:\"\0*\0data\";O:8:\"stdClass\":0:{}}s:4:\"user\";O:5:\"JUser\":25:{s:9:\"\0*\0isRoot\";b:0;s:2:\"id\";i:0;s:4:\"name\";N;s:8:\"username\";N;s:5:\"email\";N;s:8:\"password\";N;s:14:\"password_clear\";s:0:\"\";s:8:\"usertype\";N;s:5:\"block\";N;s:9:\"sendEmail\";i:0;s:12:\"registerDate\";N;s:13:\"lastvisitDate\";N;s:10:\"activation\";N;s:6:\"params\";N;s:6:\"groups\";a:0:{}s:5:\"guest\";i:1;s:13:\"lastResetTime\";N;s:10:\"resetCount\";N;s:10:\"\0*\0_params\";O:9:\"JRegistry\":1:{s:7:\"\0*\0data\";O:8:\"stdClass\":0:{}}s:14:\"\0*\0_authGroups\";a:1:{i:0;i:1;}s:14:\"\0*\0_authLevels\";a:2:{i:0;i:1;i:1;i:1;}s:15:\"\0*\0_authActions\";N;s:12:\"\0*\0_errorMsg\";N;s:10:\"\0*\0_errors\";a:0:{}s:3:\"aid\";i:0;}s:20:\"com_rsfirewall.geoip\";s:0:\"\";}' , `time` = '1793691906'1 × SHOW FULL COLUMNS
FROM `rabbul_rsfirewall_logs1 × SHOW FULL COLUMNS
FROM `rabbul_assets1 × SHOW FULL COLUMNS
FROM `rabbul_sef_config1 × INSERT INTO `rabbul_session` (`session_id`, `client_id`, `time`)
VALUES ('2dea496b35b1191189900d46c228d5f8', 0, '1793691906'