| Pinhole Photography |
Seacoast Gallery
STEVE SALNIKER
And now for something completely different. With all those spiffy digital cameras
available, why would someone take photos using a wooden box with a hole in it?
Don't knock it until you've tried it. The primitive art of pinhole photography
is making a compeback as a simple, satisfyiny art in a complex age.
STEVE SALNIKER
Pinhole Photography
Dover, NH
9 images on two web pages
Stephen Salniker created this Gallery with a whole new perspective. He uses a
camera with no lens, as primitive, yet evocative as the earlies photos ever taken
in the mid 1800s. He started doing pinhole work at age 15 because he did not have
an enlarger. He found, after reading an article in Popular Photography, that he
could get a large image by building his own camera and using enlarging paper in
place of film. That gave him a paper negative, which he then contact-printed to
make a positive image.
Tthree decades later, Steve continues to make pinhole images. Today he has an enlarger, but still prefers working with large-format negatives. He currently has four cameras that he uses regularly. He prefers "palladium" printing techniques for making black and white prints because he says he gets a wider range of tones in the finished print.
The color images here were scanned from 8" x 10" color positives, that came directly out one of Steve's many pinhole cameras. Steve used the back end of an old view camera that he built into a pinhole camera using a cardboard front. The black and white images came from 8" x 10" negatives that were shot in a hand-made Masonite camera.
Steve notes that anyone can make a pinhole camera from virtually any object that is light-tight -- from a Quaker oatmeal box to a shoe box. One artist even made a pinhole camera from a Volkswagen bus, he says. Taking a Polaroid camera, removing the lens, and replacing it with a pinhole is great way to make instant pinhole pictures.
Steve works from his studio in Dover. When he is not making pinhole images, Steve is a videographer at NH Public Television, where he taped the long-running "NH Crossroads" and just about everything else for more than a decade. -- JDR




All photographs copyright Steve Salniker. All rights reserved.
Originally published here in 1998.
CONTINUE f Pinhole PhotographyGallery
Gallery by Steve Salniker




All photographs copyright Steve Salniker. All rights reserved.
Originally published here in 1998.
session.client.forwarded ⇒ 10.1.77.32
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 ⇒
link ⇒ http://www.seacoastnh.com/best-clam-chowder-in-the-world/
link ⇒ http://www.seacoastnh.com/how-massachusetts-almost-ate-new-hampshire/
link ⇒ http://www.seacoastnh.com/how-the-tall-ships-really-came-to-nh/
link ⇒ http://www.seacoastnh.com/pinhole-photography/
link ⇒ http://www.seacoastnh.com/time-capsule-buried-in-1998/
session.token ⇒ 2b89a1c53c29cf24e9296f2033f8649a
Application 0.000 seconds (+0.000); 0.33 MB (+0.333) - afterLoadApplication 0.014 seconds (+0.014); 3.22 MB (+2.887) - afterInitialiseApplication 0.046 seconds (+0.032); 5.03 MB (+1.811) - afterRouteApplication 0.055 seconds (+0.009); 6.15 MB (+1.114) - afterDispatchApplication 0.056 seconds (+0.000); 6.19 MB (+0.045) - afterRender6.19 MB (6,494,264 Bytes)SELECT `data`
FROM `rabbul_session`
WHERE `session_id` = '0d9edde8b42ecb6d5ead55736094fe00'DELETE
FROM `rabbul_session`
WHERE `time` < '1792155847'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 = 'pinhole-photography/?print=1&tmpl=component'
AND published='1'
LIMIT 1SELECT id
FROM rabbul_menu
WHERE alias='pinhole-photography'
AND published=1SELECT id
FROM rabbul_categories
WHERE path='pinhole-photography'
AND extension='com_content'SELECT id,catid
FROM rabbul_content
WHERE alias='pinhole-photography'
AND state>0SELECT id,catid
FROM rabbul_content
WHERE alias='pinhole-photography'
AND state>0SELECT id
FROM rabbul_menu
WHERE type='component'
AND published='1'
AND link LIKE 'index.php?option=com_content&view=article%&id=533'
ORDER BY idSELECT id
FROM rabbul_menu
WHERE type='component'
AND published='1'
AND link LIKE 'index.php?option=com_content&view=categor%&id=208'
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.1.77.32' OR `ip` LIKE '%*%')
AND `type`='1'
AND `published`='1'SELECT `ip`,`reason`
FROM rabbul_rsfirewall_lists
WHERE (`ip`='10.1.77.32' 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 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 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 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 = 533
AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2026-10-16 13:19:07')
AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2026-10-16 13:19:07')
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=208
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 = 533UPDATE rabbul_content
SET hits = hits + 1
WHERE id = 533UPDATE `rabbul_session`
SET `data` = '__default|a:12:{s:15:\"session.counter\";i:10;s:19:\"session.timer.start\";i:1792156745;s:18:\"session.timer.last\";i:1792156747;s:17:\"session.timer.now\";i:1792156747;s:24:\"session.client.forwarded\";s:10:\"10.1.77.32\";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:\"\";s:16:\"com_mailto.links\";a:5:{s:40:\"97fddf76b530d309f728e9cc4d0ea2b8ad6ad6f4\";O:8:\"stdClass\":2:{s:4:\"link\";s:57:\"http://www.seacoastnh.com/best-clam-chowder-in-the-world/\";s:6:\"expiry\";i:1792156745;}s:40:\"f725098f8f0fb2c2710d6af20630878bf4eb7602\";O:8:\"stdClass\":2:{s:4:\"link\";s:69:\"http://www.seacoastnh.com/how-massachusetts-almost-ate-new-hampshire/\";s:6:\"expiry\";i:1792156746;}s:40:\"27dc8c9a362167bae7cda7b287909c43f0b65e1f\";O:8:\"stdClass\":2:{s:4:\"link\";s:63:\"http://www.seacoastnh.com/how-the-tall-ships-really-came-to-nh/\";s:6:\"expiry\";i:1792156746;}s:40:\"aab96bc210fb5198f79be1da752b7239c9643d1c\";O:8:\"stdClass\":2:{s:4:\"link\";s:46:\"http://www.seacoastnh.com/pinhole-photography/\";s:6:\"expiry\";i:1792156746;}s:40:\"a0797f2b9a0c5639e243f1d90f7cf4325748daed\";O:8:\"stdClass\":2:{s:4:\"link\";s:54:\"http://www.seacoastnh.com/time-capsule-buried-in-1998/\";s:6:\"expiry\";i:1792156746;}}s:19:\"com_mailto.formtime\";i:1792156746;s:13:\"session.token\";s:32:\"2b89a1c53c29cf24e9296f2033f8649a\";}'
, `time` = '1792156747'
WHERE `session_id` = '0d9edde8b42ecb6d5ead55736094fe00'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 `ip`,`reason`
FROM rabbul_rsfirewall_lists2 × 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.rgt1 × SELECT rules
FROM rabbul_assets1 × SELECT *
FROM rabbul_rsfirewall_hashes1 × 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 b.id
FROM rabbul_usergroups AS a
LEFT JOIN rabbul_usergroups AS b
ON b.lft <= a.lft
AND b.rgt >= a.rgt1 × 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 *
FROM rabbul_languages1 × SELECT `id`
FROM `rabbul_usergroups1 × SELECT `path`
FROM rabbul_rsfirewall_ignored1 × SELECT `file`
FROM rabbul_rsfirewall_hashes1 × SELECT `value`
FROM `rabbul_admintools_storage`1 × SELECT `query`
FROM `rabbul_admintools_wafexceptions`1 × SELECT folder AS type, element AS name, params
FROM rabbul_extensions1 × SELECT *
FROM rabbul_rsfirewall_configuratio1 × SELECT *
FROM rabbul_sef_config1 × SELECT id
FROM rabbul_categories1 × SELECT `data`
FROM `rabbul_session`1 × SELECT *
FROM rabbul_sef_redirect1 × 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 parent.id, parent.lft, parent.rgt
FROM rabbul_usergroups AS parent1 × UPDATE rabbul_content
SET hits = hits + 11 × UPDATE `rabbul_session`
SET `data` = '__default|a:12:{s:15:\"session.counter\";i:10;s:19:\"session.timer.start\";i:1792156745;s:18:\"session.timer.last\";i:1792156747;s:17:\"session.timer.now\";i:1792156747;s:24:\"session.client.forwarded\";s:10:\"10.1.77.32\";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:\"\";s:16:\"com_mailto.links\";a:5:{s:40:\"97fddf76b530d309f728e9cc4d0ea2b8ad6ad6f4\";O:8:\"stdClass\":2:{s:4:\"link\";s:57:\"http://www.seacoastnh.com/best-clam-chowder-in-the-world/\";s:6:\"expiry\";i:1792156745;}s:40:\"f725098f8f0fb2c2710d6af20630878bf4eb7602\";O:8:\"stdClass\":2:{s:4:\"link\";s:69:\"http://www.seacoastnh.com/how-massachusetts-almost-ate-new-hampshire/\";s:6:\"expiry\";i:1792156746;}s:40:\"27dc8c9a362167bae7cda7b287909c43f0b65e1f\";O:8:\"stdClass\":2:{s:4:\"link\";s:63:\"http://www.seacoastnh.com/how-the-tall-ships-really-came-to-nh/\";s:6:\"expiry\";i:1792156746;}s:40:\"aab96bc210fb5198f79be1da752b7239c9643d1c\";O:8:\"stdClass\":2:{s:4:\"link\";s:46:\"http://www.seacoastnh.com/pinhole-photography/\";s:6:\"expiry\";i:1792156746;}s:40:\"a0797f2b9a0c5639e243f1d90f7cf4325748daed\";O:8:\"stdClass\":2:{s:4:\"link\";s:54:\"http://www.seacoastnh.com/time-capsule-buried-in-1998/\";s:6:\"expiry\";i:1792156746;}}s:19:\"com_mailto.formtime\";i:1792156746;s:13:\"session.token\";s:32:\"2b89a1c53c29cf24e9296f2033f8649a\";}' , `time` = '1792156747'1 × SHOW FULL COLUMNS
FROM `rabbul_rsfirewall_logs1 × SHOW FULL COLUMNS
FROM `rabbul_assets1 × SHOW FULL COLUMNS
FROM `rabbul_sef_config1 × DELETE
FROM `rabbul_session`