Compare commits

..

25 Commits

Author SHA1 Message Date
mb
7bb296de9e Merge branch 'master' of svilayphiou/relearn-curved-slider-webpage into master 2019-05-30 11:05:22 +02:00
mb
34ad61faf4 removed the "ongoing" sentence for the Friday evening in Rotterdam 2019-05-30 10:55:43 +02:00
b6cf776a01 lunch modification 2019-05-23 11:27:32 +02:00
81ba7998cf ready to be online 2019-05-23 10:45:27 +02:00
e6669e996d css for mobile 2019-05-22 16:32:31 +02:00
8f5d50cd6a a start of brussels session 2019-05-21 17:31:59 +02:00
d36fa5dcfd subtle changes in the layout of the text + attempt at making a loop with just one path + syncing the bézier when we scroll the text in a more traditional way 2019-05-21 16:39:32 +02:00
814d6fc01b changed some structural info for better legibility in current content. 2019-05-21 14:23:26 +02:00
mb
fd5e581308 added a <br> 2019-05-14 00:07:30 +02:00
mb
82433bdd0b adding a message to the Friday evening start time --> (ongoing, no fixed starting time) 2019-05-14 00:03:27 +02:00
lowrussia
47e12e1080 slwr: smooth slider scroll, mobile style 2019-05-13 21:09:25 +02:00
a371dca36b removed the soon from will be followed soon 2019-05-13 18:47:48 +02:00
9ae70f3252 remove the double scroll situation 2019-05-13 18:33:44 +02:00
507cf54431 Merge branch 'master' of ssh://vvvvvvaria.org:12345/varia/relearn-curved-slider-webpage 2019-05-13 18:28:42 +02:00
5d4b43bb5f adding a short line that says that more words about the curve follow soon 2019-05-13 18:28:35 +02:00
mb
92585f3e44 Merge branch 'master' of s/relearn-curved-slider-webpage into master 2019-05-13 09:58:15 +02:00
b97fa0db2b removed energy field 2019-05-12 16:37:42 +02:00
d6f40fc0b7 rewrote the hosting sentence 2019-05-12 15:08:17 +02:00
702a217283 small changes in the text 2019-05-12 15:02:23 +02:00
lowrussia
14a53f7f5e scroll slider 2019-05-11 23:13:49 +02:00
lowrussia
cdb74c2a88 Merge remote-tracking branch 'upstream/master' 2019-05-11 22:23:08 +02:00
60ad158cc3 moving the slider a bit to the left 2019-05-11 14:33:03 +02:00
0065480414 joana and me inserted the relearn @ rotterdam announcement 2019-05-11 14:12:20 +02:00
mb
754e8d6882 Merge branch 'master' of dickreckard/relearn-curved-slider-webpage into master
two sliders!
2019-05-07 22:42:58 +02:00
lowrussia
f3ddbf31b1 d3 test 2019-05-05 19:12:09 +02:00
7 changed files with 771 additions and 50 deletions

BIN
css/Avara-Black.otf Normal file

Binary file not shown.

BIN
css/Avara-Bold.otf Normal file

Binary file not shown.

BIN
css/Avara-BoldItalic.otf Normal file

Binary file not shown.

View File

@ -1,7 +1,321 @@
@font-face {
font-family: 'AvaraBold';
src: url('Avara-Bold.otf');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'AvaraBold';
src: url('Avara-BoldItalic.otf');
font-weight: normal;
font-style: italic;
}
@font-face {
font-family: 'AvaraBold';
src: url('Avara-Black.otf');
font-weight: bold;
font-style: normal;
}
:root {
font-size: 18px;
line-height: 1.4em;
}
body{
position: relative;
margin:0;
padding:0;
color:purple;
background-color:#ff4d4d33;
font-family: 'AvaraBold';
}
hr{
border:0;
border-bottom:1px dotted;
margin-top: 1em;
margin-bottom: 1em;
}
h1{
line-height: 1.1em;
}
h3 {
font-size: 1em;
margin-top: 0;
margin-bottom: 0;
}
dl {
column-count: 2;
}
dt {
text-decoration: underline;
}
dl {
text-indent: 0;
}
dd {
margin-left: 0;
display: inline-block;
}
p {
margin: 0;
}
p + p {
margin-top: 1em;
}
ul {
padding-left: 0;
}
select {
font-size: 1em;
}
a {
text-decoration-style: wavy;
text-decoration-skip-ink: none;
text-decoration-color: white;
}
sup {
line-height: 0;
}
/* --- slider --- */
div#sliders{
position: fixed;
width: 500px;
top:60px;
left: 61%;
bottom: 1em;
}
div#slider{
float: left;
margin:0.5em 1em 1em 0.5em;
}
z-index: 1;
position: absolute;
top:0;
left:0;
width : 100%;
height : 400px;
background: transparent;
}
#slider2 {
position: absolute;
top:0;
left:0;
width : 100%;
height : 400px;
background: transparent;
}
#warped {
font-weight: bold;
position: absolute;
top: 220px;
left: -40px;
height: 220px;
}
div#relearn-infos {
position: fixed;
bottom: 2em;
left: 65%;
margin-top: 2em;
}
div#relearn-infos ul {
margin: 0;
}
/* --- control points ---*/
#curve {
width: 55%;
padding : 1em 2em;
height: 100vh;
overflow: auto;
padding-bottom: 4em;
}
#curve::-webkit-scrollbar {
width: 6px;
border-radius: 5px;
}
#curve::-webkit-scrollbar-track {
background-color: black;
}
#curve::-webkit-scrollbar-thumb {
-webkit-box-shadow: inset 0 0 2px rgba(0,0,0,0.3);
background-color: lightgray;
border-radius: 5px;
}
.details {
display: none;
margin-top: 1em;
}
div.controlpoint{
max-width: 800px;
margin: 1em 0;
margin-top: 2em;
padding-bottom: 2em;
border-top: 1px solid black;
border-bottom: 1px solid black;
}
div.controlpoint + div.controlpoint {
border-top: 0;
}
div.controlpoint ul {
column-count: 2;
}
dl:not(.summary) dt,
dl:not(.summary) dd {
display: inline;
}
dl:not(.summary) dd:before {
content: " ";
}
dl:not(.summary) dd + dt:before {
content: '';
display: block;
}
.practical-infos {
display: flex;
flex-wrap: wrap;
margin-top: 1em;
}
.programme {
margin-bottom: 1em;
width: 100%;
}
.programme div.flex {
float: left;
width: 50%;
}
.programme p {
width: 50%;
float: left;
box-sizing: border-box;
}
.programme p {
padding-right: 0.5em;
}
.programme p + p {
padding-right: 0em;
padding-left: 0.5em;
}
.programme div.flex p {
width: 100%;
float: none;
}
div.controlpoint .programme ul {
column-count: 1;
padding: 0 1em;
}
.participation,
.hosting {
flex-basis: 50%;
box-sizing: border-box;
}
.participation {
padding-right: 0.5em;
}
.hosting {
padding-left: 0.5em;
}
/*--- ROTTERDAM ---*/
#rotterdam{
color:#0054ff;
}
#rotterdam li{
list-style: none;
text-indent: -23px;
margin-left: 2em;
}
/*--- BRUSSELS ---*/
#brussels {
color: teal;
}
/*--- MOBILE ---*/
@media only screen
and (max-width : 1024px) {
:root {
font-size: 13px;
line-height: 1.4em;
}
div#sliders {
top: 0;
left: 0;
right: 0;
width: initial;
height: 150px;
background-color: #ffdbdb;
}
div#slider {
top: -100px;
left: -40px;
transform: scale(0.5);
}
#warped {
top: -50px;
left: -225px;
transform: scale(0.5);
}
div#relearn-infos {
position: static;
}
#curve {
padding-top: 150px;
width: 100%;
box-sizing: border-box;
}
.programme div.flex,
.programme p {
width: 100%;
}
.programme ul {
margin-top: 0;
}
.participation,
.hosting {
flex-basis: 100%;
padding: 0;
}
.hosting {
margin-top: 1em;
}
}

61
css/warped.css Normal file
View File

@ -0,0 +1,61 @@
#warped {position: relative; display: block; width:817.9999694824219px;
height:655.0034713745117px;}
#warped>span[class^=w]:nth-of-type(n+0){display:block; position:absolute;
-moz-transform-origin:50% 100%; -webkit-transform-origin:50% 100%; -o-transform-origin:50%
100%; -ms-transform-origin:50% 100%; transform-origin:50% 100%; }
#warped span{font-family:'AvaraBold';font-size:46px;font-weight:regular;font-style:normal;
line-height:0.95; white-space:pre; overflow:visible; padding:0px;}
#warped .w0 {-moz-transform: rotate(-6.29rad);-webkit-transform: rotate(-6.29rad);-o-transform:
rotate(-6.29rad);-ms-transform: rotate(-6.29rad); transform: rotate(-6.29rad);
width: 31px; height: 43px; left: 129.24px; top: 58.02px;}
#warped .w1 {-moz-transform: rotate(-6.23rad);-webkit-transform: rotate(-6.23rad);-o-transform:
rotate(-6.23rad);-ms-transform: rotate(-6.23rad); transform: rotate(-6.23rad);
width: 20px; height: 43px; left: 178.6px; top: 59.06px;}
#warped .w2 {-moz-transform: rotate(-6.01rad);-webkit-transform: rotate(-6.01rad);-o-transform:
rotate(-6.01rad);-ms-transform: rotate(-6.01rad); transform: rotate(-6.01rad);
width: 13px; height: 43px; left: 217.28px; top: 64.23px;}
#warped .w3 {-moz-transform: rotate(-5.53rad);-webkit-transform: rotate(-5.53rad);-o-transform:
rotate(-5.53rad);-ms-transform: rotate(-5.53rad); transform: rotate(-5.53rad);
width: 20px; height: 43px; left: 243.79px; top: 82.1px;}
#warped .w4 {-moz-transform: rotate(-5.48rad);-webkit-transform: rotate(-5.48rad);-o-transform:
rotate(-5.48rad);-ms-transform: rotate(-5.48rad); transform: rotate(-5.48rad);
width: 20px; height: 43px; left: 270.77px; top: 110.44px;}
#warped .w5 {-moz-transform: rotate(-5.56rad);-webkit-transform: rotate(-5.56rad);-o-transform:
rotate(-5.56rad);-ms-transform: rotate(-5.56rad); transform: rotate(-5.56rad);
width: 16px; height: 43px; left: 299.48px; top: 136.24px;}
#warped .w6 {-moz-transform: rotate(-5.94rad);-webkit-transform: rotate(-5.94rad);-o-transform:
rotate(-5.94rad);-ms-transform: rotate(-5.94rad); transform: rotate(-5.94rad);
width: 23px; height: 43px; left: 328.82px; top: 158.28px;}
#warped .w7 {-moz-transform: rotate(-6.18rad);-webkit-transform: rotate(-6.18rad);-o-transform:
rotate(-6.18rad);-ms-transform: rotate(-6.18rad); transform: rotate(-6.18rad);
width: 11px; height: 43px; left: 369.77px; top: 165.89px;}
#warped .w8 {-moz-transform: rotate(-6.34rad);-webkit-transform: rotate(-6.34rad);-o-transform:
rotate(-6.34rad);-ms-transform: rotate(-6.34rad); transform: rotate(-6.34rad);
width: 11px; height: 43px; left: 399.6px; top: 166.65px;}
#warped .w9 {-moz-transform: rotate(-6.54rad);-webkit-transform: rotate(-6.54rad);-o-transform:
rotate(-6.54rad);-ms-transform: rotate(-6.54rad); transform: rotate(-6.54rad);
width: 23px; height: 43px; left: 429.17px; top: 161.36px;}
#warped .w10 {-moz-transform: rotate(-6.8rad);-webkit-transform: rotate(-6.8rad);-o-transform:
rotate(-6.8rad);-ms-transform: rotate(-6.8rad); transform: rotate(-6.8rad);
width: 23px; height: 43px; left: 468.58px; top: 145.76px;}
#warped .w11 {-moz-transform: rotate(-7.1rad);-webkit-transform: rotate(-7.1rad);-o-transform:
rotate(-7.1rad);-ms-transform: rotate(-7.1rad); transform: rotate(-7.1rad);
width: 23px; height: 43px; left: 501.17px; top: 120.42px;}
#warped .w12 {-moz-transform: rotate(-7.39rad);-webkit-transform: rotate(-7.39rad);-o-transform:
rotate(-7.39rad);-ms-transform: rotate(-7.39rad); transform: rotate(-7.39rad);
width: 23px; height: 43px; left: 525.54px; top: 85.72px;}

118
d3-example.html Normal file
View File

@ -0,0 +1,118 @@
<!DOCTYPE html>
<html>
<!-- source: https://bl.ocks.org/mbostock/8027637 -->
<head>
<meta charset="utf-8">
<style>
path {
fill: none;
stroke: #000;
stroke-width: 8px;
}
line {
fill: none;
stroke: red;
stroke-width: 0;
}
circle {
fill: red;
}
rect {
fill: none;
cursor: crosshair;
pointer-events: all;
}
</style>
<body>
<script src="https://d3js.org/d3.v3.min.js"></script>
<script>
var points = [[600,600],[600, 400],[300,300], [400, 600]];
var width = 960,
height = 500;
var line = d3.svg.line()
.interpolate("cardinal");
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
var path = svg.append("path")
.datum(points)
.attr("d", line);
var line = svg.append("line");
var circle = svg.append("circle")
.attr("cx", -10)
.attr("cy", -10)
.attr("r", 60);
var isDown = false;
svg.append("rect")
.attr("width", width)
.attr("height", height)
.on("mousedown", function(){
svg.on("mousemove", mousemoved);
})
.on("mouseup")
function mousemoved() {
var m = d3.mouse(this),
p = closestPoint(path.node(), m);
line.attr("x1", p[0]).attr("y1", p[1]).attr("x2", m[0]).attr("y2", m[1]);
circle.attr("cx", p[0]).attr("cy", p[1]);
}
function closestPoint(pathNode, point) {
var pathLength = pathNode.getTotalLength(),
precision = 8,
best,
bestLength,
bestDistance = Infinity;
// linear scan for coarse approximation
for (var scan, scanLength = 0, scanDistance; scanLength <= pathLength; scanLength += precision) {
if ((scanDistance = distance2(scan = pathNode.getPointAtLength(scanLength))) < bestDistance) {
best = scan, bestLength = scanLength, bestDistance = scanDistance;
}
}
// binary search for precise estimate
precision /= 2;
while (precision > 0.5) {
var before,
after,
beforeLength,
afterLength,
beforeDistance,
afterDistance;
if ((beforeLength = bestLength - precision) >= 0 && (beforeDistance = distance2(before = pathNode.getPointAtLength(beforeLength))) < bestDistance) {
best = before, bestLength = beforeLength, bestDistance = beforeDistance;
} else if ((afterLength = bestLength + precision) <= pathLength && (afterDistance = distance2(after = pathNode.getPointAtLength(afterLength))) < bestDistance) {
best = after, bestLength = afterLength, bestDistance = afterDistance;
} else {
precision /= 2;
}
}
best = [best.x, best.y];
best.distance = Math.sqrt(bestDistance);
return best;
function distance2(p) {
var dx = p.x - point[0],
dy = p.y - point[1];
return dx * dx + dy * dy;
}
}
</script>
<html>

View File

@ -1,57 +1,285 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src="js/jquery.pathslider.js"></script>
<link rel="stylesheet" type="text/css" href="css/stylesheet.css">
<link rel="stylesheet" type="text/css" href="css/pathslider.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no">
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
<script type="text/javascript" src="js/jquery.pathslider.js"></script>
<link rel="stylesheet" media="screen" href="https://fontlibrary.org/face/avara" type="text/css"/>
<link rel="stylesheet" type="text/css" href="css/pathslider.css">
<link rel="stylesheet" type="text/css" href="css/warped.css">
<link rel="stylesheet" type="text/css" href="css/stylesheet.css">
</head>
<body>
<!-- The curved slider -->
<div id="slider"></div> <div id="slider2"></div>
<style>
#slider {
position: absolute;
top:0;
left:0;
width : 100%;
height : 400px;
background: transparent;
}
#slider2 {
position: absolute;
top:0;
left:0;
width : 100%;
height : 400px;
background: transparent;
}
</style>
<script>
jQuery(function($){
$("#slider").pathslider({
points : [50,10,-150,0,150,200,300,100],
value : 49,
rotateGrip : true,
tolerance : 3,
range : 30,
curve : { width:4, color:"#333", cap:"round" }
});
$("#slider2").pathslider({
points : [490,300,-150,0,-200,-200,300,100],
value : 49,
rotateGrip : true,
tolerance : 3,
range : 30,
curve : { width:4, color:"#333", cap:"round" }
});
});
</script>
<!-- The curved slider -->
<div id="sliders">
<div id='warped'>
<span class='w0'>R</span><span class='w1'>e</span><span class='w2'>l</span><span class='w3'>e</span><span class='w4'>a</span><span class='w5'>r</span><span class='w6'>n</span><span class='w7'> </span><span class='w8'> </span><span class='w9'>2</span><span class='w10'>0</span><span class='w11'>1</span><span class='w12'>9</span>
</div>
<div id="slider"></div>
<!--<div id="slider2"></div>-->
</div>
<div id="curve">
<h1>Relearn curved</h1>
</div>
<div id="curve">
<h1>Relearn
<select onchange="window.location.href=this.value" style="display: inline-block;">
<option value="http://relearn.be/2019/" selected="selected">2019</option>
<option value="http://relearn.be/2017/">2017</option>
<option value="http://relearn.be/2016/">2016</option>
<option value="http://relearn.be/2015/">2015</option>
<option value="http://relearn.be/2014/">2014</option>
<option value="http://relearn.be/2013/">2013</option>
</select>
curved</h1>
<p>
Relearn is a collective learning experiment with as many teachers as it has participants. It is motivated by the possibility to displace parameters of/for research, studying and learning. <a href='#' class='more'>Read more about Relearn.</a>
</p>
<div class='details'>
<p>
Relearn is a summerschool which welcomes persons, artists, students, teachers from all backgrounds and disciplines. Participants will gather to learn from and teach to each other, beyond the traditional paradigms of education.
Relearn researches convivial, experimental and deviant methods and means in the fields of design, computing and education, challenging the normal roles and separations in them (teacher/student, developer/user, art/life…).
</p>
<p>
Free, Libre and Open Source Software plays a fundamental role at Relearn, as it facilitates a different approach to the tools we commonly use in our practices and lives. For instance, it can allow us to understand the influence that tools themselves exert on the way they are used, or the different social relations and economies that are formed between who creates and uses them. Such a questioning approach to technology feels urgent, in a time in which more and more social, political and personal issues are addressed by solely technological means.
</p>
</div>
<hr>
<p>
This summer, Relearn is back in the form of a curve, transversing multiple times and spaces. Curl yourselves this summer from, to and between Rotterdam, Brussels and Paris! <a href='#' class='more'>Read more about the curve.</a>
</p>
<div class='details'>
<p>Relearn 2019 is a curve, transversing multiple times and spaces.</p>
<p>
These would be independently organized sessions based on the urgencies
and affordances of each of the participating spaces. However, there
would still be a common thread throughout the series, perhaps in the
form of a transversal “reroam” but also in the form of a roaming server
that is passed on to each subsequent event.
It is possible to attend all sessions but not required, nor the goal, it
is really the intention to have self-standing events which do not depend
people joining a succession of events but still share commonalities.
</p>
</div>
<div id="rotterdam" class="controlpoint">
<h2>·Rotterdam</h2>
<dl class='summary'>
<dt>Date</dt> <dd>7<sup>th</sup>9<sup>th</sup> June 2019</dd>
<dt>Location</dt> <dd>Varia - Gouwstraat 3, Rotterdam, The Netherlands</dd>
<dt>Initiator</dt> <dd><a href="https://varia.zone/en/" target='_blank'>Varia</a></dd>
<dt>Contact</dt> <dd><a href="mailto:&#105;&#110;&#102;&#111;&#064;&#118;&#097;&#114;&#105;&#097;&#046;&#122;&#111;&#110;&#101;">&#105;&#110;&#102;&#111;&#064;&#118;&#097;&#114;&#105;&#097;&#046;&#122;&#111;&#110;&#101;</a></dd>
</dl>
<hr />
<p>For the Rotterdam control point on the Relearn curve, we propose to together attend to a <strong>subject zone</strong> (<strong>*</strong>) where different digital network practices intersect. This subject zone can morph into multiple directions throughout the session. Our specific interest is in how <strong>publishing formats</strong> (<strong>**</strong>) operate with/on/through this zone.</p>
<p><strong>*</strong> There are many questions in the air when we start to speak about digital infrastructures, hosters, servers, services, networks and their technical realities. Instead of picking one and diving deeper, we thought it would be more interesting to present a range and explore different vocabularies, protocols, technologies, infrastructures. We invite you to join Relearn to stretch this zone, starting from or moving towards:</p>
<ul>
<li>&nbsp;&nbsp;digital interdependencies</li>
<li>&nbsp;&nbsp;affective infrastructures</li>
<li>&nbsp;&nbsp;homebrew networks</li>
<li>&nbsp;&nbsp;networked entanglements</li>
<li>&nbsp;&nbsp;feminist servers</li>
<li>&nbsp;&nbsp;federated networks</li>
<li>&nbsp;&nbsp;and-and-networks</li>
<li>&nbsp;&nbsp;digital autonomy</li>
<li>&nbsp;&nbsp;transitional infrastructures</li>
<li>&nbsp;&nbsp;digital selves-organisations</li>
<li>&nbsp;&nbsp;so-and-sovereignty networks</li>
<li>&nbsp;&nbsp;out-of-the-cloud thinking</li>
<li>&nbsp;&nbsp;</li>
</ul>
<p><strong>**</strong> Were curious about learning through publishing formats. The different publishing formats serve as an invitation to embed ourselves within the subject zone of digital networks. How can these formats be our morphable lenses, that we use to relearn digital networks? Starting from or moving towards:</p>
<ul>
<li>&nbsp;&nbsp;multiple readers</li>
<li>&nbsp;&nbsp;cross-readings created through algorithms</li>
<li>&nbsp;&nbsp;logbooks</li>
<li>&nbsp;&nbsp;syllabi</li>
<li>&nbsp;&nbsp;documentation</li>
<li>&nbsp;&nbsp;annotations</li>
<li>&nbsp;&nbsp;cookbooks</li>
<li>&nbsp;&nbsp;tutorials</li>
<li>&nbsp;&nbsp;README</li>
<li>&nbsp;&nbsp;bug reports</li>
<li>&nbsp;&nbsp;link dumps</li>
<li>&nbsp;&nbsp;scores</li>
<li>&nbsp;&nbsp;</li>
</ul>
<p>Many sub-trajectories can emerge from here during the days, without the need of taking the same path or agreeing about vocabularies or geometries altogether.</p>
<hr />
<div class='practical-infos'>
<div class='programme'>
<h3>Programme</h3>
<p><u>Friday 7<sup>th</sup> June</u><br>
20:0022:00<br>
Relearn public evening program: embed yourself into Relearn</p>
<p><u>SaturdaySunday, 89<sup>th</sup> June</u><br>
10:0018:00<br>
Relearn sub-zone-trajectories</p>
</div>
<div class='participation'>
<h3>Participation</h3>
<p>If you would like to join this Relearn session, please send an email to <a href="mailto:&#105;&#110;&#102;&#111;&#064;&#118;&#097;&#114;&#105;&#097;&#046;&#122;&#111;&#110;&#101;">&#105;&#110;&#102;&#111;&#064;&#118;&#097;&#114;&#105;&#097;&#046;&#122;&#111;&#110;&#101;</a> with a short motivation of your interest. We will reply to subscriptions on a regular basis, up to the <strong>26<sup>th</sup> of May</strong>.</p>
<p>Our <em>capacities</em> allow us to have a group of 30 relearners. Our preference goes out to people that can join the whole session (Friday evening, Saturday and Sunday).
</p>
<p>If you would like to join us only on the Friday evening, there is no need to subscribe, just come over! :)</p>
</div>
<div class='hosting'>
<h3>Hosting</h3>
<p>
We will take care of a <em>daily vegetarian lunch</em> (please let us know about allergies or other dietary preferences). Following a tradition from previous years, we will arrange a <em>hosting network</em> in the city and find a place to stay for everyone. Please mention in the email if you need to be hosted or could host one or more relearners in your house.</p>
</div>
</div>
</div> <!-- END OF ROTTERDAM CONTROL POINT -->
<div id="brussels" class="controlpoint">
<h2>·Brussels</h2>
<dl class='summary'>
<dt>Date</dt> <dd>21<sup>st</sup>22<sup>nd</sup> June 2019</dd>
<dt>Location</dt> <dd>Hacktiris - Rue Paul Devauxstraat 5, Brussels, Belgium</dd>
<dt>Initiator</dt> <dd><a href="http://osp.kitchen/" target='_blank'>OSP</a></dd>
<dt>Contact</dt> <dd><a href="mailto:&#109;&#105;&#097;&#109;&#064;&#111;&#115;&#112;&#046;&#107;&#105;&#116;&#099;&#104;&#101;&#110;">&#109;&#105;&#097;&#109;&#064;&#111;&#115;&#112;&#046;&#107;&#105;&#116;&#099;&#104;&#101;&#110;</a></dd>
</dl>
<hr />
<p>
Exploring computed layout tools.
</p>
<p>
Since 2013, several initiatives have been experimenting with making printed publications using HTML/CSS/Javascript with the help of CSS regions. This feature is necessary to produce multi-paged publications and since its removal from Blink (2014) and in WebKit (2017), users are trapped with old versions of WebKit. Sticking to older version is still viable today but for how long?
</p>
<p>
This urgency leads us to a quite pragmatic but necessary worksession which will therefore focus on exploring other tools for making printed publications, especially computed layout tools (making layout with code). We already spotted three tools we would like to explore, but anyone is welcome to propose and experiment with other tools:
</p>
<dl>
<dt><a href='https://xxyxyz.org/' target='_blank'>Flat</a></dt><dd>A Python library made to draw graphics but also designed to produce multi-paged PDFs.</dd>
<dt><a href='http://sile-typesetter.org/' target='_blank'>Sile</a></dt><dd>A contemporary rewriting of the TeX mastodon.</dd>
<dt><a href='https://www.pagedmedia.org/paged-js/' target='_blank'>paged.js</a></dt><dd>A Javascript polyfill of CSS official specs for printed documents.</dd>
</dl>
<hr />
<div class='practical-infos'>
<div class='programme'>
<h3>Programme</h3>
<div class='flex'>
<p><u>Friday 21<sup>st</sup> June</u><br>
10:0018:00
</p>
<ul>
<li>Short introduction of tools</li>
<li>Choose your tool and have fun with it!</li>
</ul>
</div>
<div class='flex'>
<p><u>Saturday 22<sup>nd</sup> June</u><br>
10:0018:00</p>
<ul>
<li>Continuation of the exploration</li>
<li>Show/tell/criticize</li>
</ul>
</div>
</div>
<div class='participation'>
<h3>Participation</h3>
<p>Participation is free of charge. If you would like to join this Relearn session, please send an email to <a href="mailto:&#109;&#105;&#097;&#109;&#064;&#111;&#115;&#112;&#046;&#107;&#105;&#116;&#099;&#104;&#101;&#110;">&#109;&#105;&#097;&#109;&#064;&#111;&#115;&#112;&#046;&#107;&#105;&#116;&#099;&#104;&#101;&#110;</a> with a short motivation of your interest. We will reply to subscriptions on a regular basis, up to the <strong>10<sup>th</sup> of June</strong>.</p>
<p>Our <em>capacities</em> allow us to have a group of 12 relearners. Our preference goes out to people that can join the whole session (Friday, Saturday).
</p>
</div>
<div class='hosting'>
<h3>Hosting</h3>
<p>
On Friday, there's a vegetarian canteen in the working space or many eating choices outside (the location is in the heart of Brussels). On Saturday we will take care of a <em>vegetarian lunch</em> (please let us know about allergies or other dietary preferences). Following a tradition from previous years, we will arrange a <em>hosting network</em> in the city and find a place to stay for everyone. Please mention in the email if you need to be hosted or could host one or more relearners in your house.
</p>
</div>
</div>
</div> <!-- END BRUSSELS CONTROL POINT -->
<div id="relearn-infos">
<h3>Resources &amp; contact</h3>
<ul>
<li><a href="https://tumulte.domainepublic.net/cgi-bin/mailman/listinfo/relearn" target='_blank'>Subscribe to the Relearn mailinglist </a></li>
<li><a href="https://webchat.freenode.net/" target='_blank'>IRC channel: #relearn on Freenode</a></li>
<li><a href="https://gitlab.com/relearn" target='_blank'>Relearn gitlab repository </a></li>
<li><a href="https://gallery.constantvzw.org/index.php/search?album=1&amp;q=relearn" target='_blank'>Photographs of previous Relearn editions</a></li>
</ul>
</div>
</div> <!-- END CURVE -->
<script>
jQuery(function($){
$("#slider").pathslider({
points : [250,50,-150,100,-50,-400,250,250],
value : 0,
rotateGrip : true,
tolerance : 3,
range : 30,
curve : { width:4, color:"#333", cap:"round" }
});
$("#slider2").pathslider({
points : [490,300,-150,0,-200,-200,300,100],
value : 49,
rotateGrip : true,
tolerance : 3,
range : 30,
curve : { width:4, color:"#333", cap:"round" }
});
});
// scroll
$(document).ready(function() {
$('#slider').bind('slide.pathslider', function(event, slider){
var scrollPos = slider.percent * ( $('#curve')[0].scrollHeight - $(window).height() ) / 100
//$('#curve').scrollTop(scrollPos);
$('#curve').stop().animate({scrollTop: scrollPos}, 200);
});
$('#curve').scroll(function() {
curve = document.querySelectorAll('#curve')[0]
offset = curve.scrollTop / (curve.scrollHeight - curve.clientHeight) * 100;
$('#slider').getpathslider().setSlider(offset);
});
$('#slider2').bind('slide.pathslider', function(event, slider){
var scrollPos = slider.percent * ( $('#curve')[0].scrollHeight - $(window).height() ) / 100
$('#curve').stop().animate({scrollTop: scrollPos}, 200);
});
$('a.more').click(function(){
$(this).parent().next().toggle();
});
});
</script>
</body>
</html>