Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Pigeon Deterrence System (PDS)
<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook MIT License, Copyright (C) Ken Webb, Thu May 05 2022 07:28:01 GMT-0400 (Eastern Daylight Saving Time)-->
Title: Pigeon Deterrence System (PDS)
InternalName: 23e4749f7ea51d800e9a94a353892245
My Notes
5 May 2022
Pigeons enjoy landing on the two balconies of our 17th floor condo.
We are designing and building a simple Pigeon Deterrence System (PDS) on the side balcony where they mostly land.
The PDS consists of segments of fishing line threaded through a set of upright metal pieces.
The uprights are constructed out of metal coat hanger wire.
In this Xholon workbook, I design the uprights.
Each upright has a small number of functional components and sub-components.
I also use this workbook to lay out a complete upright piece, using an Avatar moving in a grid.
The Avatar will turn left and right, and will move forward starting at one end of the upright.
- add a Xholon Grid
- use DefaultContent in CD
- use Avatar, with an Avatar behavior
<!-- domain objects -->
<CentUnit> <!-- The basic unit that all components are made out of; nominally = 1 centimeter -->
<Spacer/> <!-- a Spacer consists of 1 or more CentUnits -->
<HorizontalStabilizer/> <!-- prevents the upright from rotating -->
<Loop/> <!-- a circle with a circumference of about 5 centimeters -->
<Fastener/> <!-- a screw or other thing that fastens an upright to the concrete balcony wall -->
<PdsUpright multiplicity="1">
<Spacer multiplicity="7"/>
<Spacer multiplicity="1"/>
<HorizontalStabilizer roleName="Left HS"/>
<Spacer multiplicity="1"/>
<HorizontalStabilizer roleName="Right HS"/>
<Spacer multiplicity="1"/>
<PigeonDeterrenceSystembehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[
var a = 123;
var b = 456;
var c = a * b;
if (console) {
//# sourceURL=PigeonDeterrenceSystembehavior.js
<Loopbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[
var loop, testing;
var beh = {
postConfigure: function() {
testing = Math.floor(Math.random() * 10);
loop = this.cnode.parent();
act: function() {
toString: function() {
return + " testing:" + testing;
//# sourceURL=Loopbehavior.js
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<svg width="100" height="50" xmlns="">
<title>Pigeon Deterrence System (PDS)</title>
<rect id="PigeonDeterrenceSystem" fill="#98FB98" height="50" width="50" x="25" y="0"/>
<rect id="PigeonDeterrenceSystem/PdsUpright" fill="#6AB06A" height="50" width="10" x="80" y="0"/>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment