Skip to content

Instantly share code, notes, and snippets.

@kenwebb
Last active February 5, 2026 14:32
Show Gist options
  • Select an option

  • Save kenwebb/00fbc2c276aba60121b1011370733103 to your computer and use it in GitHub Desktop.

Select an option

Save kenwebb/00fbc2c276aba60121b1011370733103 to your computer and use it in GitHub Desktop.
Solarigraphy
<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook http://www.primordion.com/Xholon/gwt/ MIT License, Copyright (C) Ken Webb, Thu Feb 05 2026 09:32:25 GMT-0500 (Eastern Standard Time)-->
<XholonWorkbook>
<Notes><![CDATA[
Xholon
------
Title: Solarigraphy
Description:
Url: http://www.primordion.com/Xholon/gwt/
InternalName: 00fbc2c276aba60121b1011370733103
Keywords:
My Notes
--------
2026 Feb 5
This might be a way to capture the amount of sunlight incident on different balconies and at other points in our condo building.
It could be a simple way to compare different balconies, and different spots on the same balcony, across all seasons.
Compare the outer edge of the balcony wall, with the back floor of the balcony.
### References
(1) search: how to record yearly sunlight levels on film in a can
(2) https://en.wikipedia.org/wiki/Solarigraphy
Solarigraphy is a concept and a photographic practice based on the observation of the sun path
in the sky (different in each place on the Earth) and its effect on the landscape,
captured by a specific procedure that combines pinhole photography and digital processing.
Invented around 2000, solarigraphy (also known as solargraphy) uses photographic paper without chemical processing,
a pinhole camera and
a scanner to create images that catch the daily journey of the sun along the sky with very long exposure times,
from several hours to several years.
The longest known solarigraph was captured over the course of eight years.
Solarigraphy is an extreme case of long-exposure photography.
(3) https://jessbeecreates.com/solargraphy-camera-in-a-can-tutorial/
good tutorial with detailed instructions
(4) https://www.amazon.ca/s?k=photographic+paper+sensitive+to+light
- I can't tell which would be a good paper to try
(5) https://www.diyphotography.net/let-the-sun-shine-in-build-a-can-cam-and-take-four-month-long-exposures/
- paper in ref[6], or Ilford photographic paper
(6) https://www.freestylephoto.com/98782-Kentmere-Select-VC-RC-Glossy-8x10-25-Sheets
- suggested by ref[5]
Kentmere Select VC RC Glossy 8x10/25 Sheets
(7) https://pedroreastrophotography.com/Solarigraphy_20250923_PRE.pdf
- good tutorial
(8) https://www.youtube.com/results?search_query=solargraphy+pinhole+camera
(9) https://www.youtube.com/watch?v=eF2uJ8geliA
- uses Ilford:
20,3 x 25,4 cm PHOTOGRAPHIC PAPER 8x10in 50
Light sensitive darkroom paper matt/semi matt finish
Only open in complete darkness or under a red light.
- paper can be 6"x4", depends on size of can
- good tutorial
- details on removal, scanning (with scanner)
(10) https://www.youtube.com/watch?v=KBRkbE5rkrU
- good tutorial, one year exposure
- lots of detail on preparing the can, sand it down, just tip of the needle
(11) https://getbusygardening.com/how-to-determine-sun-exposure/
- manually recording every hour on paper
- with or without a light meter
For each area on your chart, write down how much light it’s getting:
Full sun (direct, unfiltered light)
Partial (a mix of sun and shade)
Dappled (like light through trees)
Shade (no direct sun at all)
(12) amazon: Soil Tester Moisture Meter, Light and PH acidity Tester, Plant Tester for Garden, Farm, Lawn, Indoor
- search used by ref[11]
(13) amazon: light meter
(14) search: diy pico light meter
- lots of hits
- see separate Xholon workbook/gist
]]></Notes>
<_-.XholonClass>
<!-- domain objects -->
<PhysicalSystem/>
<Block/>
<Brick/>
<!-- quantities -->
<Height superClass="Quantity"/>
</_-.XholonClass>
<xholonClassDetails>
<Block>
<port name="height" connector="Height"/>
</Block>
</xholonClassDetails>
<PhysicalSystem>
<Block>
<Height>0.1 m</Height>
</Block>
<Brick multiplicity="2"/>
</PhysicalSystem>
<Blockbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[
var a = 123;
var b = 456;
var c = a * b;
if (console) {
console.log(c);
}
//# sourceURL=Blockbehavior.js
]]></Blockbehavior>
<Heightbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[
var myHeight, testing;
var beh = {
postConfigure: function() {
testing = Math.floor(Math.random() * 10);
myHeight = this.cnode.parent();
},
act: function() {
myHeight.println(this.toString());
},
toString: function() {
return "testing:" + testing;
}
}
//# sourceURL=Heightbehavior.js
]]></Heightbehavior>
<Brickbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[
$wnd.xh.Brickbehavior = function Brickbehavior() {}
$wnd.xh.Brickbehavior.prototype.postConfigure = function() {
this.brick = this.cnode.parent();
this.iam = " red brick";
};
$wnd.xh.Brickbehavior.prototype.act = function() {
this.brick.println("I am a" + this.iam);
};
//# sourceURL=Brickbehavior.js
]]></Brickbehavior>
<Brickbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[
console.log("I'm another brick behavior");
]]></Brickbehavior>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<svg width="100" height="50" xmlns="http://www.w3.org/2000/svg">
<g>
<title>Block</title>
<rect id="PhysicalSystem/Block" fill="#98FB98" height="50" width="50" x="25" y="0"/>
<g>
<title>Height</title>
<rect id="PhysicalSystem/Block/Height" fill="#6AB06A" height="50" width="10" x="80" y="0"/>
</g>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
</XholonWorkbook>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment