Minimizing cognitive load

in Perl source code parsing
javier@rodriguez.org.mx

Perl Mongers 20170831
Massachusetts General Hospital and Draper Labs
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
https://http.cat/403
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
A morning together
A morning together
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
http://www.pxleyes.com/profile/Sarah06/
– Master Yoda
“Disappointment is the path to the dark side.”
– Master Yoda
“Disappointment leads to anger. Anger leads to
hate. Hate leads to suffering. Suffering leads to
low productivity.”
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Times New Roman
lO==10
Times New Roman
lO==10 lO==10
Courier
Courier
lO==10 lO==10
Inconsolata
Cognitive Dissonance
• Psychological conflict resulting from incongruous beliefs
and attitudes held simultaneously

https://www.merriam-webster.com/dictionary/cognitive%20dissonance
http://www.lowing.org/fonts/
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
http://hivelogic.com/articles/top-10-programming-fonts/
Top 10 Programming Fonts
• Courier
• Andale Mono
• Monaco
• Profont
• Monofur
• Proggy

• Droid Sans Mono
• Deja Vu Sans Mono
• Consolas
• Inconsolata
https://nerdfonts.com/
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
NerdFonts.com
• 3270
• AnonymousPro
• AurulentSansMono
• BitstreamVeraSansMono
• CodeNewRoman
• DejaVuSansMono
• DroidSansMono
• FantasqueSansMono
• FiraCode
• FiraMono
• Gohu
• Hack
• Hasklig
• HeavyData
• Hermit
• Inconsolata
• InconsolataGo
• Iosevka
• Lekton
• LiberationMono
• Meslo
• Monofur
• Monoid
• Mononoki
• MPlus
• ProFont
• ProggyClean
• RobotoMono
• ShareTechMono
• SourceCodePro
• SpaceMono
• Terminus
• Ubuntu
• UbuntuMono
=>
=>
=> ≥
=>
=>
=>
?
≥ ?
?
Ligatures
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
ff fb fl fh fi ffi ffl ffh
http://ilovetypography.com/2007/09/09/decline-and-fall-of-the-ligature/
=>
=>
me
Inconsolata
Use a coding font with ligatures
1. Pick a font
2. Pick an editor
3. Enable ligatures if necessary
Coding fonts with ligatures
• Fira Code 

https://github.com/tonsky/FiraCode
• Monoid 

https://github.com/larsenwork/monoid
• Hasklig 

https://github.com/i-tu/Hasklig
• Iosevka 

https://github.com/be5invis/Iosevka
• Pragmata Pro (Commercial)

https://www.fsd.it/shop/fonts/pragmatapro/
Editors with support for Ligatures
• Android Studio
• Anjuta
• AppCode
• Atom 1.1 or
newer
• BBEdit/
TextWrangler
• Brackets
• Chocolat
• CLion
• Cloud9
• Coda 2
• CodeLite
• Eclipse
• Geany
• gEdit / Pluma
• GNOME Builder
• IntelliJ IDEA
• Kate, KWrite
• Komodo
• Leafpad
• LibreOffice
• LightTable
• LINQPad
• MacVim
• Mancy
• Meld
• Mousepad
• NetBeans
• Notepad
• Notepad++
• PhpStorm
• PyCharm
• QtCreator
• Rider
• RStudio
• RubyMine
• Scratch
• Spyder IDE
• TextAdept
• TextEdit
• TextMate 2
• VimR
• Visual Studio
2015
• Visual Studio
2017
• Visual Studio
Code
• WebStorm
• Xamarin Studio/
Monodevelop
• Xcode
https://github.com/tonsky/FiraCode#editor-support
Editors WITHOUT support for Ligatures
• Arduino IDE
• Adobe Dreamweaver
• Delphi IDE
• Eclipse (Win)
• Standalone Emacs
• gVim
• IDLE
• KDevelop 4
• Monkey Studio IDE
• SublimeText
https://github.com/tonsky/FiraCode#editor-support
Enable ligatures
• IntelliJ et. al.
• Enable in Settings → Editor → Colors & Fonts → Font → Enable Font Ligatures
• Select Fira Code as "Primary font" under 

Settings → Editor → Colors & Fonts → Font → Editor Font
• ~/.gvimrc
set macligatures
set guifont=Fira Code:h12
• Atom
atom-text-editor {
text-rendering: optimizeLegibility;
}
• BBEdit
$ defaults write com.barebones.bbedit "EnableFontLigatures_Fira Code" -bool YES
https://github.com/tonsky/FiraCode#editor-support
https://github.com/tonsky/FiraCode
# apt-get install fonts-firacode
!
$ brew tap caskroom/fonts
$ brew cask install font-fira-code

C:> choco install firacode
#
Example (Fira Mono)
sub index($c) {
return $c->render();
}
sub view($c) {
my $id = $c->stash('id');
my $purchase = $c->customer->purchases->search({id => $id})->single;
die ("Invalid purchase") unless $purchase->customer->id eq $c->customer->id;
$c->stash(purchase => $purchase);
return $c->render();
}
Example (Fira Code)
sub index($c) {
return $c ->render();
}
sub view($c) {
my $id = $c ->stash('id');
my $purchase = $c ->customer ->purchases ->search({id => $id}) ->single;
die ("Invalid purchase") unless $purchase ->customer ->id eq $c ->customer ->id;
$c ->stash(purchase => $purchase);
return $c ->render();
}
Example (Fira Mono)
sub index($c) {
return $c->render();
}
sub view($c) {
my $id = $c->stash('id');
my $purchase = $c->customer->purchases->search({id => $id})->single;
die ("Invalid purchase") unless $purchase->customer->id eq $c->customer->id;
$c->stash(purchase => $purchase);
return $c->render();
}
Compare and contrast
sub index($c) {
return $c->render();
}
sub view($c) {
my $id = $c->stash('id');
my $purchase = $c->customer->purchases->search({id => $id})->single;
die ("Invalid purchase") unless $purchase->customer->id eq $c->customer->id;
$c->stash(purchase => $purchase);
return $c->render();
}
Compare and contrast
my $purchase = $c->customer->purchases->search({id => $id})->single;
Compare and contrast
my $purchase = $c->customer->purchases->search({id => $id})->single;
Compare and contrast
my $purchase = $c->customer->purchases->search({id => $id})->single;
Compare and contrast
my $purchase = $c ->customer ->purchases ->search({id => $id}) ->single;my $purchase = $c->customer->purchases->search({id => $id})->single;
Compare and contrast
my $purchase = $c ->customer ->purchases ->search({id => $id}) ->single;
my $purchase = $c->customer->purchases->search({id => $id})->single;
== != >= <= <=>
Compare and contrast
== != >= <= <=>
.= += -= *= |= ||= //=
Compare and contrast
.= += -= *= |= ||= //=
>> << >>= <<=
Compare and contrast
>> << >>= <<=
&& || // -- ++ **
Compare and contrast
&& || // -- ++ **
-> => ::
Compare and contrast
-> => ::
~~ .. ...
Compare and contrast
~~ .. ...
for (1..10)
Compare and contrast
for (1 ..10)
#! ## ###
Compare and contrast
#! ## ###
0x1337
Compare and contrast
0x1337
/* ** */
Compare and contrast
/* ** */
<!-- -->
Compare and contrast
<!-- -->
<img/>
Compare and contrast
<img />
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)
Coding fonts with ligatures
• Fira Code 

https://github.com/tonsky/FiraCode
• Monoid 

https://github.com/larsenwork/monoid
• Hasklig 

https://github.com/i-tu/Hasklig
• Iosevka 

https://github.com/be5invis/Iosevka
• Pragmata Pro (Commercial)

https://www.fsd.it/shop/fonts/pragmatapro/
Minimizing cognitive load

in Perl source code parsing
javier@rodriguez.org.mx

Perl Mongers 20170831
Massachusetts General Hospital and Draper Labs
Pretty Programming Fonts

More Related Content

PPTX
Jquery introduction
PDF
Feed Normalization with Ember Data 1.0
ODP
PHP 102: Out with the Bad, In with the Good
KEY
Beyond HTML - Scriptsprachen, Frameworks, Templatesprachen und vieles mehr
PDF
Modular HTML, CSS, & JS Workshop
PDF
Leveraging the Power of Graph Databases in PHP
PDF
Leveraging the Power of Graph Databases in PHP
ODP
Php 102: Out with the Bad, In with the Good
Jquery introduction
Feed Normalization with Ember Data 1.0
PHP 102: Out with the Bad, In with the Good
Beyond HTML - Scriptsprachen, Frameworks, Templatesprachen und vieles mehr
Modular HTML, CSS, & JS Workshop
Leveraging the Power of Graph Databases in PHP
Leveraging the Power of Graph Databases in PHP
Php 102: Out with the Bad, In with the Good

What's hot (6)

PPTX
About Best friends - HTML, CSS and JS
PDF
10- Learn CSS Fundamentals / Pseudo-elements
ODP
Ruby on Rails
PDF
14- Learn CSS Fundamentals / Inheritance
PPT
Jquery presentation
ODP
Intro to #memtech PHP 2011-12-05
About Best friends - HTML, CSS and JS
10- Learn CSS Fundamentals / Pseudo-elements
Ruby on Rails
14- Learn CSS Fundamentals / Inheritance
Jquery presentation
Intro to #memtech PHP 2011-12-05
Ad

Similar to Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts) (20)

PDF
Living With Legacy Code
ODP
Best practices tekx
PDF
Working Effectively With Legacy Perl Code
KEY
Development tools
PDF
Parsing and Type checking all 2^10000 configurations of the Linux kernel
PDF
Coding for Designers. A primer. By Fabian Fabian
PDF
Perl-crash-course
PDF
Perl-crash-course
PDF
Perl-crash-course
PDF
Perl-crash-course
KEY
groovy & grails - lecture 6
KEY
Development workflow
PDF
XConf 2022 - Code As Data: How data insights on legacy codebases can fill the...
KEY
Converging Textual and Graphical Editors
PDF
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
PDF
Passing the Joel Test in the PHP World (phpbnl10)
PDF
Effective code reviews
PDF
Care and feeding notes
KEY
Xtext Best Practices
KEY
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Living With Legacy Code
Best practices tekx
Working Effectively With Legacy Perl Code
Development tools
Parsing and Type checking all 2^10000 configurations of the Linux kernel
Coding for Designers. A primer. By Fabian Fabian
Perl-crash-course
Perl-crash-course
Perl-crash-course
Perl-crash-course
groovy & grails - lecture 6
Development workflow
XConf 2022 - Code As Data: How data insights on legacy codebases can fill the...
Converging Textual and Graphical Editors
PHP Forum Paris 2012: Magic behind the numbers. Software metrics in practice
Passing the Joel Test in the PHP World (phpbnl10)
Effective code reviews
Care and feeding notes
Xtext Best Practices
Pointcut Rejuvenation: Recovering Pointcut Expressions in Evolving Aspect-Ori...
Ad

More from Javier Arturo Rodríguez (9)

PDF
Introduction to ansible
PDF
WordPress Performance Tuning
PDF
WordPress for SysAdmins
PDF
Easy native wrappers with SWIG
PDF
Open Data: a view from the trenches
PDF
Barcelona.pm Curs1211 sess01
PDF
Build an autoversioning filesystem with Apache2
PDF
Periodismo de Datos II: Construyendo y explorando conjuntos de datos con las ...
PDF
DatosEnCrudo.org
Introduction to ansible
WordPress Performance Tuning
WordPress for SysAdmins
Easy native wrappers with SWIG
Open Data: a view from the trenches
Barcelona.pm Curs1211 sess01
Build an autoversioning filesystem with Apache2
Periodismo de Datos II: Construyendo y explorando conjuntos de datos con las ...
DatosEnCrudo.org

Recently uploaded (20)

PDF
A review of recent deep learning applications in wood surface defect identifi...
PDF
How IoT Sensor Integration in 2025 is Transforming Industries Worldwide
PDF
Convolutional neural network based encoder-decoder for efficient real-time ob...
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PPTX
Modernising the Digital Integration Hub
PPTX
Build Your First AI Agent with UiPath.pptx
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PPTX
Training Program for knowledge in solar cell and solar industry
PPT
Geologic Time for studying geology for geologist
PPTX
Benefits of Physical activity for teenagers.pptx
PDF
Enhancing plagiarism detection using data pre-processing and machine learning...
PDF
Consumable AI The What, Why & How for Small Teams.pdf
PDF
A proposed approach for plagiarism detection in Myanmar Unicode text
PPTX
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
Credit Without Borders: AI and Financial Inclusion in Bangladesh
PDF
STKI Israel Market Study 2025 version august
PDF
Accessing-Finance-in-Jordan-MENA 2024 2025.pdf
A review of recent deep learning applications in wood surface defect identifi...
How IoT Sensor Integration in 2025 is Transforming Industries Worldwide
Convolutional neural network based encoder-decoder for efficient real-time ob...
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
A contest of sentiment analysis: k-nearest neighbor versus neural network
Modernising the Digital Integration Hub
Build Your First AI Agent with UiPath.pptx
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
Training Program for knowledge in solar cell and solar industry
Geologic Time for studying geology for geologist
Benefits of Physical activity for teenagers.pptx
Enhancing plagiarism detection using data pre-processing and machine learning...
Consumable AI The What, Why & How for Small Teams.pdf
A proposed approach for plagiarism detection in Myanmar Unicode text
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
Final SEM Unit 1 for mit wpu at pune .pptx
Credit Without Borders: AI and Financial Inclusion in Bangladesh
STKI Israel Market Study 2025 version august
Accessing-Finance-in-Jordan-MENA 2024 2025.pdf

Minimizing cognitive load
 in Perl source code parsing (a.k.a. Pretty programming fonts)