Computational Linguist and Cognitive Scientist
Last modified: 05/24/23
2019 - now
2017 - 2019
2017
2016
2011-2017
PhD., Stanford University
2007-2011
B.A., The Johns Hopkins
University
2022-2024
UW Linguistics Fund
2021-2022
UW Royalty Research Fund
2016-2017
Mellon Foundation Dissertation
Completion Fellowship
2011-2016
Patrick Suppes Fellowship in
Philosophy of Science
2007-2011
Hodson Trust Scholar
2023
Shane
Steinert-Threlkeld, Nathaniel Imel, and Qingxia Guo “A Semantic
Universal for Modality,” Semantics & Pragmatics 16,
no. 1 (2023), doi:10.3765/sp.16.1.
2023
Iris van de Pol, Paul
Lodder, Leendert van Maanen, Shane Steinert-Threlkeld, and Jakub
Szymanik “Quantifiers Satisfying Semantic Universals Have Shorter
Minimal Description Length,” Cognition 232 (2023):
105150, doi:10.1016/j.cognition.2022.105150.
2023
Sonia Ramotowska,
Shane Steinert-Threlkeld, Leendert van Maanen, and Jakub Szymanik
“Uncovering the Structure of Semantic Representations Using a
Computational Model of Decision-Making,” Cognitive
Science 47, no. 1 (2023): e13234, doi:10.1111/cogs.13234.
2022
Philippe
Schlenker, Camille Coye, Shane Steinert-Threlkeld, Nathan Klinedinst,
and Emmanuel Chemla “Beyond Anthropocentrism in Comparative
Cognition: Recentering Animal Linguistics,” Cognitive
Science 46, no. 12 (2022): e13220, doi:10.1111/cogs.13220.
2022
Milica Denić, Shane
Steinert-Threlkeld, and Jakub Szymanik “Indefinite Pronouns
Optimize the Simplicity/Informativeness Trade-Off,” Cognitive
Science 46, no. 5 (2022): e13142, doi:10.1111/cogs.13142.
2022
Shane
Steinert-Threlkeld “Explaining semantic typology, forms and
all,” Trends in Cognitive Sciences (2022), doi:10.1016/j.tics.2022.02.001.
2021
Shane
Steinert-Threlkeld “Quantifiers in Natural Language: Efficient
Communication and Degrees of Semantic Universals,”
Entropy 23, no. 10 (2021): 1335, doi:10.3390/e23101335.
2021
Shane
Steinert-Threlkeld, Philippe Schlenker, and Emmanuel Chemla
“Referential and General Calls in Primate Semantics,”
Linguistics and Philosophy 44, no. 6 (2021): 1317–1342, doi:10.1007/s10988-021-09322-1.
2021
Fausto Carcassi,
Shane Steinert-Threlkeld, and Jakub Szymanik “Monotone Quantifiers
Emerge via Iterated Learning,” Cognitive Science 45, no.
8 (2021): e13027, doi:10.1111/cogs.13027.
2021
Shane
Steinert-Threlkeld and Zachary Steinert-Threlkeld “How Social
Networks Affect the Repression-Dissent Puzzle,” PLOS ONE
16, no. 5 (2021): e0250784, doi:10.1371/journal.pone.0250784.
2020
Shane
Steinert-Threlkeld and Jakub Szymanik “Ease of Learning Explains
Semantic Universals,” Cognition 195 (2020): 104076,
doi:10.1016/j.cognition.2019.104076.
2020
Shane
Steinert-Threlkeld “Toward the Emergence of Nontrivial
Compositionality,” Philosophy of Science 87, no. 5
(2020): 897–909, doi:10.1086/710628.
2020
Shane
Steinert-Threlkeld “An Explanation of the Veridical Uniformity
Universal,” Journal of Semantics 37, no. 1 (2020):
129–144, doi:10.1093/jos/ffz019.
2020
Peter Hawke and
Shane Steinert-Threlkeld “Semantic Expressivism for Epistemic
Modals,” Linguistics and Philosophy 44, no. 2 (2021):
475–511, doi:10.1007/s10988-020-09295-7.
2019
Shane
Steinert-Threlkeld and Jakub Szymanik “Learnability and Semantic
Universals,” Semantics & Pragmatics 12, no. 4
(2019), doi:10.3765/sp.12.4.
2016/2018
Peter Hawke and
Shane Steinert-Threlkeld “Informational Dynamics of Epistemic
Possibility Modals,” Synthese 195, no. 10 (2018):
4309–4342, doi:10.1007/s11229-016-1216-8.
2016
Shane
Steinert-Threlkeld “Compositional Signaling in a Complex
World,” Journal of Logic, Language and Information 25,
no. 3 (2016): 379–397, doi:10.1007/s10849-016-9236-9.
2016
Shane
Steinert-Threlkeld “Compositionality and Competition in Monkey
Alert Calls,” Theoretical Linguistics 42, no. 1–2
(2016): 159–171, doi:10.1515/tl-2016-0009.
2016
Shane
Steinert-Threlkeld “Some Properties of Iterated Languages,”
Journal of Logic, Language and Information 25, no. 2 (2016):
191–213, doi:10.1007/s10849-016-9239-6.
2013/2016
Grigori Mints and Shane
Steinert-Threlkeld “ADC Method of Proof Search in Intuitionistic
Propositional Natural Deduction,” Journal of Logic and
Computation 26, no. 1 (2016): 395–408, doi:10.1093/logcom/ext032.
2013
Shane
Steinert-Threlkeld and Thomas F. Icard III. “Iterating Semantic
Automata,” Linguistics and Philosophy 36, no. 2 (2013):
151–173, doi:10.1007/s10988-013-9132-6.
2012
Shane
Steinert-Threlkeld, Siamak Ardekani, J.L.V. Jose LV Mejino, Landon T
L.T. Detwiler, J.F. James F Brinkley, Michael Halle, Ron Kikinis,
Raimond L R.L. Winslow, M.I. Michael I Miller, and J.T. Tilak
Ratnanather “Ontological Labels for Automated Location of
Anatomical Shape Differences,” Journal of Biomedical
Informatics 45, no. 3 (2012): 522–527, doi:10.1016/j.jbi.2012.02.013.
(NB: An * next to the year indicates abstract, as opposed to full paper, review.)
2023
Naomi Tachikawa Shapiro
and Shane Steinert-Threlkeld “Iconic Artificial Language Learning:
A Conceptual Replication with English Speakers,” in
Proceedings of the Annual Meeting of the Cognitive Science
Society, 2023.
2022
David K Yi, James V
Bruno, Jiayu Han, Peter Zukerman, and Shane Steinert-Threlkeld
“Probing for Understanding of English Verb Classes and
Alternations in Large Pre-Trained Language Models,” in
Proceedings of the Fifth BlackboxNLP Workshop on Analyzing and
Interpreting Neural Networks for NLP, 2022, https://openreview.net/forum?id=Fmn3YQmUPYZ.
2022
Pangbo Ban, Yifan Jiang,
Tianran Liu, and Shane Steinert-Threlkeld “Testing Pre-Trained
Language Models’ Understanding of Distributivity via Causal Mediation
Analysis,” in Proceedings of the Fifth BlackboxNLP Workshop
on Analyzing and Interpreting Neural Networks for NLP, 2022, https://openreview.net/forum?id=D3U5fpVsZIN.
2022*
Nathaniel Imel and Shane
Steinert-Threlkeld “Modal Semantic Universals Optimize the
Simplicity/Informativeness Trade-Off,” in Semantics and
Linguistic Theory (SALT 32), 2022, 227–248, doi:10.3765/salt.v1i0.5346.
2022
Qingxia Guo, Nathaniel Imel,
and Shane Steinert-Threlkeld “A Database for Modal Semantic
Typology,” in Proceedings of the 4th Workshop on Research in
Computational Linguistic Typology and Multilingual NLP (Seattle,
Washington: Association for Computational Linguistics, 2022), 42–51,
doi:10.18653/v1/2022.sigtyp-1.6.
2022
C.m. Downey, Fei Xia,
Gina-Anne Levow, and Shane Steinert-Threlkeld “A Masked Segmental
Language Model for Unsupervised Natural Language Segmentation,”
in Proceedings of the 19th SIGMORPHON Workshop on Computational
Research in Phonetics, Phonology, and Morphology (Seattle,
Washington: Association for Computational Linguistics, 2022), 39–50, https://aclanthology.org/2022.sigmorphon-1.5.
2022
Chih-chan Tien and
Shane Steinert-Threlkeld “Bilingual Alignment Transfers to
Multilingual Alignment for Unsupervised Parallel Text Mining,” in
Proceedings of the 60th Annual Meeting of the Association for
Computational Linguistics (Volume 1: Long Papers) (Dublin, Ireland:
Association for Computational Linguistics, 2022), 8696–8706, https://aclanthology.org/2022.acl-long.595.
2022
Shane
Steinert-Threlkeld, Xuhui Zhou, Zeyu Liu, and C. M. Downey
“Emergent Communication Fine-Tuning (EC-FT) for Pretrained
Language Models,” in Emergent Communication Workshop at ICLR
2022, 2022, https://openreview.net/forum?id=SUqrM7WR7W5.
2021
Naomi Shapiro,
Amandalynne Paullada, and Shane Steinert-Threlkeld “A Multilabel
Approach to Morphosyntactic Probing,” in Findings of the
Association for Computational Linguistics: EMNLP 2021 (Punta Cana,
Dominican Republic: Association for Computational Linguistics, 2021),
4486–4524, doi:10.18653/v1/2021.findings-emnlp.382.
2021
Jaap Jumelet, Milica Denic,
Jakub Szymanik, Dieuwke Hupkes, and Shane Steinert-Threlkeld
“Language Models Use Monotonicity to Assess NPI Licensing,”
in Findings of the Association for Computational Linguistics:
ACL-IJCNLP 2021 (Online: Association for Computational Linguistics,
2021), 4958–4969, doi:10.18653/v1/2021.findings-acl.439.
2021
Iris van de Pol,
Paul Lodder, Leendert van Maanen, Shane Steinert-Threlkeld, and Jakub
Szymanik “Quantifiers Satisfying Semantic Universals Are
Simpler,” Proceedings of the Annual Meeting of the Cognitive
Science Society 43, no. 43 (2021), https://escholarship.org/uc/item/1vm445rp.
2020
Chuanrong
Li, Lin Shengshuo, Zeyu Liu, Xinyi Wu, Xuhui Zhou, and Shane
Steinert-Threlkeld “Linguistically-Informed Transformations (LIT):
A Method for Automatically Generating Contrast Sets,” in
Proceedings of the Third BlackboxNLP Workshop on Analyzing and
Interpreting Neural Networks for NLP (Online: Association for
Computational Linguistics, 2020), 126–135, doi:10.18653/v1/2020.blackboxnlp-1.12.
2020
Nur Geffen Lan,
Emmanuel Chemla, and Shane Steinert-Threlkeld “On the Spontaneous
Emergence of Discrete and Compositional Signals,” in
Proceedings of the 58th Annual Meeting of the Association for
Computational Linguistics (Stroudsburg, PA, USA: Association for
Computational Linguistics, 2020), 4794–4800, doi:10.18653/v1/2020.acl-main.433.
2020*
Milica Denić,
Shane Steinert-Threlkeld, and Jakub Szymanik
“Complexity/Informativeness Trade-Off in the Domain of Indefinite
Pronouns,” in Proceedings of Semantics and Linguistic Theory
(SALT 30), vol. 30, 2020, 166–184, doi:10.3765/salt.v30i0.4811.
2020*
Sonia Ramotowska, Shane
Steinert-Threlkeld, Leendert Van Maanen, and Jakub Szymanik “Most,
but Not More Than Half, Is Proportion-Dependent and Sensitive to
Individual Differences,” Proceedings of Sinn Und
Bedeutung 24, no. 2 (2020): 165–182, doi:10.18148/sub/2020.v24i2.891.
2019*
Shane
Steinert-Threlkeld “Quantifiers in Natural Language Optimize the
Simplicity/Informativeness Trade-Off,” in Proceedings of the
22nd Amsterdam Colloquium, ed. Julian J Schlöder, Dean McHugh, and
Floris Roelofsen, 2019, 513–522.
2019
Fausto Carcassi,
Shane Steinert-Threlkeld, and Jakub Szymanik “The Emergence of
Monotone Quantifiers via Iterated Learning,” in Proceedings
of the 41st Annual Meeting of the Cognitive Science Society (CogSci
2019), 2019, 190–196, https://psyarxiv.com/8swtd.
2019
Iris van de Pol,
Shane Steinert-Threlkeld, and Jakub Szymanik “Complexity and
Learnability in the Explanation of Semantic Universals of
Quantifiers,” in Proceedings of the 41st Annual Meeting of
the Cognitive Science Society (CogSci 2019), 2019, 3015–3021, https://psyarxiv.com/f8dbp/.
2019
Lewis O’Sullivan
and Shane Steinert-Threlkeld “Neural Models of the Psychosemantics
of ‘Most’,” in Proceedings of the Workshop on
Cognitive Modeling and Computational Linguistics (Stroudsburg, PA,
USA: Association for Computational Linguistics, 2019), 140–151, doi:10.18653/v1/W19-2916.
2018
Shane
Steinert-Threlkeld “Paying Attention to Function Words,” in
Emergent Communication Workshop @ NeurIPS 2018, 2018, http://arxiv.org/abs/1909.11060.
2018
Sandro Pezzelle, Shane
Steinert-Threlkeld, Raffaella Bernardi, and Jakub Szymanik “Some
of Them Can Be Guessed! Exploring the Effect of Linguistic Context in
Predicting Quantifiers,” in Proceedings of the 56th Annual
Meeting of the Association for Computational Linguistics (Volume 2:
Short Papers) (Melbourne, Australia: Association for Computational
Linguistics, 2018), 114–119, doi:10.18653/v1/P18-2019.
2017*
Shane
Steinert-Threlkeld “Uniform Definability in Assertability
Semantics,” in Proceedings of the 21st Amsterdam
Colloquium, ed. Alexandre Cremers, Thom van Gessel, and Floris
Roelofsen, 2017, 445–454.
2015
Peter Hawke and Shane
Steinert-Threlkeld “Informational Dynamics of ‘Might’
Assertions,” in Logic, Rationality, and Interaction, ed.
Wiebe van der Hoek, Wesley H. Holliday, and Wen-fang Wang, Lecture Notes
in Computer Science (Berlin, Heidelberg: Springer, 2015), 143–155,
doi:10.1007/978-3-662-48561-3_12.
2015*
Shane
Steinert-Threlkeld, Gert-Jan Munneke, and Jakub Szymanik
“Alternative Representations in Formal Semantics: A Case Study of
Quantifiers,” in Proceedings of the 20th Amsterdam
Colloquium, ed. Thomas Brochhagen, Floris Roelofsen, and Nadine
Thelier, 2015, 368–378.
2014
Shane
Steinert-Threlkeld “On the Decidability of Iterated
Languages,” in Proceedings of Philosophy, Mathematics,
Linguistics: Aspects of Interaction (PhML2014), ed. Oleg Prosorov,
2014, 215–224.
2013
Jakub
Szymanik, Shane Steinert-Threlkeld, Marcin Zajenkowski, and Thomas F.
Icard III. “Automata and Complexity in Multiple-Quantifier
Sentence Verification,” in Proceedings of the 12th
International Conference on Cognitive Modeling, 2013.
2011
S.
Steinert-Threlkeld, S. Ardekani, J.L.V. Mejinoz, L.T. Detwilerz, J.F.
Brinkleyz, M. Halle, R. Kikinis, R.L. Winslowy, M.I. Miller, and J.T.
Ratnanather “Ontological Labels for Automated Location of Left
Ventricular Remodeling,” in Proceedings - 5th IEEE
International Conference on Semantic Computing, ICSC 2011, 2011,
doi:10.1109/ICSC.2011.99.
2017
Shane
Steinert-Threlkeld “Communication and Computation: New Questions
About Compositionality” (PhD Dissertation, Stanford University,
2017), https://eprints.illc.uva.nl/id/document/12050.
2011
Shane
Steinert-Threlkeld “Lambda Calculi,” The Internet
Encyclopedia of Philosophy (2011), http://www.iep.utm.edu/lambda-calculi/.
2009
Shane
Steinert-Threlkeld, J. Tilak Ratnanather, and Tilak Ratnanather
“Open Standards, Web-Based Mathlets: Making Interactive Tutorials
Using the Html5 Canvas Element,” Loci: Developers 1
(2009), doi:10.4169/loci003340.
revise and resubmit
Nicolas Guerin,
Emmanuel Chemla, and Shane Steinert-Threlkeld “The Impact of
Syntactic and Semantic Proximity on Back-Translation,”
Transactions of the Association for Computational Linguistics
(n.d.).
submitted
Yifan Jiang and Shane
Steinert-Threlkeld “The Weighted Möbius Score: A Unified Framework
for Feature Attribution,” in Neural Information Processing
Systems, n.d., doi:10.48550/arXiv.2305.09204.
submitted
C. M. Downey, Leo
Z. Liu, Xuhui Zhou, and Shane Steinert-Threlkeld “Learning to
Translate by Learning to Communicate,” in Representation
Learning for NLP (RepL4NLP), n.d., doi:10.48550/arXiv.2207.07025.
submitted
Toshiyuki Ogihara
and Shane Steinert-Threlkeld “Limitations of a Modal Analysis of
`Before’,” Semantics & Pragmatics (n.d.).
under contract
Shane
Steinert-Threlkeld and Szymanik, Jakub Computational Explanations of
Semantic Universals, Cambridge Elements in Semantics and Pragmatics
(Cambridge University Press, n.d.).
Fall 2023
UMass Amherst Linguistics Colloquium
July 2023
Internal and external pressures shaping
language
05/01/23
UC Davis Linguistics Colloquium
03/17/23
Inaugural MIT Breakstone Speakers Series on
Language, Mind, and Computation
02/28/23
UC Irvine Language Science Colloquium
12/06/22
McDonell Foundation Workshop on The Nature and
Origins of the Human Capacity for Abstract Combinatorial Thought
09/22/22
South by Semantics Workshop (SXSW) @ University
of Texas
03/30/2022
Center for Linguistic Theory and Studies in
Probability (CLASP) @ Gothenburg
03/04/2022
Allyson Ettinger lab @ Chicago
09/21/22
Computational Linguistics Seminar @ University
of Texas
05/19/2022
Cognitive Semantics and Quantities closing
workshop
09/08/2021
Computational Psycholinguistics Lab @ MIT
(PI: Levy)
06/17/2021
Konstanz Philosophy Colloquium
02/17/2021
Language Change: Theoretical and Empirical
Perspectives (@ Hebrew University of Jerusalem)
10/01/2020
Computation and Langauge Lab @ Berkeley (PI:
Piantadosi)
02/22/2021
Montana State University Computer Science
Colloquium
06/12/2019
Workshop in Honor of Johan van Benthem’s 70th
Birthday
05/24/2019
Social Models of Meaning Acquisition (U
Warsaw)
04/17/2019
Universität Osnabrück Institute of Cognitive
Science Colloquium
04/05/2019
AwesomeIT Symposium (U Amsterdam)
03/07/2019
Logic and Interactive Rationality Seminar
(ILLC, Amsterdam)
02/20/2019
University of Washington Linguistics
Colloquium
01/24/2019
Cornell University Linguistics Colloquium
12/15/2018
Workshop on Universals in the Modal Domain
(Utrecht)
09/10/2018
Cognition, Language and Communication Seminar
(Amsterdam)
11/14/2017
Computational Linguistics Seminar
(Amsterdam)
11/10/2017
Paris-Amsterdam-London Meeting
09/28/2017
Cognitive Semantics and Quantities kick-off
workshop
06/26/2017
Inquisitiveness Below and Beyond the Sentence
Boundary (with Peter Hawke)
03/22/2017
Institut Jean Nicod
12/11/2015
Center for Logic, Language, and Mind
(Stockholm University)
12/10/2015
Higher Seminar in Theoretical Philosophy
(Stockholm University)
05/31/2015
Fourth CSLI Workshop on Logic, Rationality
and Intelligent Interaction
04/14/2015
Stanford Mathematical Logic Seminar
12/11/2013
Knowledge, Argumentation and Games in
Amsterdam
01/09/2014
Cognition and Language Workshop
05/14/2013
Stanford Mathematical Logic Seminar
06/02/2012
First CSLI Workshop on Logic, Rationality and
Intelligent Interaction
07/xx/2023
Annual Meeting of the Cognitive Science
Society (CogSci 44); with Naomi Tachikawa Shapiro
04/21/2023
Workshop on Modality in Underdescribed
Languages: Methods and Insights; with Sharon Hargus and Virginia
Beavert
12/08/2022
Analyzing and Interpreting Neural Networks
for NLP (BlackboxNLP 5, at EMNLP); with Pangbo Ban, Yifan Jiang, Tianran
Liu
12/08/2022
Analyzing and Interpreting Neural Networks
for NLP (BlackboxNLP 5, at EMNLP); with David K Yi, James V Bruno, Jiayu
Han, Peter Zukerman
06/10/2022
Semantics and Linguistic Theory (SALT 32);
with Nathaniel Imel
05/20/2022
Experiments in Linguistic Meaning (ELM 32);
with Nathaniel Imel
07/14/2022
4th Workshop on Research in Computational
Linguistic Typology and Multilingual NLP at NAACL; with Qingxia Guo,
Nathaniel Imel
07/14/2022
19th SIGMORPHON Workshop on Computational
Research in Phonetics, Phonology, and Morphology at NAACL; with C.M.
Downey, Fei Xia, Gina-Anne Levow
05/23/2022
Association for Computational Linguistics
(ACL); with Chih-chan Tien
04/29/2022
Workshop on Emergent Communication: New
Frontiers at ICLR; with C.M. Downey, Zeyu Liu, Xuhui Zhou
11/20/2020
Analyzing and interpreting neural networks
for NLP (BlackboxNLP); with Chuanrong Li, Lin Shengshuo, Zeyu Liu, Xinyi
Wu, Xuhui Zhou
08/18/2020
Semantics and Linguistic Theory (SALT 30);
online, with Milica Denic
07/30/2020
Annual Meeting of the Cognitive Science
Society (CogSci 43); with Iris van de Pol, Paul Lodder, Leendert van
Maanen, Jakub Szymanik
07/07/2020
Association for Computational Linguistics
(ACL 2020); online, with Nur Lan and Emmanuel Chemla
12/18/2019
Amsterdam Colloquium (AC 2019)
09/06/2019
Sinn und Bedeutung 24; with Sonia Ramotowska,
Leendert van Maanen, Jakub Szymanik
07/27/2019
Annual Meeting of the Cognitive Science
Society (CogSc 41); with Fausto Carcassi, Jakub Szymanik
07/27/2019
Annual Meeting of the Cognitive Science
Society (CogSc 41); with Iris van de Pol, Leendert van Maanen, Jakub
Szymanik
06/22/2019
Bilateral Approaches to Meaning; with Peter
Hawke
06/07/2019
Workshop on Cognitive Modeling and
Computational Linguistics (CMCL); with Lewis O’Sullivan
04/03/2019
Reasoning, Argumentation and Logic in Natural
Language: Experiments and Models; with Sonia Ramotowska, Leendert van
Maanen, and Jakub Szymanik
12/08/2018
Neural Information Processing Systems
(NeurIPS2018), workshop on Emergent Communication
11/04/2018
Philosophy of Science Association, symposium
on Evolutionary Explanations of Compositional Communication
03/29/2018
Pacific Division of the American
Philosophical Association; with Peter Hawke
12/22/2017
Amsterdam Colloquium (AC 2017)
12/17/2015
Amsterdam Colloquium (AC 2015); with Gert-Jan
Munneke, Jakub Szymanik
10/17/2015
Linguistic and Cognitive Aspects of
Quantification; with Gert-Jan Munneke, Jakub Szymanik
05/02/2015
Berkeley-Stanford-Davis Graduate Conference
in Philosophy; with Peter Hawke
04/25/2014
Philosophy, Mathematics, Linguistics: Aspects
of Interaction (PhML 2014)
10/11/2013
California Universities Semantics and
Pragmatics Conference (CUSP 6); with Eric Acton and Daria Popova
04/26/2013
Berkley-Stanford-Davis Graduate Conference in
Philosophy
09/21/2011
Fifth IEEE International Conference on
Semantic Computing
2023
“Google’s
Bard Writes Convincingly About Known Conspiracy Theories” by Davey
Alba in Bloomberg
2023
“Tech’s
hottest new job: AI whisperer. No coding required.” by Drew Harwell
in The Washington Post
LING 571 Deep Processing Methods for NLP: Aut ’19, ’20, ’21, ’22
LING 572 Advanced Statistical Methods for NLP: Win ’20
LING 574 Deep Learning for NLP: Spr ’21, ’22
LING 575 Analyzing Neural Language Models: Win ’20, Spr ’21, ’22
Causality, Decisions, and Games (with Robert van Rooij)
Neural Network Methods for Quantifiers
PHIL 152 Computability and Logic
PHIL 23A Cognitive Science of Mathematics
PHIL 150e Logic in Action (with Thomas Icard and Peter Hawke)
The Artificial Language Toolkit: MIT Linguistics March 15-16 2023
Learnability of Quantifiers (with Jakub Szymanik): ESSLLI 2019; NASSLLI 2022
Quantification and Computation (with Jakub Szymanik): ESSLLI 2014
Primary Advisor
Committee Member
Graduate Student Representative (external member)
2022
Nathaniel Imel (PhD Student, Logic and Philosophy
of Science @ UC Irvine), “Modals in natural language optimize the
simplicity/informativeness tradeoff”
2022
Katya Simpson (Software Engineer @ Twitter), ”
“Obama never said that”: Evaluating fact-checks for topical consistency
and quality”
2021
Megan Barnes (Software Engineer @ Google), “Latent
Compositional Representations for English Function Word
Comprehension”
2021
Jessica Sweeney (Data Scientist @ Coastal Community
Bank), “Comparing Methods for Automatic Identification of Mislabeled
Data”
2021
Shunjie Wang (Data Scientist AI/NLP @ Happify
Health), “Evaluating Transformer’s Ability to Learn Mildly
Context-Sensitive Languages”
2021
Wes Rose (Language Engineer @ Amazon), “Toward the
Emergence of Quantifiers”
2021
Devin Johnson (PhD student, Linguistics @
Northwestern), “Semantic Universals in Bayesian Learning of
Quantifiers”
2020
Benny Longwill (Research Engineer @ ETS), “The
Suitability of Generative Adversarial Training for BERT Natural Language
Generation”
2020
Chih-chan Tien (PhD student, CS @ Chicago),
“Bilingual alignment transfers to multilingual alignment for
unsupervised parallel text mining”
2020
Daniel Campos (PhD student, CS @ UIUC),
“Explorations In Curriculum Learning Methods For Training Language
Models”
2020
Paige Finkelstein (Software Engineer, turn.io),
“Human-Assisted Neural Machine Translation: Harnessing Human Feed- back
for Machine Translation”
Semantics & Pragmatics (5); Glossa Psycholinguistics; The Psychological Review; Mind; Noûs; Mind & Language; Journal of Data Science; Erkenntnis (3); Synthese (2); The Review of Symbolic Logic (2); Journal of Logic, Language and Information (3); Journal of Semantics (4); Australasion Journal of Philosophy; Ergo; Philosophical Studies; Interaction Studies (formerly known as Evolution of Communication); Frontiers in Artificial Intelligence; Frontiers in Psychology (Language Sciences); Theoria (2); Logic Journal of the IGPL; PLoS Computational Biology
Association for Computational Linguistics (ACL); Empirical Methods in Natural Language Processing (EMNLP); International Conference of Learning Representations (ICLR); Semantics and Linguistic Theory (SALT); North American ACL (NAACL); *SEM (Joint Conference on Lexical and Computational Semantics); Neural Information Processing Systems (NeurIPS); Experiments in Linguistic Meaning (ELM); BlackboxNLP; West Coast NLP (WeCNLP); International Conference on Machine Learning (ICML); COLING; Semantics and Philosophy in Europe (SPE); Amsterdam Colloquium; Annual Meeting of the Cognitive Science Society; AACL-IJCNLP (Asia-Pacific ACL - International Joint Conference in NLP); Joint Conference on Language Evolution (JCoLE); Experimental approaches to language universals in structure and meaning; Approaches to implicature: rational choice and/or exhaustification; WeSSLLI (Web Summer School in Logic, Language and Information) Student Session; ACL Student Research Workshop
Regular participant in Pop-Up Mentoring Program (PUMP) for LSA events (e.g. SALT, NASSLLI)


Click the button get the node name of the DIV's last child node.
A P element - Second child in div
A Span element - Fourth child in divNote: Whitespace inside elements is considered as text, and text is considered as nodes. Therefore, in this example, the first, third and fifth child of the div element is a #text node.


| Note | |
|---|---|
The main reference is [1]. |
x, y : real number
n : nonnegative integer
z, ν, μ : complex number
Modified Bessel functions are defined as the solutions to the ordinary differential equation
The following equivalent definitions are also widely used
where Iν(z) is called Modified Bessel function of the first kind and Kν(z) is called Modified Bessel function of the second kind.
| Note | |
|---|---|
The right hand side of Kν(z) equation is replaced by its limiting value if ν is an integer. |
All computations of modified Bessel functions are based on recurrence relations. To use the recursion, initial values must first be calculated. The methods differ for ν = n is integer and ν is any real number. We will discuss the two situations separately.
| Copyright © 2006 Xiaogang Zhang |


Image Editor
Tic-Tac-Toe
Word Guesser
Estudio Davi
My Github
Grayscale
Blur
Brightness
Contrast
Hue Rotate
Opacity
Invert
Saturate
Sepia


Session Properties dialog
This allows you to set the session properties and is made up of the following screens:
General
This allows you to set the session name and description.
Exclude from Proxy
This allows you to manage the URLs which will be ignored by the local proxies.
Exclude from Scanner
This allows you to manage the URLs which will be ignored by the scanner.
Exclude from Spider
This allows you to manage the URLs which will be ignored by the spiders (standard and AJAX).
Contexts
A set of screens for managing contexts
URL regexs
In the Exclude from * dialogs, you can enter regular expressions to define excluded URLs.
While you can escape a single meta-character with a backslash, you can also use the \Q...\E escape sequence. All the characters between the \Q and the \E are interpreted as literal characters. E.g. \Q*\d+*\E matches the literal text *\d+*.
This escape sequence is used in ZAP when you exclude URLs via some context menus.
Megjegyzés: If your URL contains a "\E", then you have to do the following steps when using the \Q...\E escape sequence:
- Open the escape sequence
- Close the escape sequence before the "character" \E
- Escape the backslash
- Open after the "\E" another escape sequence;
- Close the escape sequence as normally would.
Example: subdomain.example.com/path?a=\E&moredata=2 should appear as
\Qsubdomain.example.com/path?a=\E\\E\Q&moredata=2\E
Accessed via
See also


Lession 1: The Basics of the Web and HTML
How web works
Web is the communication between the user and computer via computer network. User are sending HTML request when the user trying to browse web page like www.udacity.com .
What is HTML?
HTML is stand for Hyper Text Markup Language that describing web documents or web pages.
What is URLS?
If you are surfing the web browser in World Wide Web, definitely you been used to access HTML pages from the web.URL is Stand for Uniform Resource Locator. URL is the global address of document on the World Wide Web. In other word, URL is informally called as web address.
HTML Tags:
The <!DOCTYPE html> declaration defines this document to be HTML5
<html> and </html> are describes an HTML document
<head> and </head> provides information about the document
<title> and </title> provides a title for the document in title bar
<body> and </body> describes the visible page content
<h1> and </h1> describes a heading
<p> and </p> describes a paragraph
Inline vs Block Vs Inline-Box Tags:
The HTML elements are abstract like a box. There are inline or block.


Maple Leafs call up Pierre Engvall, put Trevor Moore on IR
The Toronto Maple Leafs have called up Pierre Engvall and placed the injured Trevor Moore on IR.
With Moore officially on IR to provide the roster space to add a player to the 23-man roster, he will have to stay out of action for seven days, but that will be counted from the day after he left the game against the Bruins.
Engvall is waiver-exempt, and can appear in 70 NHL games before that expires. He counts against the now-gigantic LTIR pool for $925,000, making him a difficult player to fit on the roster when all players are healthy without dropping to only 20 players. Now is a good time to have a look at him in the NHL, since salary amount isn’t an issue right now.
Engvall was drafted in 2014, 188th overall in the seventh round where the Leafs find all their players. He is 23, and has been playing regularly at centre this year on the Marlies, but he is more usually a winger in his higher-level pro career.
He had a good year on the Marlies last season after a very positive season in the SHL. His play this season has been even better, and he co-leads the team in points with Pontus Aberg. Engvall, Aberg, Jeremy Bracco and Egor Korshkov are the only players to have appeared in all 15 games for the Marlies.
While Engvall’s role on the Marlies has been on a scoring line, his primary role for HV71, in his first and only year in the SHL was as a depth forward, and he played that role extremely well. It’s that versatility, which can be hard to find, which gives him a chance to make an impression in the NHL.


Frequently Asked Questions
What is Futsal?
All About Futsal
Think, soccer on a basketball court.
Have you ever seen a fenced b-ball court and thought - "Well, they sure need some goal post and a heavy soccer bal out here, something exciting."?
That's why futsal was created. Having all the fun of the fastest-paced game with nothing needed but shoes and a ball!
Futsal is the fastest paced game in the world.
Other than table-tennis, there's nothing more fast paced than a good game of futsal. Setting up and enjoying a game is not only exciting, but really tiring, the pros play 20-minute halfs
Futsal is for poor people and any weather condition.
Originally made in Uruguay for youth soccer leagues to play in consistently rained-out fields, the game has shown itself a favorite of youth, teens, professionals, coaches and everyone in between.
About Futsal 101
We all love the game that much!
This is simple. Futsal is loved by everyon, you just need a chance to get exposed to it.
Get a chance to play in the pro's?
This is the most popular futsal tournament so winners receive a cash prize of 10BTC and a flight to the Futsal101 championship.


The
Bering Glacier Monograph is
now available from the Geological Society of America!
The monograph presents the results of a comprehensive and diverse series of field studies and science investigations at Bering Glacier.
The results reported are from a wide range of scientific disciplines, including glaciology, geology, paleogeology, hydrology, limnology, oceanography, tectonics, geomorphology, geophysics, meteorology, remote sensing, climate change, anthropology, and ecological studies pertaining to vegetation, fish, and marine mammals.
Purchase it from the GSA today!


Mobile: +91-9547950611
Email<EMAIL_ADDRESS>I'm Akash Manna... currently a Student of B.Tech in department of Information Technology in Siliguri Institute of Technology. My favourite programming enviroment and language is Java. In this rapid advancement of Human Civilization by Computer Scientists and IT specialists, I aim to be a participant rather than being a spectator.
College: Siliguri Institute of Technology
Department: Information Technology
Duration: 2015-2019
Grade: 6.76
School: Rathipur Barada Banipith
Stream: Science
Year: 2015
Marks: 60.6%
School: Rathipur Barada Banipith
Year: 2013
Marks: 79%
C, C++, Java, SQL, HTML, CSS, JavaScript, PHP, Python


{% extends "base.html" %} {% block main %}
You are attempting to {% ifequal action "new" %} create {% else %} edit {% endifequal %} a job for an event that does not exist.
{% endif %} {% if wronguser %}You don't have permission to {% ifequal action "new" %} create {% else %} edit {% endifequal %} jobs for the event specified.
{% endif %} {% if jobnotfound %}You're trying to edit a job that does not exist.
{% endif %} {% if not wronguser and not eventnotfound and not jobnotfound %} {% ifequal action "new" %}Event: {{ event.name }}
{% if form %}{% endif %} {% endif %}


Do you have what it takes to be called a developer? For you to prove that take the test to know your brilliance
Click below the start button to go to test
Marks:
Comments:


[WIP] Implement portable tailcall helpers by jakobbotsch · Pull Request #26418 · dotnet/coreclr Implement the portable tailcall helpers described in https://github.com/dotnet/coreclr/blob/master/Documentation/design-docs/tailcalls-with-helpers.md with a few variations. Stubs EH clause ...
Implement struct marshalling via IL Stubs instead of via FieldMarshalers by jkoritzinsky · Pull Request #26340 · dotnet/coreclr Currently, our system for marshalling fields of structures between managed and native code is completely separate from our system for marshalling parameters or return values, even though most of th...
Cascadia Code | Windows Command Line Cascadia Code is finally here! You can install it directly from the GitHub repository’s releases page or automatically receive it in the next update of Windows Terminal. Wait, what’s Cascadia Code? Cascadia Code was announced this past May at Microsoft’s ...
Disable nop padding in R2R images and remove jumpstamps from the runtime by davmason · Pull Request #26740 · dotnet/coreclr This is still a work in progress, there are some failing tests and I still need to run perf tests on it, but I want to get eyes on it as early as possible. This change does three things: Remove no...
Miles 10 Titanfall 2 Replay Demo This is a short video demonstrating the replay functionality of Miles 10! During the game, a file is saved to disc, capturing all input from the game to the Miles runtime. Miles Studio lets you replay these files, which is great for bug reproducing and i...
gRPC and C# 8 Async stream gRPC and its idea to describe an API in a standardized file, which can generate both client and server code to interact in different languages is a compelling idea.In this post, I would like to have a
What is the fastest way to do Array Table Lookup with an Integer Index? I have a video processing application that moves a lot of data. To speed things up, I have made a lookup table, as many calculations in essence only need to be calculated one time and can be reus...
Prague .NET Meetup with Maoni Stephens [ENG] Experimental stream/video from the .NET meetup with the Garbage Collector (GC) architect Maoni Stephens in Prague, Czech Republic. [0:16] Introduction and talk start [57:08] First Q&A [1:20:23] Panel discusion start
dotnet/roslyn The Roslyn .NET compiler provides C# and Visual Basic languages with rich code analysis APIs. - dotnet/roslyn
John Balcerzak - Wikipedia John Balcerzak is a former police officer from Milwaukee, Wisconsin who served as president of the Milwaukee Police Association from 2005 to 2009. Balcerzak first gained national attention in 1991, when he was fired for having handed over an injured child...
WATCH: Full exchange between Corey Lewandowski and House Judiciary Counsel Barry Berke Barry Berke, legal counsel for the House Judiciary Committee, questioned former Trump campaign manager Corey Lewandowski about his relationship with the president and what he told former special counsel Robert Mueller as Mueller investigated Russian inter...
Noita Gameplay - Explaining what every pixel is simulated means Hi, in this video I play some Noita and at the same time try to explain what it means that
A Cancel Culture Glossary Every day, I check my twitter feed, and sure enough, every day, it greets me with another Cancelling. A Cancelling is, generally speaking, any time people on the internet join together to express negative emotions and opinions about someone or something. ...
dotnet pack creates odd dates in package using version 3.0.100-preview9-014004 · Issue #3388 · dotnet/core dotnet pack creates odd dates in package using version 3.0.100-preview9-014004 After switching to the version listed above our nuget packages started having very strange dates. The first date that ...


Hi {{uname}}
My posts
Feed
Write New post
Change pro pic
Name
{{uname}}
Email
{{uemail}}
{{i.subject}}
{{i.pdate}} {{i.ptime}}
{{i.content}}
Post
View Comments
Edit
Update
Delete
{{j.postedby}}
{{j.cdate}} {{j.ctime}}
{{j.comment}}
Subject
Write something here..
Post
{{i.subject}}
{{i.pdate}} {{i.ptime}}
{{i.content}}
posted by {{i.author}}
Post
View Comments
{{j.postedby}}
{{j.cdate}} {{j.ctime}}
{{j.comment}}
Subject
Write something here..
Post


This paper “Enhancing Underwater Images and Videos by Fusion”, published by Ancuti et al. on CVPR, describes a novel strategy, built on the fusion principles, to enhance underwater videos and images. Here I implement this algorithm by Java, and summerize the main idea in this paper.
General Schema
The enhancing approach starts from a single distorted underwater image, first of all, applying white balance to this image to generate the first input of fusion process, denotes as $img_{1}$, and applying a temporal coherent noise reduction method to this $img_{1}$ to derive another input of fusion process, denotes as $img_{2}$; then, obtaining the weights of these two inputs, where Laplacian contrast weight ($W_{L}$), local contrast weight ($W_{LC}$), Saliency weight ($W_{S}$) and exposedness weight ($W_{E}$) are used in this process; finally, the multi-scale fusion process is applied to generate the restored image.
Fusion Materials Generation
The general idea of this fusion process is that the processed result, combines several input images by preserving only the most significant features of them. Here, the author choose to use two inputs, and the enhancing solution does not search to derive the inputs based on the physical model of the scene, only aims for a fast and simple technique that works generally. The first derived input is represented by the color corrected version of the image while the second is computed as a contrast enhanced version of the underwater image after a noise reduction operation is performed.
White Balance
White balancing aims to enhance the image appearance by discarding unwanted color casts, due to various illuminants. Since, for underwater images, different components of light suffer from different degree of attenuation. In water deeper than $30ft$, white balancing suffers from noticeable effects since the absorbed colors are difficult to be restored. Additionally, underwater scenes present significant lack of contrast due to the poor light propagation in this type of medium. To deal with this problem, the author intorduces a modified balancing method according to Shades-of-Grey hypothesis, where the illumination is estimated by the value $\mu_{I}$ that is computed from the average of the scene $\mu_{ref}$ and adjusted by the parameter $\lambda$: $$ \mu_{I}=0.5+\lambda\cdot\mu_{ref} $$ The average color $\mu_{ref}$ is used to estimate the illuminant color and can be obtained based on Minkowski norm when $p=1$. Practically, the first input is computed by this straightforward white balancing operation. Since the white balancing solely is not able to solve the problem of visibility, thus, an additional input is required in order to enhance the contrast of the degraded image.
To implement the color balance, I found that among different methods (including the method provided by the author), the Simplest Color Balance, which performs color balancing via histogram bormalization, is a better way to handle such process, since it is fast and the restoring performance is better. Below is the Java codes I implemented for the Simplest Color Balance:
/**
* Simplest Color Balance. Performs color balancing via histogram normalization.
* @param img input color or gray scale image
* @param percent controls the percentage of pixels to clip to white and black. (normally, choose 1~10)
* @return Balanced image in CvType.CV_32F
*/
public static Mat SimplestColorBalance(Mat img, int percent) {
if (percent <= 0) percent = 5;
img.convertTo(img, CvType.CV_32F);
List<Mat> channels = new ArrayList<Mat>();
int rows = img.rows(); // number of rows of image
int cols = img.cols(); // number of columns of image
int chnls = img.channels(); // number of channels of image
double halfPercent = percent / 200.0;
if (chnls == 3) { Core.split(img, channels); }
else { channels.add(img); }
List<Mat> results = new ArrayList<Mat>();
for (int i = 0; i < chnls; i++) {
// find the low and high precentile values (based on the input percentile)
Mat flat = new Mat();
channels.get(i).reshape(1, 1).copyTo(flat);
Core.sort(flat, flat, Core.SORT_ASCENDING);
double lowVal = flat.get(0, (int) Math.floor(flat.cols() * halfPercent))[0];
double topVal = flat.get(0, (int) Math.ceil(flat.cols() * (1.0 - halfPercent)))[0];
// saturate below the low percentile and above the high percentile
Mat channel = channels.get(i);
for (int m = 0; m < rows; m++) {
for (int n = 0; n < cols; n++) {
if (channel.get(m, n)[0] < lowVal) channel.put(m, n, lowVal);
if (channel.get(m, n)[0] > topVal) channel.put(m, n, topVal);
}
}
Core.normalize(channel, channel, 0, 255, Core.NORM_MINMAX);
channel.convertTo(channel, CvType.CV_32F);
results.add(channel);
}
Mat outval = new Mat();
Core.merge(results, outval);
return outval;
}
Temporal Coherent Noise Reduction
The temporal coherent noise reduction process is introduced, since underwater images are noisy due to the impurities and the special illumination conditions. To remove noise while preserve edges (for videos, also need to take both spatial and temporal coherence into consideration), The bilateral filter is commonly used, by considering the domain $\Omega$ of the spatial filter kernel $f$ (Gaussian with standard deviation $\sigma_{f}$), the bilateral filter blends the center pixel $s$ of the kernel with the neighboring pixels $p$ that are similar to $s$: $$ J_{s}=\frac{1}{k(s)}\sum_{p\in\Omega}f\big(p-s,\sigma_{f}\big)\cdot g\big(D(p,s),\sigma_{g}\big)\cdot I_{p} $$ where $D(p,s)=I_{p}-I_{s}$ is the difference in intensities, the normailization term $$ k(s)=\sum_{p\in\Omega}f\big(p-s,\sigma_{f}\big)\cdot g\big(D(p,s),\sigma_{g}\big) $$ $g$ is the range kernel that is a Gaussian with standard deviation $\sigma_{g}$ that penalizes pixels across edges that have large intensity differences. However, the bilateral filter does not guarantee the preservation of the temporal coherence for videos, thus, the author proposed a temporal bilateral filter,which instead of comparing the intensities as $D(p,s)=I_{p}-I_{s}$ directly, they compute the sum of squared differences between small spatial neighborhood $\Psi$ around $s$ and $p$ weighted by a Gaussian $\Gamma(x,y)$: $$ D(p,s)=\sum_{x}^{\Psi}\sum_{y}^{\Psi}\Gamma(x,y)(I_{p}-I_{s})^{2} $$ Typically, the size of neighborhood $\Psi$ is $3\times 3$ or $5\times 5$. Practically, the second input is computed from the noise-free and color corrected version of the original image. This input is designed in order to reduce the degradation due to volume scattering. To achieve an optimal contrast level of the image, the second input is obtained by applying the classical contrast local adaptive histogram equalization. And the Java Implementation is shown below:
// color balance
Mat img1 = ColorBalance.SimplestColorBalance(image, 5);
img1.convertTo(img1, CvType.CV_8UC1);
// Perform sRGB to CIE Lab color space conversion
Mat LabIm1 = new Mat();
Imgproc.cvtColor(img1, LabIm1, Imgproc.COLOR_BGR2Lab);
Mat L1 = new Mat();
Core.extractChannel(LabIm1, L1, 0);
// apply CLAHE
Mat[] result = applyCLAHE(LabIm1, L1);
Mat img2 = result[0];
Mat L2 = result[1];
where applyCLAHE
is implemented as:
public static Mat[] applyCLAHE(Mat img, Mat L) {
Mat[] result = new Mat[2];
CLAHE clahe = Imgproc.createCLAHE();
clahe.setClipLimit(2.0);
Mat L2 = new Mat();
clahe.apply(L, L2);
Mat LabIm2 = new Mat();
List<Mat> lab = new ArrayList<Mat>();
Core.split(img, lab);
Core.merge(new ArrayList<Mat>(Arrays.asList(L2, lab.get(1), lab.get(2))), LabIm2);
Mat img2 = new Mat();
Imgproc.cvtColor(LabIm2, img2, Imgproc.COLOR_Lab2BGR);
result[0] = img2;
result[1] = L2;
return result;
}
Weights of Fusion Process
The author mentioned that the design of the weight measures needs to consider the desired appearance of the restored output. Image restoration is tightly correlated with the color appearance, and as a result the measurable values such as salient features, local and global contrast or exposedness are difficult to integrate by naive per pixel blending, without risking to introduce artifacts, thus, the fusion technique is used, which will be introduced later.
Laplacian Contrast Weight
Laplacian contrst weight deals with global contrast by applying a Laplacian filter on each input luminance channel and computing the absolute value of the filter result.
public static Mat LaplacianContrast(Mat img) {
Mat laplacian = new Mat();
Imgproc.Laplacian(img, laplacian, img.depth());
Core.convertScaleAbs(laplacian, laplacian);
return laplacian;
}
It assigns high values to edges and texture. For the underwater restoration task, however, this weight is not sufficient to recover the contrast, mainly because it can not distinguish between a ramp and flat regions. To handle this problem, we searched for an additional contrast measurement that independently assess the local distribution.
Local Contrast Weight
Local contrast weight comprises the relation between each pixel and its neighborhoods average. It is computed as the standard deviation between pixel luminance level and the local average of its surrounding region: $$ W_{LC}(x,y)=\Vert I^{k}-I_{\omega_{hc}}^{k}\Vert $$ where $I^{k}$ represents the luminance channel of the input and $I_{\omega_{hc}}^{k}$ denotes the low-passed version of it. This filtered version is obtained by employing a small $5\times 5$ ($\frac{1}{16}[1,4,6,4,1]$) separable binomial kernel with the high frequency cut-off value $\omega_{hc}=\frac{\pi}{2.75}$. For small kernels the binomial kernel is a good approximation of its Gaussian counterpart, and it can be computed more effectively.
public static Mat LocalContrast(Mat img) {
double[] h = { 1.0 / 16.0, 4.0 / 16.0, 6.0 / 16.0, 4.0 / 16.0, 1.0 / 16.0 };
Mat mask = new Mat(h.length, h.length, img.type());
for (int i = 0; i < h.length; i++) {
for (int j = 0; j < h.length; j++) { mask.put(i, j, h[i] * h[j]); }
}
Mat localContrast = new Mat();
Imgproc.filter2D(img, localContrast, img.depth(), mask);
for (int i = 0; i < localContrast.rows(); i++) {
for (int j = 0; j < localContrast.cols(); j++) {
if (localContrast.get(i, j)[0] > Math.PI / 2.75) localContrast.put(i, j, Math.PI / 2.75);
}
}
Core.subtract(img, localContrast, localContrast);
return localContrast.mul(localContrast);
}
The impact of this measure is to strengthen the local contrast appearance since it advantages the transitions mainly in the highlighted and shadowed parts of the second input.
Saliency Weight
Saliency weight aims to emphasize the discriminating objects that lose their prominence in the underwater scene. The saliency detection method used in this paper is Frequency-tuned Salient Region Detection proposed by Achanta et al., which is a computationally efficient saliency algorithm:
public static Mat Saliency(Mat img) {
// blur image with a 3x3 or 5x5 Gaussian filter
Mat gfbgr = new Mat();
Imgproc.GaussianBlur(img, gfbgr, new Size(3, 3), 3);
// Perform sRGB to CIE Lab color space conversion
Mat LabIm = new Mat();
Imgproc.cvtColor(gfbgr, LabIm, Imgproc.COLOR_BGR2Lab);
// Compute Lab average values (note that in the paper this average is found from the un-blurred original image, but the results are quite similar)
List<Mat> lab = new ArrayList<Mat>();
Core.split(LabIm, lab);
Mat l = lab.get(0);
l.convertTo(l, CvType.CV_32F);
Mat a = lab.get(1);
a.convertTo(a, CvType.CV_32F);
Mat b = lab.get(2);
b.convertTo(b, CvType.CV_32F);
double lm = Core.mean(l).val[0];
double am = Core.mean(a).val[0];
double bm = Core.mean(b).val[0];
// Finally compute the saliency map
Mat sm = Mat.zeros(l.rows(), l.cols(), l.type());
Core.subtract(l, new Scalar(lm), l);
Core.subtract(a, new Scalar(am), a);
Core.subtract(b, new Scalar(bm), b);
Core.add(sm, l.mul(l), sm);
Core.add(sm, a.mul(a), sm);
Core.add(sm, b.mul(b), sm);
return sm;
}
However, the saliency map tends to favor highlighted areas. To increase the accuracy of results, the author introduces the exposedness map to protect the mid tones that might be altered in some specific cases.
Exposedness Weight
Exposedness weight evaluates how well a pixel is exposed. This assessed quality provides an estimator to preserve a constant appearance of the local contrast, that ideally is neither exaggerated nor understated. Commonly, the pixels tend to have a higher exposed appearance when their normalized values are close to the average value of 0.5. This weight map is expressed as a Gaussian-modeled distance to the average normalized range value (0.5): $$ W_{E}(x,y)=exp\bigg(-\frac{(I^{k}(x,y)-0.5)^{2}}{2\sigma^{2}}\bigg) $$ where $I^{k}(x,y)$ represents the value of the pixel location $(x,y)$ of input image $I^{k}$, while the standard deviation is set to $\sigma=0.25$, the Java implementation is shown below:
public static Mat Exposedness(Mat img) {
double sigma = 0.25;
double average = 0.5;
int rows = img.rows();
int cols = img.cols();
Mat exposedness = Mat.zeros(rows, cols, img.type());
// W = exp(-(img - aver).^2 / (2*sigma^2));
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
double value = Math.exp(-1.0 * Math.pow(img.get(i, j)[0] - average, 2.0) / (2 * Math.pow(sigma, 2.0)));
exposedness.put(i, j, value);
}
}
return exposedness;
}
This weight map will assign higher values to those tones with a distance close to zero, while pixels that are characterized by larger distances, are associated with the over-exposed and under-exposed regions. In consequence, this weight tempers the result of the saliency map and produces a well preserved appearance of the fused image.
Multi-scale Fusion
To yield consistent results, the author employs the normalized weight values $\bar{W}$ by constraining taht the sum at ecach pixel location of weight maps $W$ equals to one: $$ \bar{W}^{k}=\frac{W^{k}}{\sum_{k=1}^{K}W^{k}} $$ Then, generally, the enhanced image version $\mathcal{R}(x,y)$ is computed by fusing the defined inputs with the weight measures at every pixel location $(x,y)$: $$ \mathcal{R}(x,y)=\sum_{k=1}^{K}\bar{W}^{k}(x,y)\cdot I^{k}(x,y) $$ where $k$ is the index of the inputs, and $K=2$ in this paper. However, the naive approach to directly fuse the inputs and the weights introduces undesirable halos. To deal with this issue, the author introduces the Gaussian pyramid decomposition for weight maps and Laplacian pyramid decomposition for inputs. Considering that both Gaussian and Laplacian pyramids have same levels, the mixing process is performed at each level independently yielding the fused pyramid: $$ \mathcal{R}^{l}(x,y)=\sum_{k=1}^{K}G^{l}\big\{\bar{W}^{k}(x,y)\big\}\cdot L^{l}\big\{I^{k}(x,y)\big\} $$ where $l$ denotes the number of the pyramid levels ($l=5$ in this paper), $L^{l}$ is the Laplacian version while $G^{l}$ is the Gaussian version. Below is the Java implementation of these two pyramids and the reconstruction method:
public class Pyramid {
public static Mat[] GaussianPyramid(Mat img, int level) {
Mat[] gaussPyr = new Mat[level];
Mat mask = filterMask(img);
Mat tmp = new Mat();
Imgproc.filter2D(img, tmp, -1, mask);
gaussPyr[0] = tmp.clone();
Mat tmpImg = img.clone();
for (int i = 1; i < level; i++) {
// resize image
Imgproc.resize(tmpImg, tmpImg, new Size(), 0.5, 0.5, Imgproc.INTER_LINEAR);
// blur image
tmp = new Mat();
Imgproc.filter2D(tmpImg, tmp, -1, mask);
gaussPyr[i] = tmp.clone();
}
return gaussPyr;
}
public static Mat[] LaplacianPyramid(Mat img, int level) {
Mat[] lapPyr = new Mat[level];
//Mat mask = filterMask(img);
lapPyr[0] = img.clone();
Mat tmpImg = img.clone();
for (int i = 1; i < level; i++) {
// resize image
Imgproc.resize(tmpImg, tmpImg, new Size(), 0.5, 0.5, Imgproc.INTER_LINEAR);
lapPyr[i] = tmpImg.clone();
}
// calculate the DoG
for (int i = 0; i < level - 1; i++) {
Mat tmpPyr = new Mat();
Imgproc.resize(lapPyr[i + 1], tmpPyr, lapPyr[i].size(), 0, 0, Imgproc.INTER_LINEAR);
Core.subtract(lapPyr[i], tmpPyr, lapPyr[i]);
}
return lapPyr;
}
public static Mat PyramidReconstruct(Mat[] pyramid) {
int level = pyramid.length;
for (int i = level - 1; i > 0; i--) {
Mat tmpPyr = new Mat();
Imgproc.resize(pyramid[i], tmpPyr, pyramid[i - 1].size(), 0, 0, Imgproc.INTER_LINEAR);
Core.add(pyramid[i - 1], tmpPyr, pyramid[i - 1]);
}
return pyramid[0];
}
private static Mat filterMask(Mat img) {
double[] h = { 1.0 / 16.0, 4.0 / 16.0, 6.0 / 16.0, 4.0 / 16.0, 1.0 / 16.0 };
Mat mask = new Mat(h.length, h.length, img.type());
for (int i = 0; i < h.length; i++) {
for (int j = 0; j < h.length; j++) { mask.put(i, j, h[i] * h[j]); }
}
return mask;
}
}
And the fusion process codes is shown here:
// construct the gaussian pyramid for weight
int level = 5;
Mat[] weight1 = Pyramid.GaussianPyramid(w1, level);
Mat[] weight2 = Pyramid.GaussianPyramid(w2, level);
// construct the laplacian pyramid for input image channel
img1.convertTo(img1, CvType.CV_32F);
img2.convertTo(img2, CvType.CV_32F);
List<Mat> bgr = new ArrayList<Mat>();
Core.split(img1, bgr);
Mat[] bCnl1 = Pyramid.LaplacianPyramid(bgr.get(0), level);
Mat[] gCnl1 = Pyramid.LaplacianPyramid(bgr.get(1), level);
Mat[] rCnl1 = Pyramid.LaplacianPyramid(bgr.get(2), level);
Core.split(img2, bgr);
Mat[] bCnl2 = Pyramid.LaplacianPyramid(bgr.get(0), level);
Mat[] gCnl2 = Pyramid.LaplacianPyramid(bgr.get(1), level);
Mat[] rCnl2 = Pyramid.LaplacianPyramid(bgr.get(2), level);
// fusion process
Mat[] bCnl = new Mat[level];
Mat[] gCnl = new Mat[level];
Mat[] rCnl = new Mat[level];
for (int i = 0; i < level; i++) {
Mat cn = new Mat();
Core.add(bCnl1[i].mul(weight1[i]), bCnl2[i].mul(weight2[i]), cn);
bCnl[i] = cn.clone();
Core.add(gCnl1[i].mul(weight1[i]), gCnl2[i].mul(weight2[i]), cn);
gCnl[i] = cn.clone();
Core.add(rCnl1[i].mul(weight1[i]), rCnl2[i].mul(weight2[i]), cn);
rCnl[i] = cn.clone();
}
// reconstruct & output
Mat bChannel = Pyramid.PyramidReconstruct(bCnl);
Mat gChannel = Pyramid.PyramidReconstruct(gCnl);
Mat rChannel = Pyramid.PyramidReconstruct(rCnl);
Mat fusion = new Mat();
Core.merge(new ArrayList<Mat>(Arrays.asList(bChannel, gChannel, rChannel)), fusion);
fusion.convertTo(fusion, CvType.CV_8UC1);
Moreover, you can obtain the full java codes (also Matlab codes) in my GitHub repository: ImageEnhanceViaFusion and the Matlab codes are available here: [link]. Besides, for more details about this paper, you can read about the paper: Enhancing Underwater Images and Videos by Fusion.
Experiment Result
Heavy Distorted Fish Example Enhancement Examples with Normalized Weight Maps of Two Divers Enhancement Examples with Normalized Weight Maps of One Diver Other Results


--- layout: page permalink: /:basename/ ---
Rebuilds our military by eliminating the defense sequester and expanding military investment; provides Veterans with the ability to receive public VA treatment or attend the private doctor of their choice; protects our vital infrastructure from cyber-attack; establishes new screening procedures for immigration to ensure those who are admitted to our country support our people and our values


about bitcoin...about bitcoin...about bitcoin...about bitcoin...about bitcoin...about bitcoin...about bitcoin...
more about bit coin...more about bit coin...more about bit coin...more about bit coin...more about bit coin...more about bit coin...
about bitcoin...about bitcoin...about bitcoin...about bitcoin...about bitcoin...about bitcoin...about bitcoin...
more about bit coin...more about bit coin...more about bit coin...more about bit coin...more about bit coin...more about bit coin...


Click delete to delete current picture or Cancel to abort this modal…
Click delete to delete current Announcement or Cancel to abort this modal…
Click Save to save current Announcement or Cancel to abort this modal…
Click Save to save HOD Message or Cancel to abort this modal…
Click Save to save current Contact Information or Cancel to abort this modal…


Build server app on Google Apps Script.
Installation
Install: npm install --save @sheetbase/server
Usage:
// 1. import module
import { ServerModule } from "@sheetbase/server";
// 2. create an instance
export class App {
// the object
serverModule: ServerModule;
// initiate the instance
constructor() {
this.serverModule = new ServerModule(/* options */);
}
}
Options
| Name | Type | Description |
|---|---|---|
| apiKeys? | ApiKeys |
Multiple api keys |
| appName? | undefined | string |
The unique app name |
| failure? | undefined | function |
Handler for invalid api key |
| key? | undefined | string |
Single api key |
| trigger? | undefined | function |
Trigger every time an api key is used |
| views? | undefined | string |
The view template folder |
Lib
The Lib
class.
Lib properties
Lib methods
| Function | Returns type | Description |
|---|---|---|
| registerRoutes(routeEnabling?, middlewares?) | RouterService |
Expose the module routes |
| useAPIKeyMiddleware() | RoutingHandler |
Get the API key middleware |
registerRoutes(routeEnabling?, middlewares?)
Expose the module routes
Parameters
| Param | Type | Description |
|---|---|---|
| routeEnabling | true | DisabledRoutes |
|
| middlewares | Middlewares | RouteMiddlewares |
Returns
useAPIKeyMiddleware()
Get the API key middleware
Returns
Routing
ServerModule provides REST API endpoints allowing clients to access server resources. Theses enpoints are not exposed by default, to expose the endpoints:
ServerModule.registerRoutes(routeEnabling?);
Errors
ServerModule returns these routing errors, you may use the error code to customize the message:
server/no-app-name
: No unique "appName" providedRoutes
Routes overview
| Route | Method | Disabled | Description |
|---|---|---|---|
| /logging | PUT |
true |
Set a server log |
| /system | GET |
Get the system infomation |
Routes detail
PUT
/logging
DISABLED
Set a server log
Request body
| Name | Type | Description |
|---|---|---|
| level | LoggingLevel |
|
| value | LoggingValue |
Response
void
GET
/system
Get the system infomation
Response
object
@sheetbase/server is released under the MIT license.
Generated using TypeDoc


The URL you have requested is not available. This is most likely a bad link, although it is possible you are behind an oppressive firewall, under a large boulder, or have broken out of the Cantor Continuum or found a logical inconsistency in generally accepted mathematics.


Amazon Route 53 AliasTarget Property
AliasTarget
is a property of the AWS::Route53::RecordSet resource.
For more information about alias resource record sets, see Creating Alias Resource Record Sets in the Amazon Route 53 Developer Guide.
Syntax
JSON
{ "DNSName" :
String
, "EvaluateTargetHealth" :Boolean
, "HostedZoneId" :String
}
YAML
DNSName:
String
EvaluateTargetHealth:Boolean
HostedZoneId:String
Properties
DNSName
-
The DNS name of the load balancer, the domain name of the CloudFront distribution, the website endpoint of the Amazon S3 bucket, or another record set in the same hosted zone that is the target of the alias.
Type: String
Required: Yes
EvaluateTargetHealth
-
Whether Route 53 checks the health of the resource record sets in the alias target when responding to DNS queries. For more information about using this property, see EvaluateTargetHealth in the Amazon Route 53 API Reference.
Type: Boolean
Required: No
HostedZoneId
-
The hosted zone ID. For load balancers, use the canonical hosted zone ID of the load balancer. For Amazon S3, use the hosted zone ID for your bucket's website endpoint. For CloudFront, use
Z2FDTNDATAQYW2
. For a list of hosted zone IDs of other services, see the relevant service in the AWS Regions and Endpoints.Type: String
Required: Yes


Unity Walk for Guru Nanak in Texas
All faith traditions gathered to do prayers and do a Unity Walk together to celebrate the 550th Birth Anniversary of the...
Nov 9, 2019, Flower Mound, Texas: All faith traditions gathered to do prayers and do a Unity Walk together to celebrate the 550th Birth Anniversary of the founder of Sikh faith Guru Nanak.
Clergy and faith representatives from Hindu, Christian, Islam, Jain, Zoroastrian, Jewish, Buddhist, Baha'i and Urantia Book traditions participated in this event, along with people of different racial and cultural backgrounds.
Flower Mound Police Chief Any Kancel was the guest of honor. Also representatives of Susan G Komen (Brest Cancer fund raising organization) kicked off the Unity Walk and the participants raised $2500 for this cause.
It was a beautiful sunny day and everyone enjoyed the langar provided by Maharaja Restaurant of Plano, Texas.
This effort was lead by Gurdwara Nishkam Seva of Irving, Texas but sangat from other local Gurdwara joined this joyous celebration of around 400 people.
Prominent interfaith organizations Faith Forward Dallas and Interfaith Council of Thanksgiving Foundation, Dallas were co-sponsors of this event.


WITNESS LIST State Affairs Committee April 13, 1999-2:00P HB 1700 For: Biedrzycki, Carol (Self and Texas Ratepayers Organization to Save Energy) Briesemeister, Janee (Consumers Union Southwest Regional Office) Chapman, Randall (Self and Tx Legal Services Center) On: Flores, Henry (Texas Telephone Association) McClellan, Suzi (Office of Public Utility Counsel) HB 1701 For: Banta, Steve (GTE) Black Jr, Albert C. (Self) Chavez, Manny (Self and Harvard Manufacturing-Texas) Cole, David (Self and Southwestern Bell Telephone) Crowley, Maria E. (Self and TDY Personal Services, Inc, dba TDY temporaries) Gilmer, Gary C. (Self and Texas Telephone Association) Gunn, Joe D. (Texas AFL-CIO) Lundquist, Jeff (Self) Pinkus, David (Small Business United of Texas) Thomas, Dennis (Self) Against: Briesemeister, Janee (Consumers Union Southwest Regional Office) Krabill, Nancy (Self) Mann, Gary L. (Texas Association of Long Distance Telephone Companies (TEXALTEL)) Ratliff, Thomas (AT&T Wireless Services; Texas Assoc of Paging Services) Reeves, Kelsi (Time Warner Telecom) Rutan II, Edwin P. (AT&T) On: McClellan, Suzi (Office of Public Utility Counsel) Muscat, Richard (The Greater Harris County 9-1-1 Emergency Network) Wood III, Pat (Public Utility Commission of Texas) HB 1701 Committee Substitute (Wolens) Against: Ruley, Michael (Self) HB 2690 For: Richards, Don R (Self and Telephone Cooperatives and Small Telephone Companies) HB 2692 For: Gilmer, Gary C (Self and Texas Telephone Association) HB 2726 For: Briesemeister, Janee (Consumers Union Southwest Regional Office) SB 86 For: Briesemeister, Janee (Consumers Union Southwest Regional Office) On: Jewell, Michael (AT&T) McClellan, Suzi (Office of Public Utility Counsel) Wood, Pat (Public Utility Commission) SB 86 Committee Substitute (Danburg) For: Biedrzycki, Carol (Self and Texas Ratepayers' Organization to Save Energy) Chapman, Randy (Self and Tx Legal Services Center) On: Flores, Henry (Texas Telephone Association)


Bulk Whitelist Importer
Panel for bulk importing KYC Whitelist Contributors
Add to the Whitelist Bulk Addition
Contributor info
POC Statements
Add all KYC and Tiered Users
Go To Allocations
Go To Whitelist Simple Panel


Routes
Route
Expected request
Response on success
Response on fail
Description
Method
URL
Header
Body
Code
Header
Body
Code
Header
Body


Project 01 - Lightning
I decide to work on the lightning topic because it is one of the most spectacular natural phenomena. It will be cool if I can use coding to recreate it. In the system, the user will use a mouse to control the character to avoid lightning and fire tree branches. The most complicated code I have to deal with in this project is to show lightning and let the system know about the tree's lightning collision. Technically, the lightning and tree have some similar parts. Both of them have random branches. But visually, lightning is an active element. Trees are static elements. In nature, lightning can burn the tree and hurt people. So I decided to show these interactions in my system. The character will die immediately when lightning hits people. The fire tree branches will occur and drop down when lightning hits the tree.  In the future, thunder should be considered in this project, normally lightning always occurs with thunder. So I hope I can add sound to my system to make it more realistic.
Programming
This is the first time using processing to build interactive prototyping. It is a bit hard for me to build the elements. I find some tutorials it is hard to understand initially, but I keep watching more tutorials. It is kind of makes me understand the processing.
And there are so many elements in the project. So I have to split those elements into different files. It makes me also understand how to use the class function in processing.


Lucy Locket lost her pocket, Kitty Fisher found it;
code > { block } ;
Not a penny was there in it, Only ribbon round it.


About
I am a PhD candidate in Northwestern University’s program in Technology and Social Behavior, a dual program in computer science and communication studies. My work centers on mediated information disclosure between strangers in emergent relationships. Currently, I am focusing on how limited information affects interest in wanting to get to know someone.
At Northwestern, I am a member of the Social Media Lab, led by Professor Jeremy Birnholtz.
Projects
CUES. Do system cues affect impression?
Profiles on mobile apps designed for connecting nearby others have some fields, or cues, that are updated and controlled by the system (e.g. distance, availability, mutual friends). Do these cues have an effect on impressions? How are these cues involved in impression formation as a process?
VGI. What does where you've been say?
Millions of users generate and post content daily. What is the relationship between their offline context while posting (time, place) and their content in the media stream?
LBSA. How do people meet through apps?
A growing number of apps connect nearby others for near-immediate in-person interaction, ranging from coffee to casual sex. How do users protray themselves to others in these spaces? What are in-person interactions like with someone you've just "met"?
CSGC. How can we support novice designers online?
Novice civic designers face multiple challenges as they embark on tackling real world problems, including learning the design process and participating in critiques. How can a computer-supported group critique system fit into novice designer studios?
CV
Education
-
Northwestern University, PhD in Technology and Social Behavior, 2012-present
-
UW-Madison, M.A. in Ethnomusicology, 2009-2012
-
Brown University, B.A. in Ethnomusicology, 2005-2009
Papers and Presentations
-
Fitzpatrick, C., Birnholtz, J., Gergle, D. “People, Places, and Perceptions: Effects of Location Check-in Awareness on Impressions of Strangers.” Mobile HCI 2016. Florence, Italy, September 2016.
- Fitzpatrick, C., Birnholtz, J., Brubaker, J.R.  Fukuoka, Japan, June 2016. *best paper award
-
Fitzpatrick, C., Birnholtz, J., Brubaker, J.R. “Social and Personal Disclosure in a Location-Based Real Time Dating App.” HICSS 2015. *best paper award nomination
-
Birnholtz, J., Fitzpatrick, C., Handel, M., Brubaker, J. “Identity, Identification, and Identifiability: The Language of Self-Presentation on a Location-Based Mobile Dating App.” Mobile HCI 2014. Toronto, September 2014.
-
Easterday, M., Lewis, D., Fitzpatrick, C., Gerber, E. “Computer Supported Novice Group Critique.” DIS 2014. Vancouver, BC, Canada, June 2014.
-
Fitzpatrick, C., Hope, A., Barhumi, S., Krupnikov, Y., Easterday, M. “Perspective Taking, Political Ideologies, and Digital Games.” Proceedings in 3rd Annual International Symposium on Digital Ethics. Chicago, IL, October 2013.
-
Beheshti, E., Fitzpatrick, C., Hope, A., Piper, A.M., & Horn, M.S. Circuit in Pieces: Understanding Electricity from Electrons to Light Bulbs. Proc. Human Factors in Computing Systems Conference (extended abstracts) CHI’13. Paris, France, April 2013.
- Fitzpatrick, C. “A ‘New’ Sociability: Etiquette, Practices and Interactions with Mobile Technologies.” Midwest Chapter of the Society for Ethnomusicology Annual Meeting. Bowling Green, OH, April 2011.
- Fitzpatrick, C. “The Female Body, Interrogation, and War: Readings of and Reactions to Rihanna’s Russian Roulette and Hard.” Midwest Graduate Music Conference. Madison, WI, March 2011.
- Fitzpatrick, C. “Scrobbling Identity: Impression Management and Last.fm.” Northeast Chapter of the Society for Ethnomusicology Annual Meeting. New Haven, CT, April 2009.
Teaching
- Teaching Assistant, Northwestern University, Spring 2014, Fall 2015
- Teaching Assistant, UW-Madison, Fall 2010 – Spring 2012
- Teaching Assistant, Department of Music, Brown University, Spring 2007- Summer 2009
Awards and Honors
- NSF GK12 Reach for the Stars Fellow, Northwestern University, 2014-2015
- US Department of Education Foreign Language and Area Studies Fellow, UW-Madison, 2010-2011
- University Fellow, UW-Madison, 2009-2010
- Vilas Welcome Award, UW-Madison, 2009
- Rose Rosengard Subotnik Prize, Brown University, 2009
- Best Undergraduate Thesis, Department of Science and Technology Studies, Brown University, 2009
- Buxtehude Premium, Brown University, 2008
Lab Mates
Madeline Smith
Madeline is a PhD Candidate in the Technology and Social Behavior joint program in Computer Science and Communication. Her research currently focuses on relational, supportive, and deceptive aspects of social media.
Visit »
Matthew Heston
Matthew Heston is a PhD student in the Technology and Social Behavior program. He is interested in social interactions between members of groups and organizations online.
Visit »
Mike DeVito
Mike DeVito is a doctoral student in the Media, Technology, and Society program. His research centers around the cognitive effects of new media on human social identity and information flows.
Visit »


Dodge Master
This game is under construction. If you'd like to see a game like this come to fruition please donate below.
The goal of the game is to make it to the make it to the guy with the riddle on his chest across the map. Get as close to him as possible
Use the arrow keys to maneuver the main character around the screen. Try not to hit the robots.
If you want to see how a game like this is made you may e-mail me at<EMAIL_ADDRESS>Click here to start the game.


§103-4 Expenditure from general appropriation unlawful, when. Whenever a specific appropriation is made for a particular object, it shall be unlawful to make any expenditure from a general appropriation which would otherwise cover such particular object. [L 1909, c 62, §5; RL 1925, §1481; RL 1935, §111; RL 1945, §368; RL 1955, §9-3; HRS §103-4]
Case Notes
Use of prison labor on project exhausted of funds held proper. 8 H. 129.
Referred to: 39 H. 308, 321.


Add a suggestion for your city!
{{idea.name}}
{{idea.yesVotes}}
{{idea.noVotes}}
{{idea.description}}
Successfully implemented ideas
{{idea.name}}
{{idea.description}}
×
New idea for your city
Give your idea a nema
Describe your awesome idea


Andy Greenhaw
Home
Portfolio
Contact
Need help on an upcoming project?
Whether you need content for your digital strategy, an animation that explains your mission, or you'd like to consider hiring me full-time, enter your name, email, and whatever you need in the form below and I'll respond as soon as I can.
Name
Email
How Can I Help?


Feel free to donate large portions of gold, cash, and other valuables to the caring Secretcrimefighter Works, an organiztion sure to put your money to good use.
Click on a page
any page, if you dare.
The content is rare,
and sure to scare.
It could take you anywhere.
But when you get there,
you'll begin to care.
About things the page will soon share.
So dare.
Like a care bear.
~ Composed and Published by Secretcrimefighter Girl
Feel free to donate large portions of gold, cash, and other valuables to the caring Secretcrimefighter Works, an organiztion sure to put your money to good use.


 I'm going to do my best to fill your mind full of all kinds of technobabble.
How encrypted do you like your software? A little? A lot? Perhaps just enough? Maybe you've never really thought about it before now. Encryption is currently an issue in DC.
The issue on this debate comes from the FBI wanting to have a way to bypass encryption so that they can more easily deal with security issues. Tech companies, however, don't want to limit the amount of encryption they do for security's sake. Many people use the internet for things that would be sensative because they believe it to be safe. The tech world doesn't want the government to affect it negatively.
Here is a current article on the issue


 Find out how to use curl by reading the curl.1 man page or the MANUAL document. Find out how to install Curl by reading the INSTALL document.
libcurl is the library curl is using to do its job. It is readily available to be used by your software. Read the libcurl.3 man page to learn how!
You find answers to the most frequent questions we get in the FAQ document.
Study the COPYING file for distribution terms and similar. If you distribute curl binaries or other binaries that involve libcurl, you might enjoy the LICENSE-MIXING document.
CONTACT
If you have problems, questions, ideas or suggestions, please contact us by posting to a suitable mailing list. See http://curl.haxx.se/mail/
All contributors to the project are listed in the THANKS document.
WEB SITE
Visit the curl web site for the latest news and downloads:
http://curl.haxx.se/
GIT
To download the very latest source off the GIT server do this:
git clone git://github.com/bagder/curl.git
(you'll get a directory named curl created, filled with the source code)
NOTICE
Curl contains pieces of source code that is Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan. This notice is included here to comply with the distribution terms.


Just a little bit more to read before the experiment...this is an Informed Consent Form. Please read and understand the statements below.
- I understand that my taking part in the study is voluntary and that I am free to leave the study at any time, without giving any reason. I understand that my medical care or legal rights will not be affected in any way.
- I agree to the use and release of study-related information about me for the purposes described in this Informed Consent Form.
- I agree to the re-use of data collected in this study for future studies in a de-identified manner as described in this Informed Consent form.
- I understand that my consent continues until and unless I withdraw my consent that can be done at any time by giving notice to the investigator. I understand that if I withdraw my consent I will not be able to continue to take part in the study.
- I understand that if I withdraw consent, the study researchers will no longer use or release information that identifies me in connection with the study unless it is needed to keep the scientific quality of the study. I understand that if I withdraw consent the study researchers may still use any study-related information about me that was collected before I withdrew consent.
- I have read and I understand the information provided in this Informed Consent Form. I have had the opportunity to ask questions and have had these questions answered satisfactorily.
- I have had time to consider the information provided in this Informed Consent Form to consider answers to my questions, and to consider whether I wish to take part in the study.
If you understand the statements above, and freely consent to participate in the study, press [Space] to begin the experiment.


Big Data Society
CLOSE
Tutorial Videos
Workshops
Python Workshops
Copyright © 2022 BigDataSoc.
Big Data Society
☰
  Tutotrial Videos

Workshops
Python Workshops
Python Workshop I:
Ambreen Hanif
Python Workshop I Github codes
: Learning basics of the Python programming language
Python Workshop II:
Ambreen Hanif
Python Workshop II Github codes
: Learning how to import and use Python packages.
Python Workshop III:
Fariba Lotfi
Python Workshop III Github codes
: Learning how to Define functions, classes, and use them in an easy way.


Huawei sells folding smartphone with no Google after US ban
Huawei has been scrambling to cope with US curbs on sales of technology to the company.
Chinese tech giant Huawei has begun selling its first foldable smartphone without Google apps or US-made processor chips following sanctions imposed by Washington.
The Mate X went on sale in China and competes with Samsung’s Galaxy fold.
Huawei has announced no plans for sales outside China.
The Mate X uses Huawei’s own processor chips and Chinese music and other apps instead of Google services.


LUGOLS STRONG IODINE- iodine and potassium iodide solution
CooperSurgical, Inc.
Disclaimer: This drug has not been found by FDA to be safe and effective, and this labeling has not been approved by FDA. For further information about unapproved drugs, click here.
LUGOL’S is an aqueous solution containing Iodine 5%, and potassium iodide 10%, w/v (LUGOL’s Solution). LUGOL’s is a transparent liquid with a deep brown color and the odor of iodine.
LUGOL’s is a topical antiseptic. Strong Iodine Solution is a germicide and fungicide. LUGOL’s is preservative-free.
Iodide preparations are contraindicated in patients with known sensitivity to the drugs.
Keep tightly closed. Protect from light. DO NOT use if seal has been broken. Store at controlled room temperature 15°-30°C (59°-86°F).
Opened containers with unused portions of product and applicator swabs containing residual product should be placed in a suitable, dry container for disposal following local hazardous waste practices. Waste containing LUGOL’S should not be subjected to any thermal process whether intended for destruction or recycling purposes.
|
LUGOLS STRONG IODINE
iodine and potassium iodide solution | ||||||||||||||||||||
| ||||||||||||||||||||
| ||||||||||||||||||||
| ||||||||||||||||||||
|
| Labeler - CooperSurgical, Inc. (801895244) |


&$556;
Front Of Aden Castle
Aden Town Square
Front of the Narsell Fortress
Front of the Bayou Fortress


Contact Us
|
My Account
Home
Register
Directory
Geneology
Search
Linda Ferris-White
Linda Ferris-White (2015)
Return to the Ferris Family page


Schedule Generator
In
order to populate your calendar with events, we require you to upload the PDF emailed to you by
Ms. Jackman at the beginning of the year containing your schedule. It should look like the image
to the left. Please click Browse, select your PDF, and then click submit. You will be prompted
to sign in with Google so that we can access your Calendar.
About
This website, made by Christopher Milan for a Computer Science 2 Final Project, takes a PDF schedule from its user
and converts it into Google Calendar events. These can be easily accessed
from Google Calendar and then imported into your prefered calendar service. PDFs are
processed and converted by the websites' backend, written in Golang, which takes advantage of
Google's API for Google Calendar. The backend is hosted on GitHub.com, and can be accessed by
clicking on "Backend" below. To learn more about running it yourself, check out the GitHub
repository by clicking "Repository" below, where instructions are given on how to set it up.


The ABO blood groups are defined by the presence or absence of two inherited molecules, or antigens, A and B, that are present on the surface of red blood cells. You inherit either A or B antigens (group A or B), both A and B antigens (group AB), or neither antigen (group O).
Discovered 40 years after the identification of ABO blood groups, the Rh factor is the second most significant blood-group system in human-blood transfusion. The presence or absence of the D antigen on a red cell determines whether you are Rh+ or Rh-.


Hi! If you want to see the comments and let my Google Analytics (aka my
sense of self-importance) know that you're visiting this site, let me save a
cookie. Otherwise, don't allow it. No hard feelings. I promise. I'll save
your choice for a year.
Save a cookie for me.
Please don't.


Red Hat Practical Exercise: Todo App
todos
Invalid username and password.
You have been logged out.
Username
Password


Update: Antonio Brown Apologizes to Robert Kraft After Patriots Drama
by VladTVUpdate 11/19/2019 12:58pm:
Antonio Brown has been facing issues with the NFL since being dropped from the New England Patriots, mainly because of allegations that surfaced while he was briefly on the team. Now, Brown has taken to Instagram to apologize to Robert Kraft for all the issues that went down.
AB said “Mr.Kraft I apologize sincerely to you and your organization! All I wanted to be was an asset to the organization; sorry for the bad media and the drama! Thank you sincerely AB."
Original 09/24/2019 3:34pm:
Antonio Brown was previously released by the New England Patriots this past Friday, and now it was revealed that Patriots allegedly have refused to put out the first part of the AB’s $9 million signing bonus.
This may come back to bite the Patriots though, because Brown did not commit a “forfeitable breach” under his contract. Reports have noted that Brown’s minimum pay from the Patriots is set to be $283,333.
source: NBC Sports


Things to do before I die
- Make vanilla pudding. Put in mayo jar. Eat in public.
- Hire two private investigators. Get them to follow each other.
- Wear shirt that says "Life." Hand out lemons on street corner.
- Change name to Simon. Speak in third person.
- Get into a crowded elevator and say "I bet you're all wondering why I gathered you here today."
- Buy a parrot. Teach the parrot to say "Help! I've been turned into a parrot!"
Diabolical plan of the day
-
Buy four pigs
-
Paint number 1, 2, 3 & 5 on their backs.
-
Release them in Wal-Mart.
-
Sit back and watch security search for number 4.


JEEPERS CREEPERS (2001) Reviewed by Jerry Saravia September 21st, 2001
I might give more credit than deserved but I must declare that "Jeepers Creepers" is, despite lapses in logic and plot holes big enough to drive a semi through, alternately chilling and frightfully good entertainment. It is a hark back to movies like "Fright Night" and "Return of the Living Dead" where good, scary thrills and chills, not to mention characters we care about, were central to our enjoyment. The film begins in an ominous tone recalling the open roadways out in the middle of nowhere of "The Texas Chainsaw Massacre." We see two kids in the car, Trish (Gina Philips) and her younger brother, Darryl (Justin Long), leaving for spring break from college and headed home. There is the usual banter between siblings about former boyfriends, dirty laundry, parents and urban legends. One particular legend is about a prom couple that died out in the same road they are driving on - they were found minus a head and a body.  The truck disappears but later, Darryl spots a cloaked figure dumping bodybags down a silo. The upshot is that the very same truck that almost killed them is also there. Instead of continuing on their way home, Darryl decides to go back to the church and find if anyone is alive in those bodybags. What happens next is often terrifying, eerie and blackly comical - almost a horror-comedy but not quite.
"Jeepers Creepers" is sometimes uneven as it awkwardly balances itself between humor and horror. The first half-hour, however, is great, terrifically chilling fun since we are not sure where the movie is headed. When Darryl ends up in the basement of the church, he finds bodies stitched together and decorating the walls like the Sistine Chapel. We sense the killer is out there and that he could be in the basement. The question is: what is this killer? In the credits, he is known as the Creeper whose murderous strategy is taken from the lyrics of the song "Jeepers Creepers." He is also able to drive a mean truck at fast speeds and materialize from one place to another.
Director Victor Salva ("Powder") does a splendid job of crafting what would normally be a poor man's Clive Barker freakshow. Salva knows how to milk suspense out of deserted roadways, dark basements, silhouetted scarecrows, black crows, and so on. Most of the movie is saturated in atmospheric details, a nice respite from slasher film cliches and postmodernist winking. There is a great moment where the Creeper assumes a scarecrow position. I also like the constant birdcalls from the crows, a reminder that death is nearby.
Surprisingly, the acting by the two leads is astonishingly good. We are not talking about prettified teens from the Freddie Prinze and Sarah Michelle Gellar school. Gina Philips and Justin Long create credible teenagers facing an unknowing, evil force. Their bickering, bantering moments are upstaged by moments where they simply talk to each other, understanding and sizing each other up. The film spends at least fifteen to twenty minutes establishing their characters and that is a noble achievement in this day and age of soulless teen characters who make self-reverential horror movie statements.
"Jeepers Creepers" would have benefitted from tighter pacing towards its conclusion, less of a Psychic Lady character who gives away too much information, and less of the cops who try to kill the Creeper at the police station. I would have loved to learn more about the bodies that decorate the walls of the church and more of the Creeper's superhuman abilities. We are unsure of what to make of this creature nor do we know its ultimate goal. But that is part of the fun of "Jeepers Creepers" - its vagueness supplies the chills, especially in the final, haunting shot. Watch out for those peepers!
For more reviews, check out JERRY AT THE MOVIES at http://moviething.com/members/movies/faust/JATMindex.shtml
E-mail me with any questions, comments or general complaints at<EMAIL_ADDRESS>or at<EMAIL_ADDRESS>========== X-RAMR-ID: 29542 X-Language: en X-RT-ReviewID: 251125 X-RT-TitleID: 1109558 X-RT-SourceID: 875 X-RT-AuthorID: 1314
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Tl;dr: from about 9:30pm to 12:30am last night, our website was unreachable and we weren’t sending out any notifications. Our API stayed up nearly the whole time thanks to an automatic failover.
We had our first major outage last night. We want to apologize to all of our customers for this outage, and we’re going to continue to work to make the Ratchet.io service stable, reliable, and performant.
What follows is a timeline of events, and a summary of what went wrong, what went right, and what we’re doing to address what went wrong.
Background
First some background: our infrastructure is currently hosted at Softlayer and layed out like this (simplified):
That is:
- our primary cluster of servers is in San Jose
- all web traffic (ratchet.io / www.ratchet.io) is handled by lb2
- all API traffic (submit.ratchet.io) is handled by lb1
- lb3 (in Singapore) and lb4 (Amsterdam) are ready to go but not in use yet (more on this below), providing failover and faster API response times to customers outside of the Americas.
We’ve been in the process of setting up lb3 and lb4, along with some fancy DNS functionality from Dyn, to provide redundancy and faster response times to our customers outside of the Americas. Each is running a stripped-down version of our infrastructure, including:
- a frontend web server (nginx)
- two instsances of our node.js API server
- a partial database slave (for validating access tokens)
- our offline loading process (soon to be open-sourced!), for doing async writes to the active master database.
Switching DNS to Dyn requires changing the nameservers, which can take “up to 48 hours”. At the start of this story, it’s been about 36 hours. To play it safe, after testing out Dyn on a separate domain, we configured it to have the same settings as we had before – lb3 and lb4 are not in play yet.
Timeline
Now the (abbreviated) timeline. All times are PST.
9:30pm: Cory got an alert from Pingdom that our website (ratchet.io) was down. He tried visiting it but it wouldn’t load (just hung). Remembering the pending DNS change, he immediately checked DNS propagation and saw that ratchet.io was pointing at the wrong load balancer – lb1 (the API tier), not lb2.
Cory and Sergei investigated. The A record for ratchet.io showed as correct in Dyn, but DNS was resolving incorrectly.
9:47pm: Cory and Sergei looked at @SoftlayerNotify and saw that there was an issue underway with one of the routers in the San Jose data center.
9:49pm: Website accessible by its IP address.
9:51pm: No longer accessible by IP.
10:05pm: Twitter search for “softlayer outage” shows other people being affected.
10:05pm: API tier (submit.ratchet.io) appears to be working. Sergei verifies that it’s hitting lb3 (in Singapore).
You might notice that we said before that lb3 wasn’t supposed to be in service yet. What appeared to have happened DNS had automatically failed over to lb3 (since lb1 was down because of the Softlayer outage). We had set something like this up before when testing out Dyn, but it wasn’t supposed to be active yet. Fortunately, lb3 was ready to go and handled all of our API load just fine.
10:22pm: Sergei tries fiddling with the Dyn configuration to see if anything helps.
10:35pm: Sergei starts trying to get ahold Dyn
10:58pm: Softlayer posts that “13 out of 14 rows of servers are online”. We must be in the 14th, because we’re still unreachable at this point. Brian tries hard-rebooting the ‘dev’ server to see if it helps. It doesn’t.
11:15pm: Sergei gets a call from Dyn, who tells him that the problem was a “stale Real-Time Traffic Manager configuration” and they’re looking into it.
11:54pm: @SoftlayerNotify posts that “all servers are online however some intermittent problems remain”
11:55pm: Sergei notices that the A record for ratchet.io in the Dyn interface appears to have been deleted, and he can’t add it back.
12:00am: Brian sees that ratchet.io is working again. Cory notices that API calls are hitting lb2, causing them to hit the old, non-optimized API handling code on our web tier, overloading them and causing the website to hang. Frequent process restarts minimize the impact.
12:19am: Sergei gets an email back from Dyn saying that they’re still looking into the problem.
12:28am: Dyn calls to say they were able to fix everything. Sergei confirms. lb3 and lb4 are now fully utilized.
12:42am: Brian tweets that all systems are stable.
2:58am: Softlayer tweets that they’re about to run some code upgrades on the troubled router, which will cause some public network disruption.
4:00am:- A customer reports connectivity issues to ratchet.io
4:10am: Softlayer tweets that the troubled router is finally stable.
So what happened here?
- Softlayer experienced a network outage, causing our servers in San Jose to be intermittently, then fully, unreachable
- This triggered a DNS failover controlled by a stale Dyn configuration, which cascaded into a broken set of DNS records
- After about 3 hours, our San Jose servers came back online, and about 30 minutes after that, the DNS issue was resolved.
What went right
- We were notified of the problem by our backup monitoring service, Pingdom. (We’re using Nagios as our primary, but it runs inside of San Jose.)
- Dyn’s DNS failover did work, even though wasn’t really supposed to be turned on. Our logs don’t show any large gaps in customer data being received.
- A single machine (lb3) was able to handle all of our API traffic during the outage.
- The API tier was able to handle a master-offline situation.
- When San Jose came back online, data processing quickly caught up, notifications were sent, and the system was stable.
- Our team came together, stayed mostly calm, and did everything we reasonably could to restore service as quickly as possible.
As a bonus, our Singapore and Amsterdam servers are now in service.
What went wrong
- Parts of our service were unusable for a long period of time
- Notifications for new errors, etc. weren’t sent
- The web app didn’t load, and there was no maintenance page.
- status.ratchet.io didn’t show useful information
- Even though the Softlayer private network was at least partially accessible, we couldn’t access it because we only had one way in (‘dev’, in San Jose).
- The web tier got crushed trying to handle the API load with its old code.
Action items
In the short term (most of this will get done today):
1b. Set up a web server in a separate datacenter to serve a maintenance page.
1c. Add meta-level checks to status.ratchet.io. It currently gets data pushed from Nagios, but this isn’t helpful when San Jose is entirely unreachable.
2. Add another ‘dev’-like machine that we can use to administer servers, deploy code, etc. if San Jose is unreachable
3. Remove that old code, and make it an error if any API traffic hits the web tier.
And longer term:
1a. Add a host master standby in another datacenter for fast failover. If an episode like last night’s happens again, this will let us get notifications back online in a few minutes instead of a few hours.
1b. Set up a read-only web tier in another datacenter
Conclusion
We hope this was, if nothing else, an interesting look into our infrastructure, and to the journey of building a highly-available we service.
If you have any questions about the outage or otherwise, let us know in the comments or email us at support@ratchet.io


{% extends "global/Page.html" %} {% load otree static %} {% block title %} Informed Consent {% endblock %} {% block styles %} {% endblock %} {% block scripts %} {% endblock %} {% block content %}
Thank you for volunteering to participate in this study.
1. WHO IS DOING THE STUDY?
John Paul F. Mintz, School of Advanced Air and Space Studies (SAASS),<PHONE_NUMBER>
Dr. David C. Benson, SAASS,<PHONE_NUMBER>
2.  To study decision-making against various opponents in a strategic game environment.
3. WHAT WILL YOU BE ASKED TO DO? On this computer, you will be asked to: a) conduct a short questionnaire, b) play a few rounds in simple games, and c) answer a post-game questionnaire. No one other than the research team will be observing your responses and there is no video or audio recording. You will play by yourself.
If you volunteer to take part in this study, you will be one of about 50 people to do so. After playing the game, you will be asked to answer a few questions about your experience.
4. HOW LONG WILL IT LAST? Approximately ten minutes.
5. WHAT ARE THE POSSIBLE RISKS AND DISCOMFORTS? To the best of our knowledge, the things you will be doing have no more risk of harm than you would experience in everyday life. Your answers will not be personally identifiable, so there is no risk of personal embarrassment or harm. During your participation in the game, you may not have full and accurate access to all information you would like to make your decisions. Upon completion of your participation, you will be debriefed on these items as they apply to this study.
6. DO YOU HAVE TO TAKE PART IN THE STUDY? No
7. CAN YOUR TAKING PART IN THE STUDY END EARLY? Yes, you may decide at any time that you no longer want to continue.
8. IF YOU DON’T WANT TO TAKE PART IN THE STUDY, ARE THERE OTHER CHOICES? You may choose not to participate.
9. WILL YOU RECEIVE ANY REWARDS OR PAYMENT FOR TAKING PART IN THIS STUDY? No
10. WHO WILL SEE THE INFORMATION THAT YOU GIVE? This study is anonymous. That means that no one, not even members of the research team, will know which information you give came from you. USAF Surgeon General’s Research Oversight and Compliance Division (AFMSA/SGE-C) and other DoD personnel may inspect the study's records, but will not be able to identify you.
11. WHAT IF YOU HAVE QUESTIONS, SUGGESTIONS, CONCERNS OR COMPLAINTS? Before you decide whether to continue, please ask any questions you have. Later, if you have questions, suggestions, concerns, or complaints about the study, you can contact the investigator, Lt Col Mintz at<PHONE_NUMBER> or<EMAIL_ADDRESS>If you have questions about your rights as a volunteer in this research or believe you were harmed as a result of participation, contact the AFRL IRB Administrator at<PHONE_NUMBER> (DSN:<PHONE_NUMBER>) or at<EMAIL_ADDRESS>This study has been approved under AFRL/AU IRB protocol number FWr20190020H and Air University Survey Control Number AUFELLOW1201.
Non-disclosure: Please do not discuss this study with anyone potential particpants until told by the researcher it is acceptable to do so (likely in a week or two).
Please click the green arrow button to indicate your willingness to participate in this research study.


Supervised discretization. When we reflect on the unsupervised ranges,
some are too small and some needlessly complicate the data and some
are very weak at selecting for the “best” rows. So lets combine the
small and complex ones and rank the remaining by how well they select for best.
function eg.super( data,bests,rests,fun,rows,best,old,z)
data = Data(the.file)
bests,rests = data:bestOrRest()
rests = l.many(rests, the.rest*#bests)
fun = function(xy) return {xy=xy,z=xy.y:score("bests", #bests, #rests)} end
old=""
for _,xy in pairs(map(data:contrasts({rests=rests,bests=bests}),fun)) do
z=xy.z
xy=xy.xy
if xy.name ~= old then print("\n"..xy.name) end
old = xy.name
print(xy.y.n,
fmt("%-20s",o(xy.y._has)),
fmt("%-20s",xy),
l.rnd(z,3)) end
return true end
local function report(num,rows1,rows2)
for _,rows in pairs{rows1,rows2} do
for _,row in pairs(rows) do num:add(row.rank) end end end
local function _gb(num, data,out,bests,rests)
data = Data(the.file)
out,bests,rests=data:greedyBest()
report(num,bests,rests)
return data,out,bests,rests
end


Given two arrays of integers, write a program to check if a pair of values (one value from each array) exists such that swapping the elements of the pair will make the sum of two arrays equal.
Example:
A = [4, 1, 2, 1, 1, 2]
B = [3, 6, 3, 3]
will return (1, 3)
As if we swap 1 with 3 in A and 3 with 1 in B, we get the same sum of 13.
A = [5, 7, 4, 6, -3]
B = [1, 2, 3, 8, -5]
will return (7, 2)
Once we have the difference between two arrays: say diff
And X and Y are the elements to be swapped.
Then SumA - X + Y = SumB - Y + X.
With sone manipulation you can get,
X - Y = Diff
Algorithm Overview:
1. Sort both the array and get the difference.
2. If the difference is odd, no such pair is possible.
3. If it's even, then find a pair with diff equal to (difference / 2) (why?)
The above approach can be implemented as follows: