Home
Publications
Blog
Notebooks
Repos
Learning
Tools
Philosophy
Tags
KAUST
KAUST goes open access
01 Jul 2014
Academic Work-Life Balance at KAUST
28 Aug 2011
More KAUST Beacon photos
25 Jun 2011
Visualizing my inbox load
06 Feb 2011
Informational resources about KAUST on the web
08 Apr 2009
computing
Support the stackexchange for computational science
30 Nov 2011
A better way to do multiple Gmail signatures: canned responses
02 Nov 2011
Getting things to install for the correct shell in Mac OS X
24 Nov 2009
os-x
Getting things to install for the correct shell in Mac OS X
24 Nov 2009
python
Step 7 - Automate the tests
29 May 2015
Step 6 - Keep track of issues
16 May 2015
Step 5 - write tests
15 May 2015
Step 4 - write docstrings
14 May 2015
Step 2 - Code in the open
12 May 2015
Step 1 - Use version control
11 May 2015
12 steps toward rock-solid scientific Python code
10 May 2015
Testing whether your code produces the correct plots -- in Python and on Travis
13 Jan 2015
Reviewing my marathon training using MapMyFitness and Pandas
31 Dec 2014
How and why I'm teaching my kids to code
09 Dec 2014
Documentation, testing, and default arguments for your MATLAB packages
12 Oct 2013
Giving a math talk using IPython notebook slides and Wakari
21 Sep 2013
Convert SAGE worksheets to IPython notebooks
16 Jan 2013
NodePy version 0.4 released
28 Aug 2012
Python code for making a histogram of your e-mail volume
07 Feb 2011
Visualizing my inbox load
06 Feb 2011
nodepy 0.3 available via easy_install
13 Jan 2011
Using pylint to clean up Python code
06 Jan 2011
Getting things to install for the correct shell in Mac OS X
24 Nov 2009
open-access
KAUST goes open access
01 Jul 2014
Adopting the Reproducible Research Standard
06 Dec 2012
7 Habits of the Open Scientist #3: Pre-publication dissemination of research
22 Aug 2012
7 Habits of the Open Scientist: #1 -- Open publishing
01 Aug 2012
7 Habits of the Open Scientist
31 Jul 2012
Dissecting Elsevier's "letter to the mathematics community"
28 Feb 2012
New Junk Publisher: MASAUM Network
11 Jan 2012
Endorse the Science Code Manifesto
07 Jan 2012
In defense of "Open Submission" in scientific publishing
16 Dec 2011
Book Review: Reinventing Discovery
10 Nov 2011
"Open Access" and unscrupulous scientific publishers
08 Sep 2010
scientific-publishing
5 reasons why you should submit your next paper to CAMCoS
17 Jan 2013
Why I signed the Cost of Knowledge
23 Dec 2012
Adopting the Reproducible Research Standard
06 Dec 2012
You might be a low-quality scientific journal if...
16 Oct 2012
Impact of the Elsevier boycott
11 Oct 2012
7 Habits of the Open Scientist #3: Pre-publication dissemination of research
22 Aug 2012
7 Habits of the Open Scientist: #1 -- Open publishing
01 Aug 2012
Harvard suggests that its faculty resign from editing overpriced journals
26 Apr 2012
Should your advisor be an author on your papers?
13 Mar 2012
Dissecting Elsevier's "letter to the mathematics community"
28 Feb 2012
The Cost of Knowledge: I've signed
19 Feb 2012
What is this thing we call the arXiv, really?
20 Jan 2012
New Junk Publisher: MASAUM Network
11 Jan 2012
Endorse the Science Code Manifesto
07 Jan 2012
In defense of "Open Submission" in scientific publishing
16 Dec 2011
Book Review: Reinventing Discovery
10 Nov 2011
Collaborative scientific reading
03 Nov 2011
Managing publication lists in HTML
28 Oct 2011
Searching the scientific literature
27 Oct 2011
Springer denies scientist access to her own research
21 Oct 2011
What journals do you read?
14 Oct 2011
What is science?
19 May 2011
"Open Access" and unscrupulous scientific publishers
08 Sep 2010
programming
How and why I'm teaching my kids to code
09 Dec 2014
Endorse the Science Code Manifesto
07 Jan 2012
Support the stackexchange for computational science
30 Nov 2011
How to edit all files containing a particular string
27 Jun 2011
Using pylint to clean up Python code
06 Jan 2011
pylint
Using pylint to clean up Python code
06 Jan 2011
nodepy
NodePy version 0.4 released
28 Aug 2012
nodepy 0.3 available via easy_install
13 Jan 2011
easy_install
nodepy 0.3 available via easy_install
13 Jan 2011
software-distribution
Clawpack turns 20
01 Dec 2014
NodePy version 0.4 released
28 Aug 2012
7 Habits of the Open Scientist: #2 -- Reproducible Research
03 Aug 2012
7 Habits of the Open Scientist
31 Jul 2012
Endorse the Science Code Manifesto
07 Jan 2012
nodepy 0.3 available via easy_install
13 Jan 2011
publications
Adopting the Reproducible Research Standard
06 Dec 2012
7 Habits of the Open Scientist #3: Pre-publication dissemination of research
22 Aug 2012
7 Habits of the Open Scientist
31 Jul 2012
What is this thing we call the arXiv, really?
20 Jan 2012
Endorse the Science Code Manifesto
07 Jan 2012
Do you know what your colleagues are reading?
15 Nov 2011
Managing publication lists in HTML
28 Oct 2011
What journals do you read?
14 Oct 2011
I have a book!
25 Jan 2011
SSP
Internal stability of Runge-Kutta methods
11 Oct 2012
The positivity pipe dream fulfilled?
31 May 2011
I have a book!
25 Jan 2011
e-mail
A better way to do multiple Gmail signatures: canned responses
02 Nov 2011
Python code for making a histogram of your e-mail volume
07 Feb 2011
Visualizing my inbox load
06 Feb 2011
science
7 Habits of the Open Scientist: #2 -- Reproducible Research
03 Aug 2012
7 Habits of the Open Scientist
31 Jul 2012
Book Review: Reinventing Discovery
10 Nov 2011
Collaborative scientific reading
03 Nov 2011
What is science?
19 May 2011
bibliographic-reference-management
Congratulations, you've reinvented Bibtex.
02 Feb 2012
Managing publication lists in HTML
28 Oct 2011
What journals do you read?
14 Oct 2011
Mendeley's PDF import has improved dramatically
04 Jun 2011
Why I won't be a Mendeley university advisor (for now)
23 May 2011
mendeley
How to avoid javascript errors when copy-pasting Bibtex citations in Mendeley on Mac OS X
15 Feb 2013
Congratulations, you've reinvented Bibtex.
02 Feb 2012
Do you know what your colleagues are reading?
15 Nov 2011
Managing publication lists in HTML
28 Oct 2011
Searching the scientific literature
27 Oct 2011
What journals do you read?
14 Oct 2011
Mendeley's PDF import has improved dramatically
04 Jun 2011
Why I won't be a Mendeley university advisor (for now)
23 May 2011
tools
My favorite new tool: ack
24 May 2011
UNIX
My favorite new tool: ack
24 May 2011
heterogeneous-media
How do shock waves behave in inhomogeneous materials?
29 May 2011
hyperbolic-PDEs
Clawpack turns 20
01 Dec 2014
HyperPython
28 May 2014
A Tale of Two Theorems
14 Oct 2013
A curious upwind implicit scheme for advection
11 Oct 2012
The positivity pipe dream fulfilled?
31 May 2011
How do shock waves behave in inhomogeneous materials?
29 May 2011
shocks
How do shock waves behave in inhomogeneous materials?
29 May 2011
numerical-analysis
Notes 2014.03.03
03 Mar 2014
Notes 2014.02.27
27 Feb 2014
Notes 2014.02.22
22 Feb 2014
A Tale of Two Theorems
14 Oct 2013
Internal stability of Runge-Kutta methods
11 Oct 2012
A curious upwind implicit scheme for advection
11 Oct 2012
NodePy version 0.4 released
28 Aug 2012
Can a region of absolute stability be rectangular?
17 Mar 2012
Support the stackexchange for computational science
30 Nov 2011
What journals do you read?
14 Oct 2011
The positivity pipe dream fulfilled?
31 May 2011
positivity
The positivity pipe dream fulfilled?
31 May 2011
mathematical-exposition
Dispersion relations for linear systems of PDEs
28 May 2014
The Schrodinger equation is not a reaction-diffusion equation
22 Feb 2014
A Tale of Two Theorems
14 Oct 2013
The positivity pipe dream fulfilled?
31 May 2011
photos
More KAUST Beacon photos
25 Jun 2011
linux
How to edit all files containing a particular string
27 Jun 2011
Idiocy-of-Google
Do you know what your colleagues are reading?
15 Nov 2011
The one thing I can't stand about blogger (and Google in general!)
18 Aug 2011
academia
Book Review: Reinventing Discovery
10 Nov 2011
Managing publication lists in HTML
28 Oct 2011
Springer denies scientist access to her own research
21 Oct 2011
What journals do you read?
14 Oct 2011
Academic Work-Life Balance at KAUST
28 Aug 2011
life
Academic Work-Life Balance at KAUST
28 Aug 2011
RSS
Do you know what your colleagues are reading?
15 Nov 2011
Searching the scientific literature
27 Oct 2011
What journals do you read?
14 Oct 2011
scientific-reading
7 Habits of the Open Scientist
31 Jul 2012
Do you know what your colleagues are reading?
15 Nov 2011
Book Review: Reinventing Discovery
10 Nov 2011
Collaborative scientific reading
03 Nov 2011
Searching the scientific literature
27 Oct 2011
What journals do you read?
14 Oct 2011
research
7 Habits of the Open Scientist: #2 -- Reproducible Research
03 Aug 2012
Book Review: Reinventing Discovery
10 Nov 2011
Searching the scientific literature
27 Oct 2011
CSS
Managing publication lists in HTML
28 Oct 2011
HTML
A better way to do multiple Gmail signatures: canned responses
02 Nov 2011
Managing publication lists in HTML
28 Oct 2011
productivity
A better way to do multiple Gmail signatures: canned responses
02 Nov 2011
refereeing
Why I signed the Cost of Knowledge
23 Dec 2012
Impact of the Elsevier boycott
11 Oct 2012
Dissecting Elsevier's "letter to the mathematics community"
28 Feb 2012
The Cost of Knowledge: I've signed
19 Feb 2012
What is this thing we call the arXiv, really?
20 Jan 2012
In defense of "Open Submission" in scientific publishing
16 Dec 2011
Collaborative scientific reading
03 Nov 2011
scientific-computing
Clawpack turns 20
01 Dec 2014
Don't scrap the DOE CSGF program
23 Jun 2013
7 Habits of the Open Scientist: #2 -- Reproducible Research
03 Aug 2012
Endorse the Science Code Manifesto
07 Jan 2012
Support the stackexchange for computational science
30 Nov 2011
arXiv
7 Habits of the Open Scientist #3: Pre-publication dissemination of research
22 Aug 2012
7 Habits of the Open Scientist: #1 -- Open publishing
01 Aug 2012
What is this thing we call the arXiv, really?
20 Jan 2012
academic-spring
Why I signed the Cost of Knowledge
23 Dec 2012
Impact of the Elsevier boycott
11 Oct 2012
Dissecting Elsevier's "letter to the mathematics community"
28 Feb 2012
authorship
Should your advisor be an author on your papers?
13 Mar 2012
Runge-Kutta-methods
A Tale of Two Theorems
14 Oct 2013
Internal stability of Runge-Kutta methods
11 Oct 2012
NodePy version 0.4 released
28 Aug 2012
Can a region of absolute stability be rectangular?
17 Mar 2012
open-science
Step 3 - Add a README and a License
13 May 2015
Step 2 - Code in the open
12 May 2015
Open scientific collaboration
22 Dec 2012
7 Habits of the Open Scientist #3: Pre-publication dissemination of research
22 Aug 2012
7 Habits of the Open Scientist: #2 -- Reproducible Research
03 Aug 2012
7 Habits of the Open Scientist: #1 -- Open publishing
01 Aug 2012
7 Habits of the Open Scientist
31 Jul 2012
reproducible-research
Reflections on the 2012 ICERM Reproducibility Workshop
14 Dec 2012
Adopting the Reproducible Research Standard
06 Dec 2012
7 Habits of the Open Scientist: #2 -- Reproducible Research
03 Aug 2012
7 Habits of the Open Scientist
31 Jul 2012
CFL-condition
A Tale of Two Theorems
14 Oct 2013
A curious upwind implicit scheme for advection
11 Oct 2012
advection
A Tale of Two Theorems
14 Oct 2013
A curious upwind implicit scheme for advection
11 Oct 2012
stability
A Tale of Two Theorems
14 Oct 2013
Internal stability of Runge-Kutta methods
11 Oct 2012
roundoff
Internal stability of Runge-Kutta methods
11 Oct 2012
Jekyll
Switching from Blogger to Jekyll
25 Oct 2012
blogging
Switching from Blogger to Jekyll
25 Oct 2012
stackexchange
Open scientific collaboration
22 Dec 2012
ipython
Teaching with SageMathCloud
31 May 2014
HyperPython
28 May 2014
Giving a math talk using IPython notebook slides and Wakari
21 Sep 2013
Convert SAGE worksheets to IPython notebooks
16 Jan 2013
bibtex
How to avoid javascript errors when copy-pasting Bibtex citations in Mendeley on Mac OS X
15 Feb 2013
CSGF
Don't scrap the DOE CSGF program
23 Jun 2013
conferences
Giving a math talk using IPython notebook slides and Wakari
21 Sep 2013
presentations
Giving a math talk using IPython notebook slides and Wakari
21 Sep 2013
MATLAB
Documentation, testing, and default arguments for your MATLAB packages
12 Oct 2013
testing
Step 7 - Automate the tests
29 May 2015
Step 5 - write tests
15 May 2015
12 steps toward rock-solid scientific Python code
10 May 2015
Testing whether your code produces the correct plots -- in Python and on Travis
13 Jan 2015
Documentation, testing, and default arguments for your MATLAB packages
12 Oct 2013
documentation
Step 6 - Keep track of issues
16 May 2015
Step 4 - write docstrings
14 May 2015
12 steps toward rock-solid scientific Python code
10 May 2015
Documentation, testing, and default arguments for your MATLAB packages
12 Oct 2013
software
Documentation, testing, and default arguments for your MATLAB packages
12 Oct 2013
RK-Opt
Documentation, testing, and default arguments for your MATLAB packages
12 Oct 2013
paper-review
A Tale of Two Theorems
14 Oct 2013
PDE
Dispersion relations for linear systems of PDEs
28 May 2014
A Tale of Two Theorems
14 Oct 2013
time-stepping
Notes 2014.03.03
03 Mar 2014
Notes 2014.02.27
27 Feb 2014
Notes 2014.02.22
22 Feb 2014
aeroacoustics
Notes 2014.02.27
27 Feb 2014
Notes 2014.02.22
22 Feb 2014
papers
Notes 2014.02.27
27 Feb 2014
Notes 2014.02.22
22 Feb 2014
flux-reconstruction
Notes 2014.02.27
27 Feb 2014
Notes 2014.02.22
22 Feb 2014
notes
Notes 2014.03.03
03 Mar 2014
Notes 2014.02.27
27 Feb 2014
Notes 2014.02.22
22 Feb 2014
wave-equation
Dispersion relations for linear systems of PDEs
28 May 2014
The Schrodinger equation is not a reaction-diffusion equation
22 Feb 2014
deferred-correction
Notes 2014.03.03
03 Mar 2014
peanoclaw
Notes 2014.03.03
03 Mar 2014
blog-post
The PETSc DMDA is not lightweight
11 Mar 2014
petsc
The PETSc DMDA is not lightweight
11 Mar 2014
pyclaw
HyperPython
28 May 2014
The PETSc DMDA is not lightweight
11 Mar 2014
memory
The PETSc DMDA is not lightweight
11 Mar 2014
profiling
The PETSc DMDA is not lightweight
11 Mar 2014
teaching
Teaching in the open
18 Jul 2014
Teaching with SageMathCloud
31 May 2014
HyperPython
28 May 2014
sagemathcloud
Teaching with SageMathCloud
31 May 2014
publishing
KAUST goes open access
01 Jul 2014
collaboration
Teaching in the open
18 Jul 2014
clawpack
Clawpack turns 20
01 Dec 2014
education
How and why I'm teaching my kids to code
09 Dec 2014
notebook
Reviewing my marathon training using MapMyFitness and Pandas
31 Dec 2014
exercise
Reviewing my marathon training using MapMyFitness and Pandas
31 Dec 2014
matplotlib
Testing whether your code produces the correct plots -- in Python and on Travis
13 Jan 2015
reproducibility
Step 6 - Keep track of issues
16 May 2015
Step 2 - Code in the open
12 May 2015
Step 1 - Use version control
11 May 2015
12 steps toward rock-solid scientific Python code
10 May 2015
version-control
Step 2 - Code in the open
12 May 2015
Step 1 - Use version control
11 May 2015
12 steps toward rock-solid scientific Python code
10 May 2015
git
Step 2 - Code in the open
12 May 2015
Step 1 - Use version control
11 May 2015
automation
Step 7 - Automate the tests
29 May 2015
running
The top 10 signs that you are running the Hejaz 50 Ultramarathon
28 Mar 2016
Saudi-Arabia
The top 10 signs that you are running the Hejaz 50 Ultramarathon
28 Mar 2016
dynamical-systems
Modeling Coronavirus part V -- try the model yourself
22 Mar 2020
Modeling Coronavirus part IV -- understanding exponential growth
20 Mar 2020
Modeling Coronavirus part III -- predictions
19 Mar 2020
Modeling Coronavirus part II -- estimating parameters
19 Mar 2020
Modeling Coronavirus part I -- the SIR model
17 Mar 2020
epidemiology
Modeling Coronavirus part V -- try the model yourself
22 Mar 2020
Modeling Coronavirus part IV -- understanding exponential growth
20 Mar 2020
Modeling Coronavirus part III -- predictions
19 Mar 2020
Modeling Coronavirus part II -- estimating parameters
19 Mar 2020
Modeling Coronavirus part I -- the SIR model
17 Mar 2020
COVID-19
Modeling Coronavirus part V -- try the model yourself
22 Mar 2020
Modeling Coronavirus part IV -- understanding exponential growth
20 Mar 2020
Modeling Coronavirus part III -- predictions
19 Mar 2020
Modeling Coronavirus part II -- estimating parameters
19 Mar 2020
Modeling Coronavirus part I -- the SIR model
17 Mar 2020
interactive
Modeling Coronavirus part V -- try the model yourself
22 Mar 2020
widgets
Modeling Coronavirus part V -- try the model yourself
22 Mar 2020
jupyter
Modeling Coronavirus part V -- try the model yourself
22 Mar 2020
open-access
easy_install
os-x
science
CSGF
reproducibility
stackexchange
programming
linux
wave-equation
SSP
mathematical-exposition
advection
stability
jupyter
blog-post
documentation
dynamical-systems
paper-review
Jekyll
presentations
productivity
hyperbolic-PDEs
authorship
computing
MATLAB
sagemathcloud
aeroacoustics
memory
open-science
pylint
PDE
refereeing
deferred-correction
academic-spring
roundoff
widgets
clawpack
conferences
reproducible-research
education
teaching
flux-reconstruction
RSS
exercise
scientific-computing
numerical-analysis
matplotlib
photos
collaboration
software
research
RK-Opt
e-mail
profiling
shocks
KAUST
UNIX
publishing
life
academia
CSS
Runge-Kutta-methods
blogging
CFL-condition
time-stepping
HTML
notes
interactive
notebook
COVID-19
bibliographic-reference-management
Saudi-Arabia
heterogeneous-media
ipython
arXiv
running
scientific-publishing
testing
pyclaw
git
peanoclaw
papers
publications
petsc
software-distribution
Idiocy-of-Google
positivity
bibtex
python
nodepy
version-control
scientific-reading
tools
automation
mendeley
epidemiology