summaryrefslogblamecommitdiffhomepage
path: root/resources/pug/finals/conferences.pug
blob: 1ff9566b628b29aed77fb6b15658479ce35f8a12 (plain) (tree)
1
2
3
4

                   
              
















                                                
                                                            
                 
                                                 
                 
                                                                  
                 





                                                      

                                                         
 



                                                                                                                                                                                
 
                  
                                                                                                                                                                            
                                                                                                                                                                                                                                                       
 
                  
                                                                                                                                                                                                                                                                                     
 
                  

                                                                                                                                                                                                                                                                               
 
                  
                                                                                                 
 


















































                                                                                                               
                                       
                                                                
                                                                                                              
                                                                                                                     
                                                                                                                 

                                                                                                       


















                                                                        
                                                                                  





















                                                                                                                                       

                                                                                                                                                                                   















                                                                                                             
                                                                                                                                
                                                             
                                                                                                                                
                                                             
                                                                                                                                 
                                                             
                                                                                                                                 














                                                                                                                                                      
                                                                                                                                                 
                                                                                                                                                                                                                                                                                                           

                                                                                                                                                  

                                                                                                                                                                                                                                                               
                                                                                                                                                                


                                                                                                                                                                     
                                                                                                                                                                  
                                                                                                                                                
                                                                                                                                                                                        
                                                                                                                                      
 
                                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                              
                                                                                                                                                                                                                                 
 
                                                                                                                               
                          
extends /layout.pug

block extra_head
	style.
		table.conferences tr.year {
			border-color: black;
			border-style: solid;
			border-width: 1px 0 0 0;
		}

		table.conferences tr.spacer {
			height: .8ex;
		}

		table.conferences tr.year td {
			padding-bottom: .4ex;
		}

		table.conferences tr.entry {
			color: gray;
		}

		table.conferences td, table.conferences th {
			white-space: nowrap;
		}

		table.conferences td:last-child {
			white-space: normal;
		}

		table.conferences i.fas, table.conferences i.fab {
			margin-right: .2ex;
		}

block titleContainer

block content
	-
		const BIKE_CARBON_FOOTPRINT_KM = 30;
		const DOMESTIC_FLIGHT_THRESHOLD = 500;

	h1
		a(href='/') #[i.fas.fa-arrow-circle-left]
		|  Visited conferences

	div.alert.alert-info
		p.
			This page gives an overview of the conferences, workshops, and summer schools I have visited together with the #[strong travel carbon footprint].
			The #[strong accomodation] I used is also listed, but not included in the carbon footprint.
			The calculation is based on averages from #[a.alert-link(href='https://ourworldindata.org/travel-carbon-footprint', target='_blank') Our World in Data].

		p.
			For #[strong biking], I counted 30 g CO#[sub 2] / km as a rough estimate based on my diet.
			#[strong Flights] shorter than 500km are counted as 'domestic' (255 g / km), otherwise they are counted as short/long-haul (averaged on 153 g / km).
			#[strong Trains] in the Netherlands probably emit less than the estimate from Our World in Data because #[a.alert-link(href='https://www.ns.nl/over-ns/duurzaamheid/fossielvrij', target='_blank') the NS runs on wind energy].

		p.
			The carbon footprint per capita of the Netherlands was #[strong 9.66] t in 2017 (26,448 g / day), according to #[a.alert-link(href='https://ourworldindata.org/co2/country/netherlands?country=NLD~DEU~DNK~SWE~FRA~BEL', target='_blank') Our World in Data].
			The global average was #[strong 4.79] t in 2016 (13,114 g / day), according to #[a.alert-link(href='https://www.worldometers.info/co2-emissions/co2-emissions-per-capita/', target='_blank') Worldometer].

		p.
			Transport, aviation, and shipping #[a.alert-link(href='https://ourworldindata.org/grapher/ghg-emissions-by-sector?time=latest&country=~NLD', target='_blank') make up 34% of emissions in the Netherlands].
			For the average Dutch person this is #[strong 3.28] t per year or #[strong 8,992] g per day (but note that this includes more than personal travel).
			Worldwide, we have #[a.alert-link(href='https://ourworldindata.org/emissions-by-sector#transport-16-2', target='_blank') 16.2% of emissions from transport], which makes this figure #[strong 0.78] t per year or #[strong 2,125] g per day per capita.

		p.
			Please let me know if you think some of the calculations can be improved!

	-
		// Accepts "Y-M-D to [[Y-]M-]D", i.e. you can leave out repeated parts in
		// the second date. "2019-7-8 to 10" means "2019-7-8 to 2019-7-10".
		// You can also give only one date.
		function parse_date_range(s) {
			s = s.split(' to ').map(d => d.split('-'));

			let from = {year: s[0][0], month: s[0][1], day: s[0][2]};

			// If only day or month-day is given in the second date, add year-month
			// or year from the first date.
			let to;
			if (s.length == 1)
				to = from;
			else if (s[1].length == 1)
				to = {year: from.year, month: from.month, day: s[1][0]};
			else if (s[1].length == 2)
				to = {year: from.year, month: s[1][0], day: s[1][1]};
			else
				to = {year: s[1][0], month: s[1][1], day: s[1][2]};

			return {
				from: new Date(from.year, from.month-1, from.day),
				to: new Date(to.year, to.month-1, to.day)
			};
		}

		function nr_of_days(conf) {
			return 1 + (conf.to - conf.from) / 24 / 3600 / 1000;
		}

		// Computes footprint in grams CO2, according to
		// https://ourworldindata.org/travel-carbon-footprint.
		// See the explanation in the paragraph at the top of the page.
		function compute_carbon_footprint(conf) {
			let footprint = 0;

			if (conf.bike)
				footprint += BIKE_CARBON_FOOTPRINT_KM * conf.bike;
			if (conf.ferry)
				footprint += 19 * conf.ferry;
			if (conf.plane)
				footprint += (conf.plane < DOMESTIC_FLIGHT_THRESHOLD ? 255 : 153) * conf.plane;
			if (conf.train)
				footprint += 41 * conf.train;

			return footprint * (conf.multiplier || 2);
		}

		function year_summary(conferences, year) {
			conferences = conferences.filter(c => c.from.getFullYear() == year);

			let summary = {
				conferences: conferences.length,
				total_days: Math.round(conferences.map(nr_of_days).reduce((x,y) => x + y, 0)),
				total_footprint: conferences.map(compute_carbon_footprint).reduce((x,y) => x + y, 0),
			};
			summary.total_footprint_percentage = Math.round(100 * summary.total_footprint / 3284400);
			summary.total_footprint_per_day = summary.total_footprint / summary.total_days;

			return summary;
		}

		let conferences = [];

	mixin conf(dates, location, distance, shorttitle, title)
		-
			let conf = parse_date_range(dates);
			conf.location = location;
			conf.distance = distance;
			conf.shorttitle = shorttitle;
			conf.title = title || shorttitle;

			Object.assign(conf, attributes);

			conf.footprint = compute_carbon_footprint(conf);

			conferences.push(conf);

	mixin listconferences()
		-
			conferences.sort((x,y) => y.from - x.from || y.to - x.to);
			let last_year = null;

		table.conferences
			thead
				tr
					th Year
					th Month
					th Location
					th Travel modes
					th(colspan=2) Carbon footprint (g CO#[sub 2])
					th Accomodation
					th Title

			- for (const conf of conferences)
				if last_year != conf.from.getFullYear()
					- last_year = conf.from.getFullYear();
					- let summary = year_summary(conferences, last_year);
					tr.spacer
					tr.year
						td= conf.from.getFullYear()
						td(colspan=7).
							#[strong= summary.conferences] conference#{summary.conferences == 1 ? '' : 's'}
							over #[strong= summary.total_days] day#{summary.total_days == 1 ? '' : 's'},
							for a total of #[strong= (summary.total_footprint).toLocaleString('en')] g CO#[sub 2]
							(#{summary.total_footprint_percentage.toLocaleString('en')}% of the yearly Dutch average),
							averaging #[strong= (summary.total_footprint_per_day).toLocaleString('en', {maximumFractionDigits: 0})] g CO#[sub 2] / day.

				tr.entry
					td

					td(title!=conf.from.toDateString() + ' to ' + conf.to.toDateString())
						= conf.from.toLocaleString('default', {month: 'short'})
						if conf.from.getMonth() != conf.to.getMonth()
							| –
							= conf.to.toLocaleString('default', {month: 'short'})

					td
						= conf.location
						if conf.distance
							= ' (' + (conf.distance).toLocaleString('en') + 'km)'

					td
						if conf.bike
							i.fas.fa-bicycle(alt='Bike', title!='Bike: ' + conf.bike + 'km one-way')
						if conf.ferry
							i.fas.fa-ship(alt='Ferry', title!='Ferry: ' + conf.ferry + 'km one-way')
						if conf.train
							i.fas.fa-train(alt='Train', title!='Train: ' + conf.train + 'km one-way')
						if conf.plane
							i.fas.fa-plane(alt='Plane', title!='Plane: ' + conf.plane + 'km one-way')

					td.text-right= (conf.footprint).toLocaleString('en')

					td.text-right= (conf.footprint / nr_of_days(conf)).toLocaleString('en', {maximumFractionDigits: 0}) + ' / day'

					td
						if conf.airbnb
							i.fab.fa-airbnb(alt='Airbnb', title='Airbnb')
						if conf.hotel
							i.fas.fa-hotel(alt='Hotel', title='Hotel')
						if conf.friendstay
							i.fas.fa-home(alt='With a friend', title='With a friend')

					td
						a(href!=conf.url, target='_blank', title!=conf.title)!= conf.shorttitle

	+conf('2017-1-6', 'Nijmegen', 45, 'NL-FP Day', 'Dutch Functional Programming Day')(train=40, url='https://clean.cs.ru.nl/NL-FP_dag_2017')
	+conf('2017-7-10 to 21', 'Leiden', 61, 'Summer School in Languages and Linguistics', 'Leiden Summer School in Languages and Linguistics')(train=75, multiplier=20, url='https://www.universiteitleiden.nl/en/education/study-programmes/summer-schools/summer-school-in-languages-and-linguistics')

	+conf('2018-1-5', 'Apeldoorn', 41, 'NL-FP Day', 'Dutch Functional Programming Day')(train=61, url='https://clean.cs.ru.nl/NL-FP_dag_2018')
	+conf('2018-1-26', 'Nijmegen', 0, 'CLIN', 'Computational Linguistics in the Netherlands')(url='https://clin28.cls.ru.nl/')

	+conf('2019-7-8 to 10', 'Cambridge', 393, 'BHLAP', 'Biblical & Rabbinic Hebrew: New Perspectives in Philology & Linguistics')(bike=305, ferry=200, airbnb, url='https://www.ames.cam.ac.uk/whats-on/events-archive/biblical-rabinic-hebrew-conference')
	+conf('2019-10-7 to 8', 'Utrecht', 59, 'CLSoR', 'Workshop on Cross-Linguistic Semantics of Reciprocals')(train=72, friendstay, url='https://rocky.sites.uu.nl/workshop-on-cross-linguistic-semantics-of-reciprocals/')

	+conf('2020-1-10', 'Amsterdam', 88, 'NL-FP Day', 'Dutch Functional Programming Day')(train=100, url='https://sites.google.com/view/nl-fp-day-2020/home')
	+conf('2020-3-31', 'Online', 0, '#SemiticsTwitterCoronaConference')(url='https://www.academia.edu/42297049/')
	+conf('2020-10-11', 'Online', 0, 'Syntax Workshop')(url='https://sites.google.com/view/syntaxworkshop')
	+conf('2020-11-29 to 12-11', 'Online', 0, 'SBL Annual', 'SBL Annual Meeting')(url='https://www.sbl-site.org/meetings/Congresses_Abstracts.aspx?MeetingId=37')

	+conf('2021-10-25 to 11-22', 'Online', 0, 'ETT', 'Emerging Topics in Typology')(url='https://www2.helsinki.fi/en/conferences/emerging-topics-in-typology')

	+conf('2022-01-12 to 14', 'Online', 0, 'AIL2', 'Agency and Intentions in Language')(url='https://ail-workshop.github.io/AIL2-Workshop/')
	+conf('2022-08-24 to 27', 'Bucharest', 1700, 'SLE2022', 'Societas Linguistica Europaea')(train=107, plane=1800, airbnb, url='https://societaslinguistica.eu/sle2022/')
	+conf('2022-11-19 to 22', 'Denver', 7840, 'SBL2022', 'Society of Biblical Literature')(train=107, plane=7748, hotel, url='https://www.sbl-site.org/meetings/AnnualMeeting.aspx')
	+conf('2022-12-8 to 9', 'Tilburg', 62, 'CogLing Days 9', 'CogLing Days 9')(train=68, multiplier=4, url='https://benecla.com/')

	+conf('2023-7-10 to 21', 'Leiden', 100, 'Summer School in Languages and Linguistics', 'Leiden Summer School in Languages and Linguistics')(train=115, multiplier=20, url='https://www.universiteitleiden.nl/en/education/study-programmes/summer-schools/summer-school-in-languages-and-linguistics')
	+conf('2023-10-5 to 6', 'Brussels', 174, 'BCGL16', 'Brussels Conference on Generative Linguistics 16')(train=174, airbnb, url='https://www.crissp.be/bcgl-16-the-morphosyntax-of-speaker-and-hearer/')
	+conf('2023-10-11 to 13', 'Nice', 1100, 'SPE12/OASIS3', 'Semantics and Philosophy in Europe 12 / Ontology As Structured by the Interfaces with Semantics 3')(train=1100, airbnb, url='https://spe-uca.sciencesconf.org/')

	+conf('2024-10-24 to 25', 'Online', 0, 'Puzzles of Agreement')(url='https://sites.google.com/view/puzzlesofagreement/')

	+listconferences()