<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Hacker Within</title>
 <link href="http://www.thehackerwithin.org/illinois/atom.xml" rel="self"/>
 <link href="http://www.thehackerwithin.org/illinois/"/>
 <updated>2020-09-16T18:18:35+00:00</updated>
 <id>http://www.thehackerwithin.org/illinois</id>
 <author>
   <name>Hacker Within</name>
 </author>
 
 
 <entry>
   <title>TBD</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/TBD"/>
   <updated>2020-12-02T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/TBD</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Dec 2, 2020&lt;/li&gt;
  &lt;li&gt;Time: 12 pm&lt;/li&gt;
  &lt;li&gt;Location: Zoom&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
</content>
 </entry>
 
 <entry>
   <title>TBD</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/TBD"/>
   <updated>2020-11-11T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/TBD</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Nov 11, 2020&lt;/li&gt;
  &lt;li&gt;Time: 12 pm&lt;/li&gt;
  &lt;li&gt;Location: Zoom&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
</content>
 </entry>
 
 <entry>
   <title>TBD</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/TBD"/>
   <updated>2020-10-28T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/TBD</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Oct 28, 2020&lt;/li&gt;
  &lt;li&gt;Time: 12 pm&lt;/li&gt;
  &lt;li&gt;Location: Zoom&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
</content>
 </entry>
 
 <entry>
   <title>TBD</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/TBD"/>
   <updated>2020-10-14T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/TBD</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Oct 14, 2020&lt;/li&gt;
  &lt;li&gt;Time: 12 pm&lt;/li&gt;
  &lt;li&gt;Location: Zoom&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
</content>
 </entry>
 
 <entry>
   <title>TBD</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/TBD"/>
   <updated>2020-09-30T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/TBD</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Sep 30, 2020&lt;/li&gt;
  &lt;li&gt;Time: 12 pm&lt;/li&gt;
  &lt;li&gt;Location: Zoom&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;
</content>
 </entry>
 
 <entry>
   <title>VS Code and Pluto.jl</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/vscode_and_pluto"/>
   <updated>2020-09-16T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/vscode_and_pluto</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Sep 16, 2020&lt;/li&gt;
  &lt;li&gt;Time: 12 pm&lt;/li&gt;
  &lt;li&gt;Location: Zoom&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;vs-code-josh&quot;&gt;VS Code (Josh)&lt;/h2&gt;

&lt;h2 id=&quot;plutojl-cail&quot;&gt;Pluto.jl (Cail)&lt;/h2&gt;

&lt;p&gt;Demo materials can be found on the THW Github &lt;a href=&quot;https://github.com/thehackerwithin/illinois/tree/0f2fb19bdc9da5e6fd11004677fd0bc3866173bf/julia/pluto&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I highly recommend checking out the Pluto.jl &lt;a href=&quot;https://www.youtube.com/watch?v=IAF8DjrQSSk&quot;&gt;JuliaCon talk&lt;/a&gt; as well.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Fall '20 planning</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/fall-kickoff"/>
   <updated>2020-09-02T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/fall-kickoff</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Sep 2, 2020&lt;/li&gt;
  &lt;li&gt;Time: 12 pm&lt;/li&gt;
  &lt;li&gt;Location: Jitsi&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;fall-20-planning&quot;&gt;Fall ‘20 Planning&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Notes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;How can we use the virtual format to our advantage?
    &lt;ul&gt;
      &lt;li&gt;Code demos, collaborative hacking, etc.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;More emphasis on short talks (or just discussion topics) that don’t require much preparation on the part of the speaker&lt;/li&gt;
  &lt;li&gt;Possible “anchor” for the semester: playing with data from UIUC’s &lt;a href=&quot;https://go.illinois.edu/COVIDTestingData&quot;&gt;COVID-19 Testing Dashboard&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;less involved than last semester’s project,  basically a fall-back hacking project when we don’t have other material to discuss&lt;/li&gt;
      &lt;li&gt;data is exportable, and maybe we can scrape it?&lt;/li&gt;
      &lt;li&gt;possible approaches: visualization, fitting, simulations&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;General proposal: 1-2 discussion topics or lightning talks per meeting, then use rest of time for hacking (COVID data?).&lt;/li&gt;
  &lt;li&gt;Switching to Zoom&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Introductions to Julia and Rust</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/intro_to_julia_and_rust"/>
   <updated>2020-04-08T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/intro_to_julia_and_rust</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Apr 8, 2020&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: Jitsi&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Introduction to Julia (Cail Daley):&lt;/strong&gt; &lt;a href=&quot;../html/intro_to_julia.slides.html&quot;&gt;slides&lt;/a&gt; and &lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/2020-04-08_julia_and_rust/intro_to_julia.ipynb&quot;&gt;notebook&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introduction to Rust (Jon Drobny):&lt;/strong&gt; &lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/2020-04-08_julia_and_rust/Introduction%20to%20Rust.pdf&quot;&gt;slides&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Healthcare Internet & Scientific Visualization</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/healthcare_internet_and_scientific_visualization"/>
   <updated>2020-03-25T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/healthcare_internet_and_scientific_visualization</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Mar 25, 2020&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: [2100 NCSA][ncsa_map]&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Cybersecurity & React</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/cybersecurity_and_react"/>
   <updated>2020-03-04T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/cybersecurity_and_react</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Mar 04, 2020&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: [2100 NCSA][ncsa_map]&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Group Project Discussion / Python Visualization</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/group_project_and_python_visualization"/>
   <updated>2020-02-19T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/group_project_and_python_visualization</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Feb 19, 2020&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: [1040 NCSA][ncsa_map]&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;group-project&quot;&gt;Group Project&lt;/h3&gt;

&lt;p&gt;From Josh Vita:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;We’re planning to try to do a semester-long (or more?) software project together. It could be a simple app or game, or maybe even a small research project? Anything that you think would be a fun way to explore programming topics that you’re interested in (visualization, machine learning, optimization, front-end development, etc.) would be good. Our first project planning meeting will be next week, so try to brainstorm some ideas of what you’d like to make!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;python-visualization-zeqian-li&quot;&gt;Python Visualization (Zeqian Li)&lt;/h3&gt;
</content>
 </entry>
 
 <entry>
   <title>Spring '20 planning</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/spring-kickoff"/>
   <updated>2020-02-05T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/spring-kickoff</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Feb 5, 2020&lt;/li&gt;
  &lt;li&gt;Time: Lunch 11:30, Meeting 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;2100 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;spring-20-planning&quot;&gt;Spring ‘20 Planning&lt;/h2&gt;

&lt;p&gt;There has been a lot of interest in THW at Illinois but we need to continue to provide the resources students want to help them excel!&lt;/p&gt;

&lt;p&gt;Questions to think about:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;What &lt;strong&gt;has&lt;/strong&gt; and &lt;strong&gt;hasn’t&lt;/strong&gt; worked?&lt;/li&gt;
  &lt;li&gt;What topics should be covered?
    &lt;ul&gt;
      &lt;li&gt;Is there interest in long-term learning?&lt;/li&gt;
      &lt;li&gt;What kind of professional development would be helpful?
        &lt;ul&gt;
          &lt;li&gt;resume, cover letter, presentation templates?&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;THW Slack?&lt;/li&gt;
  &lt;li&gt;Paper-writing tools? (Mendeley, Zenodo, other citation managers, etc.)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.ncsa.illinois.edu/enabling/data/deep_learning/news/hal_spring20&quot;&gt;HAL Spring 2020 training and hackathons&lt;/a&gt;?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(I borrowed from &lt;a href=&quot;Spring-16-Planning&quot;&gt;Spring ‘16 Planning post&lt;/a&gt;)&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Professional Career Opportunities</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/professional-career-opportunities"/>
   <updated>2019-12-04T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/professional-career-opportunities</id>
   <content type="html">&lt;p&gt;For our last meeting of the semester we will hear several people with professional careers
similar to career paths our own members are interested in. We will learn about what steps
they took to get to where they are and how their education and/or research helped them
get to that stage. If you know anyone who would be interested in speaking, please email the
&lt;a href=&quot;mailto:cwagner4@illinois.edu&quot;&gt;Hacker Within president&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Check back closer to the meeting date for more information!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Parallelization</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/parallelization"/>
   <updated>2019-11-20T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/parallelization</id>
   <content type="html">&lt;p&gt;Cail: Over the past two decades, graphical processing units (GPUs) have become one of the most successful tools for accelerating numerical computing. On Wednesday I’ll begin by discussing the hardware considerations that have led to the prevalence of GPUs; then we’ll turn to some of the principles of GPU programming. We’ll close by examining GPU implementations of some common algorithms like image blurring and matrix multiplication. Slides hosted &lt;a href=&quot;../html/gpu_slides.html&quot;&gt;here&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://wiki.illinois.edu/wiki/display/ECE408/ECE408+Home&quot;&gt;ECE 408 Applied Parallel Programming course website&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Paul: Dask is an intuitive and flexible graph execution engine for Python. I will demonstrate how to parallelize Python analysis code by adding a few lines of dask in a way that is fully compatible with serial execution (i.e. you can turn off dask with a flag). If time permits, I will go over more advanced features of dask such as: building your own cluster and visualizing parallel execution (dask dashboard).
Tutorial files are available on in &lt;a href=&quot;https://github.com/Paul-St-Young/thw-dask-para&quot;&gt;this&lt;/a&gt; Github repository.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Code Challenges</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/code-challenges"/>
   <updated>2019-11-06T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/code-challenges</id>
   <content type="html">&lt;h1 id=&quot;tbd&quot;&gt;TBD&lt;/h1&gt;

&lt;p&gt;Check back closer to the meeting date for more information!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Data Visualization</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/data-visualization"/>
   <updated>2019-10-16T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/data-visualization</id>
   <content type="html">&lt;h1 id=&quot;tbd&quot;&gt;TBD&lt;/h1&gt;

&lt;p&gt;Check back closer to the meeting date for more information!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Reproducibility / Workflow</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/reproducibility-workflow"/>
   <updated>2019-10-02T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/reproducibility-workflow</id>
   <content type="html">&lt;h1 id=&quot;tbd&quot;&gt;TBD&lt;/h1&gt;

&lt;p&gt;Check back closer to the meeting date for more information!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Git Websites</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/git-websites"/>
   <updated>2019-09-18T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/git-websites</id>
   <content type="html">&lt;h1 id=&quot;github_tutorial&quot;&gt;GitHub_tutorial&lt;/h1&gt;

&lt;h2 id=&quot;why-github&quot;&gt;Why GitHub?&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;GitHub provides awesome repos
&lt;a href=&quot;https://github.com/topics/awesome&quot;&gt;awesome open source repos&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Interesting, and maybe useful packages &lt;a href=&quot;https://github.com/nvbn/thefuck&quot;&gt;my new fav: the fuck&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Reproducing research paper
&lt;a href=&quot;https://github.com/rtqichen/torchdiffeq&quot;&gt;Neural ODE&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Great tool for version control, in particullar for collaborative project
lets get it started: &lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/git2.md&quot;&gt;link&lt;/a&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;reference&quot;&gt;Reference&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/joshnh/Git-Commands&quot;&gt;git-commands&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://help.github.com/en/articles/setting-up-your-github-pages-site-locally-with-jekyll&quot;&gt;Github tutorial on local Jekyll&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Research Showcase</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/research-showcase"/>
   <updated>2019-05-01T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/research-showcase</id>
   <content type="html">&lt;h2 id=&quot;research-showcase&quot;&gt;Research Showcase&lt;/h2&gt;

&lt;p&gt;To conclude the semester, members will show 5-10 min lightning talks giving an overview of their research, the languages and packages they use, and their code.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Python as Glue and Object Oriented Programming</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/python-as-glue-and-object-oriented-programming"/>
   <updated>2019-04-17T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/python-as-glue-and-object-oriented-programming</id>
   <content type="html">&lt;h2 id=&quot;python-as-glue&quot;&gt;Python as Glue&lt;/h2&gt;
&lt;p&gt;Python is one of the most versatile and popular languages for scientific computing as of 2019. However, being an interpreted rather than a compiled language, basic loops in Python are abysmally slow. In this tutorial, we find &lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/python-as-glue/python-as-glue.pdf&quot;&gt;present&lt;/a&gt; one possible cure for this slowness. Specifically, we will use Python to glue together C and Fortran backend codes with matplotlib visualization frontend scripts.&lt;/p&gt;

&lt;h2 id=&quot;object-oriented-programming&quot;&gt;Object Oriented Programming&lt;/h2&gt;

&lt;p&gt;Object Oriented Programming (OOP) is a widely-used programming paradigm that emphasizes writing modular, flexible code. In today’s talk we’ll discuss some of the key concepts and advantages of OOP, with some concrete examples in Python.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Python Coding Challenge and Hacking Hour</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/computer-security"/>
   <updated>2019-04-03T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/computer-security</id>
   <content type="html">&lt;h2 id=&quot;python-coding-challenge&quot;&gt;Python Coding Challenge&lt;/h2&gt;

&lt;p&gt;There is no tutorial or formal discussion scheduled for this week. Instead, there will be a &lt;a href=&quot;http://pythonchallenge.com&quot;&gt;coding challenge&lt;/a&gt;. Challenge participants will receive a special prize from GitHub! This time can also be used to discuss previous THW sessions, discuss and work on personal projects, and get advice on any programming issues.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Jupyter Lab and Advanced Data Structures</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/jupyter-lab-and-data-structures"/>
   <updated>2019-03-27T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/jupyter-lab-and-data-structures</id>
   <content type="html">&lt;h2 id=&quot;jupyter-lab&quot;&gt;Jupyter Lab&lt;/h2&gt;

&lt;p&gt;Do you use Jupyter notebooks? You should be using Jupyter Lab! Learn the benefits of Jupyter Lab in this presentation.&lt;/p&gt;

&lt;h2 id=&quot;advanced-data-structures&quot;&gt;Advanced Data Structures&lt;/h2&gt;

&lt;p&gt;How’s a list different from a dictionary? When should you use them? Find out in this presentation.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Optimizing Code and Esoteric Programming Languages</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/optimizing-code-and-terrible-languages"/>
   <updated>2019-03-06T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/optimizing-code-and-terrible-languages</id>
   <content type="html">&lt;h2 id=&quot;optimizing-code&quot;&gt;Optimizing Code&lt;/h2&gt;

&lt;p&gt;Is your code full of nested for-loops? There’s a better way! In this presentation we will learn common coding mistakes and how to fix and optimize them.&lt;/p&gt;

&lt;h2 id=&quot;terrible-programming-languages&quot;&gt;Terrible Programming Languages&lt;/h2&gt;
&lt;p&gt;Why do esoteric programming languages exist? What does it look like to use a few of them? Find out in this presentation!&lt;/p&gt;

&lt;p&gt;&lt;code&gt;HAI&lt;/code&gt;
&lt;code&gt;CAN HAS STDIO?&lt;/code&gt;
&lt;code&gt;VISIBLE &quot;HAI WORLD!&quot;&lt;/code&gt;
&lt;code&gt;KTHXBYE&lt;/code&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Optimizing Python Code</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/optimizing-python-code"/>
   <updated>2019-03-05T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/optimizing-python-code</id>
   <content type="html">
&lt;h1 id=&quot;optimizing-python-code&quot;&gt;Optimizing (Python) code&lt;/h1&gt;
&lt;h4 id=&quot;by-josh-vita-jvita2illinoisedu&quot;&gt;By Josh Vita (jvita2@illinois.edu)&lt;/h4&gt;

&lt;p&gt;Many of us are students developing various scripts or packages (often in Python) either as the core of a thesis project or as a useful tool to help with our research. While it’s not a big deal to take a quick coffee break while your code runs for 15 minutes, this presentation is intended to help you avoid awkward conversations with your advisor because you’ve been waiting 3 days for some results.&lt;/p&gt;

&lt;p&gt;This presentation will be broken down into 3 main parts:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Things you should always do because they’re easy and good practice&lt;/li&gt;
  &lt;li&gt;Things you will often want to do, especially in scientific applications&lt;/li&gt;
  &lt;li&gt;Things you only need to do when it’s &lt;strong&gt;gotta&lt;/strong&gt; go fast&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;things-you-should-always-do-because-theyre-easy-and-good-practice&quot;&gt;Things you should always do because they’re easy and good practice&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Use list/dict/tuple comprehension&lt;/li&gt;
  &lt;li&gt;Take advantage of standard packages and pre-defined functions when possible&lt;/li&gt;
  &lt;li&gt;Use generators (where appropriate)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Each of these has it’s own purpose, but in general you can remember that:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;List comprehensions should be your go-to in most cases due to speed and readability&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;map()&lt;/code&gt; is particularly handy if your function is already defined or you need to avoid memory issues&lt;/li&gt;
  &lt;li&gt;For loops are perfectly fine, especially if you’re not trying to build a list out of the results&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more details about comparing list comprehension, loops, and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;map()&lt;/code&gt;, see &lt;a href=&quot;https://stackoverflow.com/questions/1247486/list-comprehension-vs-map&quot;&gt;this stackoverflow post&lt;/a&gt;; the top 2 answers are particularly insightful&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;timeit&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# In this case, the function is already defined
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;xs&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;lst&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;hex&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;2.81 µs ± 34.3 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;timeit&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# map() can be slightly better in this case
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;xs&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;lst&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;hex&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;2.55 µs ± 8.58 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;timeit&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# This time, we don't have a pre-defined function
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;xs&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;lst&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;1.65 µs ± 12.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;timeit&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# map() incurs an extra overhead due to repeatedly calling the lambda
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;xs&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;lst&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;list&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xs&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;1.64 µs ± 60.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Beyond built-in functions, many standard libraries provide fast, efficient functions for some common operations. Not only will these save you in terms of development time (arguably more important than runtime), but they’ll probably perform better than &lt;em&gt;I&lt;/em&gt; could write.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here are some handy libraries that I use frequently:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.python.org/3/library/itertools.html&quot;&gt;itertools&lt;/a&gt; – great for permutations/combinations, and anything involving looping over things&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.python.org/3/library/glob.html&quot;&gt;glob&lt;/a&gt; – for accessing files&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.python.org/3/library/random.html&quot;&gt;random&lt;/a&gt; – for all things related to random numbers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a comprehensive list, check out &lt;a href=&quot;https://docs.python.org/3/library/&quot;&gt;the collection of standard libraries&lt;/a&gt; that come with Python 3&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# getting permutations of items in a list -- stuff like this is what makes Python so fun
&lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;itertools&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;list_of_chars&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'A'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'B'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'C'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# cool, he used generators, list comprehension, built-in functions [str().join()], AND standard libraries all in one example!
&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;p&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;itertools&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;permutations&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;list_of_chars&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# extracting all file names with a given pattern
&lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;glob&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;glob&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;glob&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'./glob_folder/*'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;glob&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;glob&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'./glob_folder/file*_input.dat'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;glob&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;glob&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'./glob_folder/file1_*.dat'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;['./glob_folder/file1_input.dat', './glob_folder/file1_output.dat', './glob_folder/file2_input.dat', './glob_folder/file2_output.dat', './glob_folder/file3_input.dat', './glob_folder/file3_output.dat', './glob_folder/README.txt']
['./glob_folder/file1_input.dat', './glob_folder/file2_input.dat', './glob_folder/file3_input.dat']
['./glob_folder/file1_input.dat', './glob_folder/file1_output.dat']
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# sampling a list in random order
&lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;random&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sample&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;100&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;[50, 5, 69, 22, 87, 86, 29, 55, 49, 51]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Generators can be thought of as a way of generalizing the benefits mentioned for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;map()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In particular, generators can be good because they:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Avoid loading large lists into memory (see &lt;a href=&quot;https://www.youtube.com/watch?v=OSGv2VnC0go&amp;amp;t=8m17s&quot;&gt;this portion of a Youtube video&lt;/a&gt; where one of the core Python developers discusses the importance of keeping calculations in L1 cache)&lt;/li&gt;
  &lt;li&gt;Can serve as simple, efficient, and readable replacements for iterators&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# This code would create a disastrously large list ...
&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# lst = [x**x for x in range(10*100)] 
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# ... but THIS code is perfectly happy!
&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# changing [] to () makes it a 'generator expression'
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&amp;lt;generator object &amp;lt;genexpr&amp;gt; at 0x7f25ec305990&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# Here's an example of an iterator for creating a sequence of powers of two
&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;PowTwo&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# code from blog post: https://www.programiz.com/python-programming/generator
&lt;/span&gt;    
    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;__init__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;max&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;max&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;max&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;__iter__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;__next__&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;raise&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;StopIteration&lt;/span&gt;

        &lt;span class=&quot;n&quot;&gt;result&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;**&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;result&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# A generator is much simpler -- it's a function with 'yield' instead of 'return'!
&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;PowTwoGen&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;max&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;max&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;yield&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;**&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;n&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c1&quot;&gt;# The same blog post also has a cool example of pipelining using generators
&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;pipeline&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;():&lt;/span&gt;
    
    &lt;span class=&quot;k&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'sells.log'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;pizza_col&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;line&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;per_hour&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;pizza_col&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'N/A'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Total pizzas sold = &quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;sum&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;per_hour&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;things-youll-often-want-to-do-especially-in-scientific-applications&quot;&gt;Things you’ll often want to do, especially in scientific applications&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Vectorize your code&lt;/strong&gt; … unless it’s too hard – if you’re working with numbers in an array, NumPy can do pretty much everything&lt;/li&gt;
  &lt;li&gt;Parallelize your code – some code is “embarrassingly parallel” and just needs some quick imports&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;“Vectorizing” code refers to trying to structure your code in such a way that you can perform the same operation on multiple parts of a vector at the same time. For Python, this is often translated to “stuff your data into an array, then let NumPy go nuts”.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here are some tips if you’re trying to vectorize your code:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;First, profile your code using &lt;a href=&quot;https://docs.python.org/3/library/profile.html&quot;&gt;some of the common libraries&lt;/a&gt; to make sure it’s worth your time – I can’t over-emphasize the importance of this&lt;/li&gt;
  &lt;li&gt;Learn about NumPy broadcasting and &lt;a href=&quot;https://medium.com/@ian.dzindo01/what-is-numpy-newaxis-and-when-to-use-it-8cb61c7ed6ae&quot;&gt;how to use np.newaxis&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Check out the NumPy documentation for handy functions – my favorite is &lt;a href=&quot;https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.einsum.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;np.einsum&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Familiarize yourself with NumPy’s &lt;a href=&quot;https://jakevdp.github.io/PythonDataScienceHandbook/02.03-computation-on-arrays-ufuncs.html&quot;&gt;Universal Functions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is an example from &lt;a href=&quot;https://datafireball.com/2016/07/24/python-profiling-cprofile/&quot;&gt;this blog post&lt;/a&gt; showing the benefits of profiling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before trying to optimize, &lt;em&gt;always&lt;/em&gt; spend some time making sure it’s worth the effort&lt;/strong&gt;
&lt;img src=&quot;cprofile.png&quot; alt=&quot;an example using cProfile&quot; /&gt;&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;numpy&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;arange&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;210000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;reshape&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;70&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;sums&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;zeros&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;timeit&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# loops can be horribly slow, especially for high-dimensional matrices
&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shape&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]):&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shape&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]):&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;k&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shape&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]):&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;sums&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;j&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;162 ms ± 1.58 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;timeit&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# NumPy is way faster since it's calling optimized C libraries
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sums&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sum&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;axis&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;312 µs ± 1.37 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;A minor point, but when I first started programming in Python I always used to make the mistake of trying to grow NumPy arrays dynamically. This is noticeably slower and can have a significant impact for large matrices.&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;timeit&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# A naive example of building an array where each row is double the previous row
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;arange&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;reshape&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;19&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;A&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;vstack&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;393 µs ± 15.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;%%&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;timeit&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# defining the full array ahead of time helps significantly
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;zeros&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;reshape&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;arange&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;:]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;:]&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;113 µs ± 1.22 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;An example of vectorization in my work that groups element-wise multiplication along an axis followed by summation and an axis swap … all into one call&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;embedding_forces = np.einsum('pijk,pk-&amp;gt;pji', embedding_forces, uprimes)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For many problems, one of the easiest speedups can come from simply parallelizing your code. In the case of shared-memory problems, the &lt;a href=&quot;https://docs.python.org/2/library/multiprocessing.html&quot;&gt;multiprocessing&lt;/a&gt; module is a godsend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The multiprocessing module can be a quick fix when:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;You need to perform the same operations on different chunks of data (SIMD)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;multiprocessing can be used in a number of different cases; I won’t show an example here, but there are plenty of examples online such as &lt;a href=&quot;https://stackoverflow.com/questions/20887555/dead-simple-example-of-using-multiprocessing-queue-pool-and-locking&quot;&gt;this one&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Note: if you’re going to be doing lots of parallel computing in Python, you should check out &lt;a href=&quot;https://www.dabeaz.com/python/UnderstandingGIL.pdf&quot;&gt;this presentation&lt;/a&gt; by one of the major players in the Python community discussing the Global Interpreter Lock (GIL).&lt;/p&gt;

&lt;h3 id=&quot;things-you-only-need-to-do-when-its-gotta-go-fast&quot;&gt;Things you only need to do when it’s &lt;em&gt;gotta&lt;/em&gt; go fast&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;JIT compilation using &lt;a href=&quot;https://numba.pydata.org/numba-doc/dev/user/5minguide.html&quot;&gt;Numba&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Write your own libraries in C/C++, then use something like &lt;a href=&quot;https://medium.com/@shamir.stav_83310/making-your-c-library-callable-from-python-by-wrapping-it-with-cython-b09db35012a3&quot;&gt;cython&lt;/a&gt; to call the library from python&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://www.ibm.com/developerworks/community/blogs/jfp/entry/A_Comparison_Of_C_Julia_Python_Numba_Cython_Scipy_and_BLAS_on_LU_Factorization?lang=en&quot;&gt;This blog post&lt;/a&gt; provides some nice statistics looking at Numba performance on LU factorization&lt;img src=&quot;numba_performance.png&quot; alt=&quot;Comparing Numba to C for LU factorization&quot; /&gt;&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;numba&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;jit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;double&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;numpy_det_by_lu&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;1.&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;N&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;shape&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;np&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;errstate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;invalid&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'ignore'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;k&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;xk&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;k&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;N&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
                &lt;span class=&quot;n&quot;&gt;xi&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
                &lt;span class=&quot;n&quot;&gt;xi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xk&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
                &lt;span class=&quot;n&quot;&gt;xi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;k&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;k&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;xk&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;k&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:]&lt;/span&gt;
                
&lt;span class=&quot;n&quot;&gt;fastdet_by_lu&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;jit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;double&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[:],&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;double&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[:,:]))(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;numba_det_by_lu&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;other-useful-stuff&quot;&gt;Other useful stuff&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;Time-resolved memory usage using &lt;a href=&quot;https://pypi.org/project/memory-profiler/&quot;&gt;memory-profiler&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/3055477/how-slow-is-pythons-string-concatenation-vs-str-join&quot;&gt;Some performance metrics&lt;/a&gt; on why you should use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;''.join()&lt;/code&gt; over &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;+&lt;/code&gt; for string construction&lt;/li&gt;
  &lt;li&gt;Distributed-memory parallelization using &lt;a href=&quot;https://mpi4py.readthedocs.io/en/stable/&quot;&gt;mpi4py&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Posting to Git and Heritage Code Review</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/uploading-presentations-to-github-and-heritage-code-review"/>
   <updated>2019-02-20T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/uploading-presentations-to-github-and-heritage-code-review</id>
   <content type="html">&lt;h2 id=&quot;posting-your-presentation-to-github&quot;&gt;Posting your presentation to GitHub&lt;/h2&gt;

&lt;p&gt;A guide for uploading to the Illinois THW GitHub can be found at &lt;a href=&quot;https://github.com/thehackerwithin/illinois&quot;&gt;our GitHub page&lt;/a&gt;. A guide on how to edit posts using markdown can be found at &lt;a href=&quot;http://www.thehackerwithin.org/wisconsin/posts/add-your-own-page&quot;&gt;How to Add Your Own Page to Our Website&lt;/a&gt;, courtesy of Paul Wilson from the Wisconsin chapter of THW.&lt;/p&gt;

&lt;h2 id=&quot;cool-links&quot;&gt;Cool Links!&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw&quot;&gt;Coding Train&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/channel/UC0e3QhIYukixgh5VVpKHH9Q&quot;&gt;Code Bullet&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw&quot;&gt;3Blue1Brown&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Data Visualization Showcase</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/data-visualization-showcase"/>
   <updated>2019-02-06T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/data-visualization-showcase</id>
   <content type="html">&lt;h2 id=&quot;data-visualization-showcase&quot;&gt;Data Visualization Showcase&lt;/h2&gt;

&lt;p&gt;In this meeting, Cail Daley and Yubo “Paul” Yang share how they visualize data (in and out of their own work).&lt;/p&gt;

&lt;h3 id=&quot;visualize-3d-scatter-data&quot;&gt;Visualize 3D scatter data&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/scatter3d/scatter3d.pdf&quot;&gt;presentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;example 1: &lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/scatter3d/figures/crystal-scatter3d.gif&quot;&gt;rotate colored scatter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;example 2: &lt;img src=&quot;../images/crystal.gif&quot; alt=&quot;breathing isosurface&quot; /&gt;&lt;/p&gt;

&lt;p&gt;example 3: &lt;img src=&quot;../images/crystal-scan.gif&quot; alt=&quot;scanning 2D slice&quot; /&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Kickoff Meeting</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/kickoff-meeting"/>
   <updated>2019-01-15T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/kickoff-meeting</id>
   <content type="html">&lt;h2 id=&quot;kickoff-meeting&quot;&gt;Kickoff Meeting&lt;/h2&gt;

&lt;p&gt;In this meeting, we will be picking topics for the semester. Brainstorm topics you would like to see or present. If you need inspiration check out what other &lt;a href=&quot;http://www.thehackerwithin.org/&quot;&gt;THW chapters&lt;/a&gt; have done in the past and our &lt;a href=&quot;https://docs.google.com/forms/d/e/1FAIpQLSdl5AlSMBRLrz5U7vA8G_vwiW7wYH0sF7ebeLJ-Xuhq2lzhqg/viewform?usp=pp_url&quot;&gt;single-question survey&lt;/a&gt; from last semester. We can repeat topics, go more in-depth with previous topics, or go into uncharted territory!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Docker for Science</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/docker"/>
   <updated>2018-12-05T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/docker</id>
   <content type="html">&lt;h2 id=&quot;presentation&quot;&gt;Presentation&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.docker.com&quot;&gt;Docker&lt;/a&gt; is the most popular container manager in 2018.
A container is conceptually equivalent to a virtual machine (VM).
Docker can create a “container” (VM) with all dependencies for a specific app
and save an “image” (equivalent to a snapshot of the VM) to an online &lt;a href=&quot;https://hub.docker.com&quot;&gt;hub&lt;/a&gt;.
This way an application can be ran on any machine irrespective of hardware and
software environment.&lt;/p&gt;

&lt;p&gt;In this presentation&lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/docker/docker-for-science.pdf&quot;&gt;slides&lt;/a&gt;, I will first cover the basics:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;how to use existing docker images;&lt;/li&gt;
  &lt;li&gt;how to create your own image using “dockerfile”;&lt;/li&gt;
  &lt;li&gt;how to “ochestrate” multiple images using “docker-compose.yml”.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then, I will show a practical application of docker in scientific computing.
Specifically, I will compile a simulation program with non-trivial dependencies
and show how it can be ran with analysis and monitoring programs on any machine
using a single “docker-compose up” command.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/docker/heg.zip&quot;&gt;example code&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://us.pycon.org/2016/site_media/media/tutorial_handouts/DockerSlides.pdf&quot;&gt;PyCon 2015 slides&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.docker.com/samples/#tutorial-labs&quot;&gt;Official Tutorial&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Deploy to &lt;a href=&quot;https://docker-curriculum.com/&quot;&gt;Amazon cloud&lt;/a&gt; (search “AWS Elastic Container Service”)&lt;/li&gt;
  &lt;li&gt;House-keeping &lt;a href=&quot;https://cntnr.io/whats-eating-my-disk-docker-system-commands-explained-d778178f96f1&quot;&gt;tips&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Data Visualization</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/data-visualization"/>
   <updated>2018-11-07T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/data-visualization</id>
   <content type="html">&lt;h2 id=&quot;data-visualization&quot;&gt;Data Visualization&lt;/h2&gt;

&lt;p&gt;This weeks THW meeting will give an overview of &lt;a href=&quot;https://github.com/kamuda1/THW-Presentations/blob/master/data-visualization/Matplotlib%20Best%20Practices.ipynb&quot;&gt;python data visualization&lt;/a&gt; packages and best practices for plotting using matplotlib. There will also be a chance for everyone to visualize data in a group activity. To get the most from this activity, please bring a laptop with your preferred data visualization software installed.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Automated Documentation & Software Testing</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/automated-documentation-software-testing"/>
   <updated>2018-10-17T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/automated-documentation-software-testing</id>
   <content type="html">&lt;h2 id=&quot;automated-documentation-and-software-testing&quot;&gt;Automated Documentation and Software Testing&lt;/h2&gt;

&lt;p&gt;In this meeting we will see a presentation on automated documentation and software testing given by Shane Keniley and Nate Walter. An automated documentation generator makes it easier for you to create a standardized document that explains how your code works. Software testing checks if your code is actually doing what you expect it to. This is especially helpful when updating, upgrading, and working collaboratively on a project.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Data Science & Machine learning</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/data-science-machine-learning"/>
   <updated>2018-10-03T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/data-science-machine-learning</id>
   <content type="html">&lt;h2 id=&quot;data-science&quot;&gt;Data Science&lt;/h2&gt;

&lt;p&gt;The first part of this weeks THW meeting will focus on data science. Together we will explore one of the most fundamental datasets in astronomy—the HR diagram—in order to show how we can learn about stellar evolution, structure, and populations from only two dimensions of data. In the process, we will touch on some of the techniques (bias identification, clustering) and coding tools (pandas, sklearn, seaborn) that are useful in data science, as well as a popular stellar evolution code, MESA.&lt;/p&gt;

&lt;h2 id=&quot;machine-learning&quot;&gt;Machine learning&lt;/h2&gt;

&lt;p&gt;The second part will explore &lt;a href=&quot;https://github.com/ShubhangG/ML-Workshop-for-THW&quot;&gt;machine learning&lt;/a&gt;. In this talk we’ll be doing some fun hands on machine learning (from a jupyter notebook). The activity is to get us all familiar with the data science process and tackle a classification problem. By the end of the workshop you should be able to identify a data science problem and have a feel of the procedure of solving said problem.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Intro to Python & Python Tips</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/intro-to-python-and-python-tips"/>
   <updated>2018-09-05T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/intro-to-python-and-python-tips</id>
   <content type="html">&lt;h1 id=&quot;intro-to-python--python-tips&quot;&gt;Intro to Python &amp;amp; Python Tips&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/python_tips/Python%20Tutorial.ipynb&quot;&gt;This tutorial&lt;/a&gt; will give new Python users introductory skills and sharpen skills for intermediate users. We will also share tips and tricks in a group discussion.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Hardware and Software Accelerators</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/hardware-software-accel"/>
   <updated>2018-04-18T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/hardware-software-accel</id>
   <content type="html">&lt;h2 id=&quot;attending&quot;&gt;Attending&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;bleeding-edge-stuff&quot;&gt;Bleeding Edge Stuff&lt;/h2&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic-&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic--1&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

</content>
 </entry>
 
 <entry>
   <title>Game Engines for Scientific Visualizations</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/game-engines-viz"/>
   <updated>2018-04-04T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/game-engines-viz</id>
   <content type="html">&lt;h2 id=&quot;presentation&quot;&gt;Presentation&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Fermi surface from quantum Monte Carlo (QMC).
  &lt;img src=&quot;../images/fermi_sea.png&quot; alt=&quot;fermi surface&quot; /&gt;&lt;/li&gt;
  &lt;li&gt;normal mode from density functional theory (DFT).
  &lt;img src=&quot;../images/mode4.gif&quot; alt=&quot;normal mode&quot; /&gt;&lt;/li&gt;
  &lt;li&gt;particle trajectories from molecular dynamics (MD).
  &lt;img src=&quot;../images/lj_3bd.png&quot; alt=&quot;lennard jones&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;tutorials&quot;&gt;Tutorials&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://youtu.be/kFaEf8V8XYY?t=802&quot;&gt;lighting&lt;/a&gt; the scene&lt;/li&gt;
  &lt;li&gt;throw some &lt;a href=&quot;https://youtu.be/pdjFm7YA8vI?t=181&quot;&gt;flaming chairs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;make &lt;a href=&quot;https://youtu.be/PpVfL2OhkmI?t=248&quot;&gt;tables&lt;/a&gt; rain from the sky&lt;/li&gt;
  &lt;li&gt;explode some &lt;a href=&quot;https://youtu.be/9-7SmkasS_A?t=1241&quot;&gt;cows&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;make &lt;a href=&quot;https://youtu.be/NSHlKxqoc9s?t=252&quot;&gt;birds fly&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;state-of-unreal&quot;&gt;State of Unreal&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://youtu.be/jwKeLsTG12A?t=999&quot;&gt;Siren&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://youtu.be/jwKeLsTG12A?t=2391&quot;&gt;Star Wars&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=r5cf0-q3ikA&quot;&gt;Wheat Field&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://youtu.be/E3LtFrMAvQ4?t=453&quot;&gt;Interior Design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Make/CMake and git/Github</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/make-git"/>
   <updated>2018-03-07T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/make-git</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.thehackerwithin.org/illinois/people.html&quot;&gt;Aaron Anderson&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;makecmake&quot;&gt;Make/CMake&lt;/h2&gt;

&lt;p&gt;Resources:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/make.md&quot;&gt;THW - Introduction to make&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://cmake.org/cmake-tutorial/&quot;&gt;Official CMake tutorial&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/thehackerwithin/illinois/tree/master/cmake_tutorial&quot;&gt;Simple CMake example files&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;gitgithub&quot;&gt;git/Github&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/git.md&quot;&gt;git and Github&lt;/a&gt; tutorial for editing, tracking, and hosting the THW-IL website.&lt;/p&gt;

&lt;p&gt;Follow-up to question about cleaning up lots of small commits: &lt;a href=&quot;https://stackoverflow.com/questions/5189560/squash-my-last-x-commits-together-using-git&quot;&gt;Squash my last X commits together&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to got through the git tutorial and add your profile to the &lt;a href=&quot;http://www.thehackerwithin.org/illinois/people.html&quot;&gt;People&lt;/a&gt; section of the website (link to your personal website or email or snail mail address).  The qualifying criteria for being an official member of THW is a pull request to the &lt;a href=&quot;http://www.thehackerwithin.org/illinois/people.html&quot;&gt;People&lt;/a&gt; page.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Data Mining and Machine Learning</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/data-mining-machine-learning"/>
   <updated>2018-02-21T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/data-mining-machine-learning</id>
   <content type="html">&lt;h1 id=&quot;data-mining&quot;&gt;Data Mining&lt;/h1&gt;

&lt;p&gt;Mark Kamuda:
&lt;a href=&quot;https://github.com/kamuda1/THW-Presentations/blob/master/DataMiningandWebScrapping.ipynb&quot;&gt;Link to presentation&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;machine-learning&quot;&gt;Machine Learning&lt;/h1&gt;

&lt;p&gt;Jim Wilson&lt;/p&gt;

&lt;h2 id=&quot;attending&quot;&gt;Attending&lt;/h2&gt;

</content>
 </entry>
 
 <entry>
   <title>Python & C++ style guides</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/style-guides"/>
   <updated>2018-02-07T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/style-guides</id>
   <content type="html">&lt;h2 id=&quot;style-guides-for-python--c&quot;&gt;Style Guides for Python &amp;amp; C++&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.python.org/dev/peps/pep-0008/&quot;&gt;pep8&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://google.github.io/styleguide/cppguide.html&quot;&gt;Google C++ style guid&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>Spring Kick-Off & Intro Python Unit Testing</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/spring-kickoff-unit-testing"/>
   <updated>2018-01-17T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/spring-kickoff-unit-testing</id>
   <content type="html">&lt;h2 id=&quot;attending&quot;&gt;Attending&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;intro-python-unit-testing&quot;&gt;Intro Python Unit Testing&lt;/h2&gt;

&lt;h2 id=&quot;bleeding-edge-stuff&quot;&gt;Bleeding Edge Stuff&lt;/h2&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic-&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic--1&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

</content>
 </entry>
 
 <entry>
   <title>Matplotlib Tips & Tricks</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/plotting"/>
   <updated>2017-12-06T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/plotting</id>
   <content type="html">&lt;h2 id=&quot;matplotlib-python&quot;&gt;Matplotlib (Python)&lt;/h2&gt;

&lt;p&gt;The major plotting package for Python is Matplotlib and is the basis for many other popular plotting packages.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://matplotlib.org/&quot;&gt;Matplotlib&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://seaborn.pydata.org/&quot;&gt;Seaborn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Interesting explanation about Matplotlib’s newest default color scheme, based on color natural perception: &lt;a href=&quot;https://youtu.be/xAoljeRJ3lU&quot;&gt;SciPy 2015&lt;/a&gt;
 (more than just why jet sucks, which it does)&lt;/p&gt;

&lt;p&gt;Code for today’s talk can be found &lt;a href=&quot;https://github.com/ekmolloy/matplotlib-tutorial&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;attending&quot;&gt;Attending&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Database Your Data</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/databases"/>
   <updated>2017-11-15T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/databases</id>
   <content type="html">&lt;h2 id=&quot;attending&quot;&gt;Attending&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;databases-hdf5--sqlite&quot;&gt;Databases: HDF5 &amp;amp; SQLite&lt;/h2&gt;

&lt;p&gt;Data is created and curated in a number of ways and standardized databases can offer a lot help to researchers, experimental and computational.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.hdfgroup.org/&quot;&gt;HDF5&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.sqlite.org/&quot;&gt;SQLite&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic-&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic--1&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

</content>
 </entry>
 
 <entry>
   <title>Natural Language Processing</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/language-processing"/>
   <updated>2017-11-01T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/language-processing</id>
   <content type="html">&lt;h2 id=&quot;attending&quot;&gt;Attending&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;natural-language-processing&quot;&gt;Natural Language Processing&lt;/h2&gt;

&lt;p&gt;NLP covers both text and speech processing using simple to complex software. This talk will cover…&lt;/p&gt;

&lt;h2 id=&quot;bleeding-edge-stuff&quot;&gt;Bleeding Edge Stuff&lt;/h2&gt;

&lt;p&gt;Brand spanking new library is brand spanking new&lt;/p&gt;

&lt;p&gt;Code examples can be found &lt;a href=&quot;https://github.com/thehackerwithin/illinois/tree/master/bleeding-edge-stuff&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic-&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic--1&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

</content>
 </entry>
 
 <entry>
   <title>Sphinx Documentation & Python Packaging</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/sphinx"/>
   <updated>2017-10-18T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/sphinx</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Oct. 18, 2017&lt;/li&gt;
  &lt;li&gt;Time: 11:30 AM - lunch; 12:00 PM - tutorial&lt;/li&gt;
  &lt;li&gt;Location: 2100 NCSA&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;generate-api-documentation-using-sphinx&quot;&gt;Generate API Documentation using Sphinx&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/thehackerwithin/illinois/tree/master/sphinx/sphinx.pdf&quot;&gt;presentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;sphinx-documentation--python-packaging&quot;&gt;Sphinx Documentation &amp;amp; Python Packaging&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.sphinx-doc.org/en/stable/&quot;&gt;Sphinx&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://packaging.python.org/&quot;&gt;Python Packaging&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Awesome Plots!</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/awesome-plots"/>
   <updated>2017-10-04T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/awesome-plots</id>
   <content type="html">&lt;h2 id=&quot;attending&quot;&gt;Attending&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;awesome-plots&quot;&gt;Awesome Plots!&lt;/h2&gt;

&lt;p&gt;Each member will submit plots to show-off and to get help from members to improve them from good to great!&lt;/p&gt;

&lt;p&gt;Upload your plots: &lt;a href=&quot;https://docs.google.com/presentation/d/13f0KNJ7-buo06GKzqF6wQHJTYfEpFraMrPo2lTvid8c/edit?usp=sharing&quot;&gt;Google Doc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The more plots submitted, the more useful it will be to everyone.&lt;/p&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic-&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic--1&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

</content>
 </entry>
 
 <entry>
   <title>Introduction to TensorFlow</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/tensorflow"/>
   <updated>2017-09-20T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/tensorflow</id>
   <content type="html">&lt;h2 id=&quot;attending&quot;&gt;Attending&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;introduction-to-tensorflow&quot;&gt;Introduction to TensorFlow&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tensorflow.org/&quot;&gt;TensorFlow&lt;/a&gt; is an open-source software library for machine intelligence.&lt;/p&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic-&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic--1&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

</content>
 </entry>
 
 <entry>
   <title>Fall 2017 Kick-off</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/fall-kickoff"/>
   <updated>2017-09-06T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/fall-kickoff</id>
   <content type="html">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;/h2&gt;

&lt;p&gt;This meeting is to introduce The Hacker Within-Illinois, discuss topics, and schedule speakers for the semester.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Please fill out &lt;a href=&quot;https://goo.gl/forms/bQgGLTz4lvfNtSGM2&quot;&gt;questionnaire&lt;/a&gt; before meeting.&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Sept 6, 2017&lt;/li&gt;
  &lt;li&gt;Time: lunch - 11:30 AM; meeting - 12:00 pm
    &lt;ul&gt;
      &lt;li&gt;Lunch generously provided by &lt;a href=&quot;http://cse.illinois.edu/&quot;&gt;CSE&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;2100 NCSA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Topic: Fall 2017 Kick-Off&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;attending&quot;&gt;Attending&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>HPC and Parallelization</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/hpc-f16"/>
   <updated>2016-12-07T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/hpc-f16</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Date: December 07, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-hpc&quot;&gt;Technical: HPC&lt;/h2&gt;

&lt;p&gt;&amp;lt;+Description Here+&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks:&lt;/h2&gt;

&lt;p&gt;&amp;lt;+Lightning Talks Here+&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;p&gt;&amp;lt;+how many+&amp;gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Best Practices</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/best-practices-f16"/>
   <updated>2016-11-30T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/best-practices-f16</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Date: November 30, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-best-practices&quot;&gt;Technical: Best Practices&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thehackerwithin.org/illinois/_people/Yubo_Yang.html&quot;&gt;Paul Yang&lt;/a&gt; presents &lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/best_practices/best_practices.ipynb&quot;&gt;best practices&lt;/a&gt; in scientific computing.&lt;/p&gt;

&lt;p&gt;&amp;lt;+Description Here+&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks:&lt;/h2&gt;

&lt;p&gt;&amp;lt;+Lightning Talks Here+&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;p&gt;&amp;lt;+how many+&amp;gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Statistical Methods</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/stat-methods-f16"/>
   <updated>2016-11-16T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/stat-methods-f16</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Date: November 16, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-statistical-methods&quot;&gt;Technical: Statistical Methods&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thehackerwithin.org/illinois/_people/Andy_Long.html&quot;&gt;Andy Long&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;+Description Here+&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks:&lt;/h2&gt;

&lt;p&gt;&amp;lt;+Lightning Talks Here+&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;p&gt;&amp;lt;+how many+&amp;gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Testing</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/testing-f16"/>
   <updated>2016-11-02T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/testing-f16</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Date: November 02, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-testing&quot;&gt;Technical: Testing&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://kdhuff.web.engr.illinois.edu&quot;&gt;Katy Huff&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;python&quot;&gt;Python&lt;/h3&gt;

&lt;p&gt;This lesson will bounce around in the following notebooks:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/katyhuff/python-testing&quot;&gt;https://github.com/katyhuff/python-testing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/physics-codes/seminar/blob/master/ch18-testing.ipynb&quot;&gt;https://github.com/physics-codes/seminar/blob/master/ch18-testing.ipynb&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;c&quot;&gt;C++&lt;/h3&gt;
&lt;p&gt;This lesson will bounce around the examples in the Cyclus code suite, which use GoogleTest.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/cyclus/cyclus&quot;&gt;https://github.com/cyclus/cyclus&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks:&lt;/h2&gt;

&lt;p&gt;&amp;lt;+Lightning Talks Here+&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;p&gt;&amp;lt;+how many+&amp;gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Make, CMake, Docker, & Vagrant - Making it easier to build software</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/make-build-sys-f16"/>
   <updated>2016-10-19T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/make-build-sys-f16</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Date: October 19, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-make-cmake-docker&quot;&gt;Technical: Make, CMake, Docker&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thehackerwithin.org/illinois/_people/Gregory_Hart.html&quot;&gt;Greg Hart&lt;/a&gt;
&lt;a href=&quot;http://www.thehackerwithin.org/illinois/_people/Alex_Lindsay.html&quot;&gt;Alex Lindsay&lt;/a&gt;
&lt;a href=&quot;http://kdhuff.web.engr.illinois.edu&quot;&gt;Katy Huff&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;make-introduction&quot;&gt;Make Introduction&lt;/h1&gt;

&lt;p&gt;Make is software that allows you to carry out a series of tasks in a way that respects the dependencies amongst files or tasks. While it was develovoped for bulding software (i.e. compiling C++ code, linking the files, and placing the executable) It can be used for more then that. The Make manual states “You can use make with any programming language whose compiler can be run with a shell command. Indeed, make is not limited to programs. You can use it to describe any task where some files must be updated automatically from others whenever the others change.” I will cover the basics of Make and give an idea of how powerful and complex it can be.&lt;/p&gt;

&lt;h3 id=&quot;basic-makefile&quot;&gt;Basic Makefile&lt;/h3&gt;

&lt;p&gt;Here is a basic make file:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$cat Makefile
test: test.o anotherTest.o
        gcc -Wall test.o anotherTest.o -o test

test.o: test.c
        gcc -c -Wall test.c

anotherTest.o: anotherTest.c
        gcc -c -Wall anotherTest.c

clean:
        rm -rf *.o test
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now running make will compile both .c files and link them into the executable test:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$make
gcc -c -Wall test.c
gcc -c -Wall anotherTest.c
gcc -Wall test.o anotherTest.o -o test
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here is what is happening. When you run make it looks for a file named Makefile in the current directory and looks at the first target (thing/name on the left of the colon). It then “makes” this target by running the associated command(s) (the indented line(s) following the target) after checking the prerequisites (the things/names after the colon).This checking can lead to other targets being made.&lt;/p&gt;

&lt;p&gt;Here specifically the target test depends on test.o and anotherTest.o so make checks for files/targets with these names. It finds the targets test.o and anotherTest.o and then checks their prerequisites test.c and anotherTest.c, but there are no targets for test.c or anotherTest.c so the rules are executed. Make checks if test.o’s time stape is older then test.c’s since test.o doesn’t exist its timestamp is older and the rule is run (the indented lines executed). The same happens for anotherTest.o. With these prerequistites taken care of make goes back to the rule for test and makes it since test is “older” then it’s prerequisites.&lt;/p&gt;

&lt;p&gt;Since rules are only executed if the prerequites have changed since the target was made if we run make again nothing will happen:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$make
make: Nothing to be done for `test'.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Make makes incremental builds by only building targets if something changed that effects them. For example if we edit test.c and run make:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ make
gcc -c -Wall test.c
gcc -Wall test.o anotherTest.o -o test
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;anotherTest.o isn’t recompiled because the changes to test.c do not affect it. For this simple example this is not a big deal, but for more complicated projects this can save a lot of time.&lt;/p&gt;

&lt;p&gt;Make automatically builds the first target in the file. However you can specify the target by listing it after make (i.e. make clean). It is very common to have a makefile (such as this exmaple) with a target executable and a clean target that deletes the executable and all the .o files. Often clean is used if you want to rebuild everything regradless of when files were edited, however the -B option unconditionally makes all targets. If your makefile is not named Makefile use -f &lt;strong&gt;file&lt;/strong&gt;. If your makefile (and everything else) is not in the working directory use -C &lt;strong&gt;dir&lt;/strong&gt;. Make will actually switch to this directory and run then switch back.&lt;/p&gt;

&lt;h3 id=&quot;adding-variables&quot;&gt;Adding variables&lt;/h3&gt;

&lt;p&gt;In a makefile you can use varibles. The are declered like this:&lt;/p&gt;

&lt;p&gt;CXX = g++&lt;/p&gt;

&lt;p&gt;and are used like this:&lt;/p&gt;

&lt;p&gt;$(CXX)&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$cat Makefile
CC = gcc
Warnings = -Wall

test: test.o anotherTest.o
        $(CC) $(Warnings) test.o anotherTest.o -o test

test.o: test.c
        $(CC) -c $(Warnings) test.c

anotherTest.o: anotherTest.c
        $(CC) -c $(Warning) anotherTest.c

clean:
        rm -rf *.o test
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;With these varables we only have to edit one line if we want to change the compiler or turn off the warnings by commenting out the line that defines Warnings. Alternately we could add a -g to the variable Warnings if we wanted to debug our code.&lt;/p&gt;

&lt;p&gt;There are magic variables that are important to know about. The above file could be rewritten as:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$cat Makefile
CC = gcc
Warnings = -Wall

test: test.o anotherTest.o
        $(CC) $(Warnings) $^ -o $@

test.o: test.c
        $(CC) -c $(Warnings) $&amp;lt;

anotherTest.o: anotherTest.c
        $(CC) -c $(Warning) $&amp;lt;

clean:
        rm -rf *.o test
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here $@ becomes the target, $&amp;lt; is the first prerequesite, and $^ is all the prerequisites. This has made the file less readable, but doesn’t offer any benefit in this simiple example.&lt;/p&gt;

&lt;h3 id=&quot;a-more-complicated-example&quot;&gt;A More complicated example&lt;/h3&gt;

&lt;p&gt;Here is a “real” makefile based on one from my research:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;CXX = g++
DEBUG = n
USE_OMP = n
CXXFLAGS = -O2 -I/share/apps/include -I./include -I/usr/lib64 -I/usr/lib64/atlas -DUSE_BLAS -DUSE_LAPACK
LIBS = -L/share/apps/lib -l:libtrng4.a -L./lib -lblas /usr/lib64/atlas/liblapack.so
CXXLDFLAGS = -O2

#if DEBUG is set to y add debug flags to CXXFLAGS
ifeq ($(DEBUG),y)
        CXXFLAGS += -DDEBUG
        CXXFLAGS += -g
endif

#if USE_OMP is set to y add libraries for OMP
ifeq ($(USE_OMP),y)
        CXXFLAGS += -fopenmp
        LIBS += -lgomp
endif

#create a variable, CPPS, with all the files in the directory that end in .cpp
CPPS = $(wildcard *.cpp)
#create a variable, OBJS, with the extensions to the sorce files changed from .cpp to .o
OBJS = $(CPPS:.cpp=.o)
#create a list of the file names without extensions
SOURCE = $(foreach file,$(CPPS),$(notdir $(basename $(file))))

#create the executable dependent on all the object files
PottsOMP: $(OBJS)
        $(CXX) $(CXXLDFLAGS) $(OBJS) -o $@ $(LIBS)

#From each .cpp file in the directory create a rule for a .o file of the same name dependent on this .cpp file. There is another (deprecated) way of doing this .cpp.o:
%.o: %.cpp
        $(CXX) $(CXXFLAGS) -c $&amp;lt;

clean:
        rm -f PottsOMP *.exe *.o *~

#This target creates a file, depends.mk, with the depencies for each .o file. This saves one the trouble of trying to keep track of the .h files themselves.
depends : 
	@ rm -f depends.mk
	@ for f in $(SOURCE); do $(CXX) -MM $$f.cpp -MT $$f.o &amp;gt;&amp;gt; depends.mk; done

#include the file created by the above target
include depend.mk

$cat depend.mk
main.o: main.cpp main.h functions.h ran2.h mersenne.h grid.h blas.h lapack.h
functions.o: functions.cpp functions.h ran2.h
ran2.o: ran2.cpp ran2.h
mersenne.o: mersenne.cpp mersenne.h
grid.o: grid.cpp grid.h
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here I am defining a number of variables to set the compiler and compiler flags. Then I create a list of all the .cpp files in this directory and create a corresponding list of .o files. Next is the target for the executable. The next is strange but powerful. Here the % acts as a wildcard and we get a target for very .cpp file in the directory. This way we do not have to write out the rules for each file. It does not matter if the number of files change. We will have a rule for each one. Next I have the standard clean target. Next is a line creating a seperate file with depences and then an include line to include this file.&lt;/p&gt;

&lt;p&gt;=================&lt;/p&gt;

&lt;h2 id=&quot;other-uses-for-make&quot;&gt;Other uses for Make&lt;/h2&gt;

&lt;p&gt;Many people like to mention that Make can be used for things other than compiling code. However it is very hard to find any examples of this. Several people mention using it to manage a website but I couldn’t find any examples of that. &lt;a href=&quot;http://stackoverflow.com/questions/395234/any-interesting-uses-of-makefiles-to-share&quot;&gt;This&lt;/a&gt; stackover posts talks about using Make for parallel bash scripts.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://bost.ocks.org/mike/make/&quot;&gt;Mike Bostock&lt;/a&gt; says, “Makefiles are machine-readable documentation that make your workflow reproducible”. He suggests using them for downloading data, processing data, and making plots.&lt;/p&gt;

&lt;h2 id=&quot;cmake&quot;&gt;CMake&lt;/h2&gt;

&lt;p&gt;Katy will start with &lt;a href=&quot;https://cmake.org/cmake-tutorial/&quot;&gt;the official CMake 
tutorial&lt;/a&gt; and will then skim two examples of 
real-world CMake use (Cyclus and HDF5).&lt;/p&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks:&lt;/h2&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;p&gt;&amp;lt;+how many+&amp;gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Git and GitHub</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/git-f16"/>
   <updated>2016-10-05T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/git-f16</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Date: October 05, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-git-and-github&quot;&gt;Technical: Git and GitHub&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thehackerwithin.org/illinois/_people/Aaron_Anderson.html&quot;&gt;Aaron Anderson&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;+Description Here+&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks:&lt;/h2&gt;

&lt;p&gt;&amp;lt;+Lightning Talks Here+&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;p&gt;&amp;lt;+how many+&amp;gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Python</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/python-f16"/>
   <updated>2016-09-21T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/python-f16</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Date: September 21, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-python&quot;&gt;Technical: Python&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thehackerwithin.org/illinois/_people/Yubo_Yang.html&quot;&gt;Paul Yang&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;+Description Here+&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks:&lt;/h2&gt;

&lt;p&gt;&amp;lt;+Lightning Talks Here+&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;p&gt;&amp;lt;+how many+&amp;gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Python Tutorial</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/python-tutorial"/>
   <updated>2016-09-20T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/python-tutorial</id>
   <content type="html">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;/h2&gt;

&lt;p&gt;I will present on basic usage of python for array manipulation, plotting, text parsing and database manipulation. The tutorial file is available on &lt;a href=&quot;https://github.com/Paul-St-Young/share/blob/master/python-tutorial/python.ipynb&quot;&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Sep 21, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;https://www.google.com/maps/place/National+Center+for+Supercomputing+Applications/@40.1149202,-88.2270529,17z/data=!3m1!4b1!4m2!3m1!1s0x880cd76a466b2661:0x9126ea842d5a08ba&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Topic: Python Tutorial&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Bourne Again - Intro to BASH and Scripting</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/shell-f16"/>
   <updated>2016-09-07T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/shell-f16</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Date: September 07, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-bourne-again-intro-to-bash-and-scripting&quot;&gt;Technical: Bourne-Again: Intro to BASH and Scripting&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thehackerwithin.org/illinois/_people/Andy_Long.html&quot;&gt;Andy Long&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This session will cover a brief introduction to the Bourne-Again SHell (BASH), covering the following topics:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;File system navigation&lt;/li&gt;
  &lt;li&gt;File manipulation&lt;/li&gt;
  &lt;li&gt;Pipes&lt;/li&gt;
  &lt;li&gt;Conditionals&lt;/li&gt;
  &lt;li&gt;Loops&lt;/li&gt;
  &lt;li&gt;Functions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using these techniques, we will walk through an example bash script used to compute the prime factorization of an integer.&lt;/p&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks:&lt;/h2&gt;

&lt;p&gt;&amp;lt;+Lightning Talks Here+&amp;gt;&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;p&gt;&amp;lt;+how many+&amp;gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Fall 2016 Kick-off</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/fall-kickoff"/>
   <updated>2016-08-24T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/fall-kickoff</id>
   <content type="html">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;/h2&gt;

&lt;p&gt;This meeting is to introduce The Hacker Within-Illinois, discuss topics, and schedule speakers for the semester.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Please fill out &lt;a href=&quot;https://goo.gl/forms/KUVXSmGlDi0yT0Yz2&quot;&gt;questionnaire&lt;/a&gt; before meeting.&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Aug 24, 2016&lt;/li&gt;
  &lt;li&gt;Time: lunch - 11:30 AM; meeting - 12:00 pm&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Topic: Fall 2016 Kick-Off&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;attending&quot;&gt;Attending&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Predicting Earth Surface Temperature with Machine Learning</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/predict-earth-temp"/>
   <updated>2016-04-27T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/predict-earth-temp</id>
   <content type="html">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;/h2&gt;

&lt;p&gt;Machine learning can be applied to many areas and predicting the surface temperature is helpful for many areas of science. We’ll work through an example supplied by &lt;a href=&quot;https://www.kaggle.com/berkeleyearth/climate-change-earth-surface-temperature-data&quot;&gt;Kaggle&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Apr 27, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;https://www.google.com/maps/place/National+Center+for+Supercomputing+Applications/@40.1149202,-88.2270529,17z/data=!3m1!4b1!4m2!3m1!1s0x880cd76a466b2661:0x9126ea842d5a08ba&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Using Brain Connectivity and Machine Learning to Understand Skill Learning</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/brain-connectivity-machine-learning"/>
   <updated>2016-03-02T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/brain-connectivity-machine-learning</id>
   <content type="html">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;/h2&gt;

&lt;p&gt;Machine learning approaches offer an important advantage over classical approaches to statistical prediction by preventing overfitting, thus creating models that are more generalizable and likely to replicate. In the current presentation, I will introduce a simple to use machine learning package that we created to analyze neuroimaging data, and I demonstrate how we’ve applied it to real data. Acquisition of motor skills is thought to depend highly on interaction between the motor system and subcortical structures. In our demonstration, we used this machine learning package to examine how functional brain network connectivity in the subcortical and motor networks predict initial performance on a complex motor task, as well as training-induced improvements following 20 hours of training. By contrasting the predictive success of different types of feature sets, we explore how the connectivity both within and between these networks contain differential information for predicting individual performance and learning rate. We also interrogate sets of features that are most reliably included in the models with high predictive accuracy, and discuss what these highly successful feature sets imply for learning and performance of complex motor tasks.&lt;/p&gt;

&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Feb 3, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;https://www.google.com/maps/place/National+Center+for+Supercomputing+Applications/@40.1149202,-88.2270529,17z/data=!3m1!4b1!4m2!3m1!1s0x880cd76a466b2661:0x9126ea842d5a08ba&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Topic: Using Brain Connectivity and Machine Learning to Understand Skill Learning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Bio:&lt;/p&gt;

&lt;p&gt;Aki Nikolaidis investigates how brain networks, metabolism, and structure contribute to individual differences in executive function, intelligence, and learning rates. His work has also focused on understanding how cognitive training drives brain plasticity and improvements in cognition.  More broadly, he is interested in using cutting edge statistical methodology to understand how patterns of large scale brain plasticity drive forms of learning that generalize across multiple contexts.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>High Performance Computing with Accelerators</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/hpc-with-accelerators"/>
   <updated>2016-02-17T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/hpc-with-accelerators</id>
   <content type="html">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;/h2&gt;

&lt;p&gt;Senior Research Scientist &lt;a href=&quot;http://www.ncsa.illinois.edu/People/kindr/&quot;&gt;Dr. Volodymyr Kindratenko&lt;/a&gt; will give an overview of his research with &lt;a href=&quot;http://www.ncsa.illinois.edu/People/kindr/projects/hpca/index.html&quot;&gt;High Performance Computing with Accelerators&lt;/a&gt;.  If members have a need or interest in trying accelerators, then he will provide access to THW members.&lt;/p&gt;

&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Feb 3, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;https://www.google.com/maps/place/National+Center+for+Supercomputing+Applications/@40.1149202,-88.2270529,17z/data=!3m1!4b1!4m2!3m1!1s0x880cd76a466b2661:0x9126ea842d5a08ba&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Topic: High Performance Computing with Accelerators&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Jump Start Julia with Path Integral Monte Carlo (PIMC)</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/jump-start-julia-with-pimc"/>
   <updated>2016-02-03T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/jump-start-julia-with-pimc</id>
   <content type="html">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;/h2&gt;

&lt;p&gt;Interpretive languages are easy to use but slow. Compiled languages are fast but hard to develop. &lt;a href=&quot;http://julialang.org/&quot;&gt;Julia&lt;/a&gt; seeks to deliver the best of both worlds as an interpretive language that is as fast as Fortran. Julia is also a modern language that is designed with cloud computing, distributed computing and data mining in mind. Participants will experience the ease and speed of Julia by implementing the path integral Monte Carlo algorithm to solve a quantum harmonic oscillator and compare speeds to a python equivalent. Jupyter notebooks for this tutorial are available at &lt;a href=&quot;http://nbviewer.jupyter.org/github/Paul-St-Young/share/blob/master/julia-tutorial-pimc/python_vs_julia/julia-pimc.ipynb&quot;&gt;julia notebook&lt;/a&gt; and &lt;a href=&quot;http://nbviewer.jupyter.org/github/Paul-St-Young/share/blob/master/julia-tutorial-pimc/python_vs_julia/python-pimc.ipynb&quot;&gt;python notebook&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A short summary of PIMC can be found &lt;a href=&quot;https://github.com/Paul-St-Young/share/blob/master/julia-tutorial-pimc/doc/pimc-summary.pdf&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A short feature demonstration of julia can be found &lt;a href=&quot;http://nbviewer.jupyter.org/github/Paul-St-Young/share/blob/master/julia-tutorial-pimc/julia-basics.ipynb&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Feb 3, 2016&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;https://www.google.com/maps/place/National+Center+for+Supercomputing+Applications/@40.1149202,-88.2270529,17z/data=!3m1!4b1!4m2!3m1!1s0x880cd76a466b2661:0x9126ea842d5a08ba&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Topic: Julia vs. Python in PIMC&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;##Notes:&lt;/p&gt;

&lt;p&gt;Julia installation scripts for &lt;a href=&quot;https://github.com/Paul-St-Young/share/blob/master/julia-tutorial-pimc/setup-fedora23.sh&quot;&gt;Fedora 23&lt;/a&gt; and &lt;a href=&quot;https://github.com/Paul-St-Young/share/blob/master/julia-tutorial-pimc/setup-ubuntu14.sh&quot;&gt;Ubuntu 14.04&lt;/a&gt;. Syntax highlighting in vim can be nicely integrated through &lt;a href=&quot;http://publish.illinois.edu/yubo-paul-yang/tutorials/julia/&quot;&gt;vundle&lt;/a&gt;.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Building a Website with Github</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/Build-Website-with-Github"/>
   <updated>2016-01-20T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/Build-Website-with-Github</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Jan 20, 2016&lt;/li&gt;
  &lt;li&gt;Time: 11:30 AM - lunch; 12:00 PM - tutorial&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;2000 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;building-a-website-with-github&quot;&gt;Building a Website with Github&lt;/h2&gt;

&lt;p&gt;Creating a website is a great way to have a professional presence dedicated to you and your work. 
As a computational scientist/engineer, utilizing Github’s &lt;a href=&quot;https://pages.github.com/&quot;&gt;pages&lt;/a&gt; free webshosting allows you to get up and runnig quickly, it helps you become more comfortable with git, connects you to your contributions to open-source projects, and your stand apart from your other colleagues.&lt;/p&gt;

&lt;p&gt;This tutorial will walk you through the steps of initializing the website (or cloning a template) and add your first content.&lt;/p&gt;

&lt;h3 id=&quot;2-ways-to-build-website&quot;&gt;2 ways to build website&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://pages.github.com/&quot;&gt;Github Pages intro&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;“Good hackers copy, great artists steal!”
  	- &lt;a href=&quot;http://jekyllthemes.org/&quot;&gt;Free Jekyll Themes&lt;/a&gt;
  	- &lt;a href=&quot;https://github.com/svmiller/steve-ngvb-jekyll-template&quot;&gt;Github user website template&lt;/a&gt;
  		- UIUC alum&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Spring '16 planning</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/Spring-16-Planning"/>
   <updated>2015-12-02T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/Spring-16-Planning</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Dec 2, 2015&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;1040 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;spring-16-planning&quot;&gt;Spring ‘16 Planning&lt;/h2&gt;

&lt;p&gt;There has been a lot of interest in THW at Illinois but we need to continue to provide the resources students want to help them excel!&lt;/p&gt;

&lt;p&gt;Questions to answer:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;What &lt;strong&gt;has&lt;/strong&gt; and &lt;strong&gt;hasn’t&lt;/strong&gt; worked?
    &lt;ul&gt;
      &lt;li&gt;Technical talks (e.g. git, bash, make, NAMD/VMD)&lt;/li&gt;
      &lt;li&gt;Reserach talks&lt;/li&gt;
      &lt;li&gt;Meeting time&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;What topics should be covered?&lt;/li&gt;
  &lt;li&gt;Is there interested in long-term learning?
    &lt;ul&gt;
      &lt;li&gt;Cousera &lt;a href=&quot;https://www.coursera.org/specializations/jhudatascience&quot;&gt;“Data Science”&lt;/a&gt; specialization&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;http://shop.oreilly.com/product/0636920033424.do&quot;&gt;“Effective Computing in Physics”&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;What kind of professional development would be helpful?
    &lt;ul&gt;
      &lt;li&gt;resume, cover letter, presentation templates&lt;/li&gt;
      &lt;li&gt;industry speakers&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Is there interest in outreach?
    &lt;ul&gt;
      &lt;li&gt;teaching coding to middle or high school kids?&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Day-long or half-day bootcamps?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Make Introduction</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/Make-Intro"/>
   <updated>2015-11-11T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/Make-Intro</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Nov 11, 2015&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;1040 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-make-introduction&quot;&gt;Technical: “Make Introduction”&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thehackerwithin.org/illinois/_people/Gregory_Hart.html&quot;&gt;Gregory R. Hart&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make is software that allows you to carry out a series of tasks in a way that respects the dependencies amongst files or tasks. While it was develovoped for bulding software (i.e. compiling C++ code, linking the files, and placing the executable) It can be used for more then that. The Make manual states:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;You can use make with any programming language whose compiler can be run with a shell command. Indeed, make is not limited to programs. You can use it to describe any task where some files must be updated automatically from others whenever the others change.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I will cover the basics of Make and give an idea of how powerful and complex it can be.&lt;/p&gt;

&lt;h2 id=&quot;lightning-research-talks&quot;&gt;Lightning Research Talks:&lt;/h2&gt;

&lt;p&gt;###”Towards uncertainty quantification of groundwater models with structural error”
Tianfang Xu (CSE Fellow)&lt;/p&gt;

&lt;p&gt;Physically-based numerical models of groundwater flow are powerful quantitative tools to manage scarce groundwater resources. Inherent uncertainties associated with model structure and parameter lead to both random and systematic errors even in the output of a calibrated model. In this talk, I will present a complementary data-driven modeling framework to quantify the predictive uncertainty of groundwater models. The framework constructs error models based on machine learning techniques to correct for model structural error. The postprocessor and fully Bayesian implementations of the framework are illustrated using synthetic and real-world case studies.&lt;/p&gt;

&lt;p&gt;###”Introduction to prostate cancer diagnosis using quantitative phase imaging and machine learning”
Tan Nguyen&lt;/p&gt;

&lt;p&gt;I will give a brief introduction to the problem of prostate cancer diagnosis using the standard-of-care staining method in contrast with our new method using the high throughput none-invasived Quantitative Phase Imaging (QPI) and machine learning. A machine learning algorithm is implemented to learn textural behaviors of prostate samples imaged under QPI and produce labeled maps of different regions for testing biopsies (e.g. gland, stroma, lumen etc.). From these maps, morphological and textural features are calculated to produce diagnosis results of the testing samples.&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>BASH basics--script your workflow</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/BASH-basics-script-your-workflow"/>
   <updated>2015-10-28T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/BASH-basics-script-your-workflow</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Oct 28, 2015&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;1040 NCSA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-bash-basics-script-your-workflow&quot;&gt;Technical: “BASH basics: script your workflow”&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thehackerwithin.org/illinois/_people/Aaron_Anderson.html&quot;&gt;Aaron T. Anderson&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;BASH is one of the most common command line programming environments in Linux/Unix. Some basic scripting commands will be covered to help automate common, repetitive tasks in the command line.&lt;/p&gt;

&lt;h2 id=&quot;lightning-research-talks&quot;&gt;Lightning Research Talks:&lt;/h2&gt;

&lt;p&gt;###”Vortex-induced Vibrations of a Sprung Cylinder with Nonlinear Internal Elements”
Antoine Blanchard&lt;/p&gt;

&lt;p&gt;Structures immersed in a flow may experience vibrations due to their interaction with the surrounding fluid, which over time can cause fatigue or failure. We use direct numerical simulations to gain insight into the underlying dynamics of such interaction, and design novel devices that can mitigate undesired vibrations of the structure.&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Hands-on Tutorial of NAMD and VMD</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/NAMD-VMD-tutorial"/>
   <updated>2015-10-14T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/NAMD-VMD-tutorial</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Oct 14, 2015&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;1040 NCSA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Topic: Hands-on Tutorial of NAMD and VMD&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-hands-on-tutorial-of-namd-and-vmd&quot;&gt;Technical: “Hands-on Tutorial of NAMD and VMD”&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ks.uiuc.edu/~mbelkin/&quot;&gt;Maxim Belkin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Molecular dynamics simulations help us understand the origins of molecular behavior at the nanometer and femtosecond scales. In this session we will prepare and run molecular dynamics simulations of DNA in a solid-state (graphene) nanopore using VMD and NAMD.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.ks.uiuc.edu/Research/namd/&quot;&gt;NAMD&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.ks.uiuc.edu/Research/vmd/&quot;&gt;VMD&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;lightning-research-talk-vortex-induced-vibrations-of-a-sprung-cylinder-with-nonlinear-internal-elements&quot;&gt;Lightning Research Talk: “Vortex-induced Vibrations of a Sprung Cylinder with Nonlinear Internal Elements”&lt;/h2&gt;
&lt;p&gt;Antoine Blanchard&lt;/p&gt;

&lt;p&gt;Structures immersed in a flow may experience vibrations due to their interaction with the surrounding fluid, which over time can cause fatigue or failure. We use direct numerical simulations to gain insight into the underlying dynamics of such interaction, and design novel devices that can mitigate undesired vibrations of the structure.&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Molecular Modeling with NAMD</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/molecular-modeling-with-NAMD"/>
   <updated>2015-09-30T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/molecular-modeling-with-NAMD</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Sept 30, 2015&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;1040 NCSA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Topic: Molecular Modeling with NAMD&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-molecular-modeling-with-namd&quot;&gt;Technical: “Molecular Modeling with NAMD”&lt;/h2&gt;
&lt;p&gt;Maxim Belkin&lt;/p&gt;

&lt;p&gt;Computational modeling of biological systems becomes an increasingly popular method to study molecular behavior at the nanoscale. NAMD is a program developed at UIUC for performing molecular dynamics (MD) simulations on a wide variety of computer systems ranging from laptops to supercomputers. We will discuss the main concepts of MD simulations and go over basic steps for setting up and running simulations with NAMD.&lt;/p&gt;

&lt;h2 id=&quot;lightning-research-talk-atomic-scale-dynamics-of-glass-forming-metallic-liquids&quot;&gt;Lightning Research Talk: “Atomic-scale dynamics of glass-forming metallic liquids”&lt;/h2&gt;
&lt;p&gt;Abhishek Jaiswal&lt;/p&gt;

&lt;p&gt;Bulk metallic glasses are interesting materials to explore the universality of glass transition. They are characterized by complex interactions, yet have simpler structure lacking internal degrees of freedom. In this talk, I will present my current work that utilizes MD simulations and machine learning techniques to characterize and visualize the underlying nature of dynamics in the liquid state of a model ternary Cu-Zr-Al system. I will discuss on the universal nature of dynamics between metallic glasses and other glass-forming systems including molecular, covalent bonded glasses etc.&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Jaehyung Yu&lt;/li&gt;
  &lt;li&gt;Jinsheng Wang&lt;/li&gt;
  &lt;li&gt;Zhikun Cai&lt;/li&gt;
  &lt;li&gt;Nathan Walter&lt;/li&gt;
  &lt;li&gt;Jaiswal Abhishek&lt;/li&gt;
  &lt;li&gt;Antoine Blanchard&lt;/li&gt;
  &lt;li&gt;Tianfang Xu&lt;/li&gt;
  &lt;li&gt;Yubo Yang&lt;/li&gt;
  &lt;li&gt;Greg Hart&lt;/li&gt;
  &lt;li&gt;Bryce Thurston&lt;/li&gt;
  &lt;li&gt;Tan Nguyen&lt;/li&gt;
  &lt;li&gt;Ahmad Raeisi Najafi&lt;/li&gt;
  &lt;li&gt;Masoud Safdari&lt;/li&gt;
  &lt;li&gt;Aaron Anderson&lt;/li&gt;
  &lt;li&gt;Mohamed Mohamed&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Git Workflow</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/git-workflow"/>
   <updated>2015-09-16T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/git-workflow</id>
   <content type="html">&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Sept 16, 2015&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;1030 NCSA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Topic: Git Workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;technical-git-workflow&quot;&gt;Technical: “Git Workflow”&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thehackerwithin.org/illinois/_people/Aaron_Anderson.html&quot;&gt;Aaron T. Anderson&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Git is version control software best understood in by using it in the context of a workflow for collaborating on a code base. Attendees will get a better understanding of git by looking at the theoretical workflow, a practical example, and how to recover from a conflict.&lt;/p&gt;

&lt;p&gt;Last meeting’s &lt;em&gt;fixed&lt;/em&gt; example: &lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/git.md&quot;&gt;Git tutorial – “add new post”&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;External Resources&lt;/strong&gt; (in order of complexity):&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://try.github.io/levels/1/challenges/1&quot;&gt;Try git live in your browser&lt;/a&gt; - great tutorial!&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://gitref.org/index.html&quot;&gt;Git Reference&lt;/a&gt; - favorite reference&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf&quot;&gt;Git Cheatsheet&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://guides.github.com/introduction/flow/index.html&quot;&gt;Simple workflow&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://nvie.com/posts/a-successful-git-branching-model/&quot;&gt;Collaborating workflow&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;THW Community resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;THW-Berkeley Intro
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/thehackerwithin/berkeley/tree/master/git/partI&quot;&gt;Intro to Git I&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/thehackerwithin/berkeley/tree/master/git/partII&quot;&gt;Intro to Git II&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;THW-Berkeley Fall 2015
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;http://thehackerwithin.github.io/berkeley/posts/git-intro-fall-2015/&quot;&gt;Git Intro&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;http://thehackerwithin.github.io/berkeley/posts/advanced-git-fall-2015/&quot;&gt;Git Advanced&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;lightning-research-talk-error-catastrophe--hiv-like-melting-ice&quot;&gt;Lightning Research Talk: “Error Catastrophe — HIV like melting ice”&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.thehackerwithin.org/illinois/_people/Gregory_Hart.html&quot;&gt;Gregory R. Hart&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;HIV is a rapidly evolving virus which makes it difficult to treat or cure. By drawing comparisons between between the viral quasispecies and statistical physics we can calculate the “thermodynamic” properties of the virus, finding a “phase transition”. This phase transition is reveals novel drug treats and new treatment strategies.&lt;/p&gt;

&lt;h2 id=&quot;prez-tip-2&quot;&gt;Prez Tip #2&lt;/h2&gt;

&lt;h3 id=&quot;git--latex&quot;&gt;Git + LaTeX&lt;/h3&gt;

&lt;p&gt;LaTeX is a popular typesetting system in academia because it’s focus on the simple construction of mathematical formulas. Since LaTeX is like any other coding language, it is well suited to be tracked by git.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;List of (suggested) branches:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;em&gt;master&lt;/em&gt; – most publishable version&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;advisor&lt;/em&gt; – track &lt;em&gt;suggestions&lt;/em&gt; for edits&lt;/li&gt;
  &lt;li&gt;sections – branch for each, to make tracking changes easier
    &lt;ul&gt;
      &lt;li&gt;&lt;em&gt;abstract&lt;/em&gt;&lt;/li&gt;
      &lt;li&gt;&lt;em&gt;introduction&lt;/em&gt;&lt;/li&gt;
      &lt;li&gt;&lt;em&gt;methods&lt;/em&gt;&lt;/li&gt;
      &lt;li&gt;&lt;em&gt;results&lt;/em&gt;&lt;/li&gt;
      &lt;li&gt;&lt;em&gt;discussion&lt;/em&gt;&lt;/li&gt;
      &lt;li&gt;&lt;em&gt;conclusion&lt;/em&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When someone suggests edits, create a new branch (or update &lt;em&gt;advisor&lt;/em&gt; branch) and save two versions of the paper, e.g. paper.tex and paper_advisor.tex, then run latexdiff:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ latexdiff paper.tex paper_advisor.tex &amp;gt; paper_advisor_highlighted.tex
$ pdflatex paper_advisor_highlighted.tex
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pdflatex&lt;/code&gt; command will output a marked-up version of the paper (removed words = crossed out red; added words = blue and underlined squiggle).&lt;/p&gt;

&lt;p&gt;More tips and suggestions can be found on the StackOverflow question titled &lt;a href=&quot;http://stackoverflow.com/questions/6188780/git-latex-workflow&quot;&gt;“Git + LaTeX workflow”&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Greg Hart&lt;/li&gt;
  &lt;li&gt;Nicholas Laracuente&lt;/li&gt;
  &lt;li&gt;Tan Nguyen&lt;/li&gt;
  &lt;li&gt;Trang Vu&lt;/li&gt;
  &lt;li&gt;Antoine Blanchard&lt;/li&gt;
  &lt;li&gt;Tiangfang Xu&lt;/li&gt;
  &lt;li&gt;Aki Nikolaidis&lt;/li&gt;
  &lt;li&gt;Subhadeep De&lt;/li&gt;
  &lt;li&gt;Sikandar Mashayak&lt;/li&gt;
  &lt;li&gt;Stuti Shrivastava&lt;/li&gt;
  &lt;li&gt;Noel Naughton&lt;/li&gt;
  &lt;li&gt;Yubo Yang&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Prostate cancer diagnosis using QPI and machine learning</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/git-part-2"/>
   <updated>2015-09-09T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/git-part-2</id>
   <content type="html">&lt;h2 id=&quot;attending&quot;&gt;Attending&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&amp;lt;++&amp;gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;new-hat&quot;&gt;New Hat&lt;/h2&gt;
&lt;p&gt;Should be a good thing to show.&lt;/p&gt;

&lt;h2 id=&quot;bleeding-edge-stuff&quot;&gt;Bleeding Edge Stuff&lt;/h2&gt;

&lt;p&gt;Brand spanking new library is brand spanking new&lt;/p&gt;

&lt;p&gt;Code examples can be found &lt;a href=&quot;https://github.com/thehackerwithin/illinois/tree/master/bleeding-edge-stuff&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;lightning-talks&quot;&gt;Lightning Talks&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic-&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

&lt;h2 id=&quot;-person----topic--1&quot;&gt;&amp;lt;+ person +&amp;gt; : &amp;lt;+ topic +&amp;gt;&lt;/h2&gt;

</content>
 </entry>
 
 <entry>
   <title>Git Version Control Overview</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/git-version-control-overview"/>
   <updated>2015-08-26T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/git-version-control-overview</id>
   <content type="html">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;/h2&gt;

&lt;p&gt;Version control software helps researchers track and document code development and is essential for combining the work of groups developing on the 
same code base. A very popular and open source version control software is Git and will be introduced through the use of the online code 
repository &lt;a href=&quot;https://github.com/thehackerwithin/illinois&quot;&gt;Github&lt;/a&gt;. Participants will have the opportunity to contribute to an open source project using git and Github.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/thehackerwithin/illinois/blob/master/git.md&quot;&gt;Tutorial&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Aug 26, 2015&lt;/li&gt;
  &lt;li&gt;Time: 12:00 PM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;1030 NCSA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Topic: Git Version Control Overview&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;lightning-research-talk&quot;&gt;Lightning Research Talk&lt;/h2&gt;

&lt;p&gt;The development of state-of-the-art simulation model that self-consistently couple the electronic and phonon transport is essential in creating a 
cycle that will push designs to have lower carbon footprints and in creating environmentally conscious electronics that  minimize waste. We provide 
a quick primer on the physics of nanoelectronic devices as well as some of the key challenges faced.&lt;/p&gt;

&lt;h2 id=&quot;notes&quot;&gt;Notes:&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/thehackerwithin/berkeley/tree/master/git/partI&quot;&gt;THW-Berkley: Intro to Git I&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/thehackerwithin/berkeley/tree/master/git/partII&quot;&gt;THW-Berkley: Intro to Git II&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;prez-tip-1&quot;&gt;Prez Tip #1&lt;/h2&gt;

&lt;p&gt;A helpful way to view the progression of your git repository is with a handy shortcut:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ git config --global alias.la &quot;log --all --graph --date=short --format=format:\&quot;%C(yellow)%h%Creset %cd%Cred%d %Cblue%cn%Creset %s\&quot;&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Then just type:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ git la
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Source: Professor Matt West’s &lt;a href=&quot;http://lagrange.mechse.illinois.edu/git_quick_ref/&quot;&gt;git quick-ref&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;attendance&quot;&gt;Attendance&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;David Hannasch&lt;/li&gt;
  &lt;li&gt;Tan Nguyen&lt;/li&gt;
  &lt;li&gt;Yubo Yang&lt;/li&gt;
  &lt;li&gt;Greg Hart&lt;/li&gt;
  &lt;li&gt;Sam Kaufman&lt;/li&gt;
  &lt;li&gt;Abhishek Jaiswal&lt;/li&gt;
  &lt;li&gt;Nathan Walter&lt;/li&gt;
  &lt;li&gt;Andy Loftus&lt;/li&gt;
  &lt;li&gt;Aki Nikolaidis&lt;/li&gt;
  &lt;li&gt;Tanvien Talukdar&lt;/li&gt;
  &lt;li&gt;John Capozzo&lt;/li&gt;
  &lt;li&gt;Patricia Watson&lt;/li&gt;
  &lt;li&gt;Brain McGuigen&lt;/li&gt;
  &lt;li&gt;Chloe Ma&lt;/li&gt;
  &lt;li&gt;Tianfang Xu&lt;/li&gt;
  &lt;li&gt;Sikandar Mashayak&lt;/li&gt;
  &lt;li&gt;Terry Fleury&lt;/li&gt;
  &lt;li&gt;Noel Naughton&lt;/li&gt;
  &lt;li&gt;Michael Katolik&lt;/li&gt;
  &lt;li&gt;Jim Basney&lt;/li&gt;
  &lt;li&gt;Rylan Dmello&lt;/li&gt;
  &lt;li&gt;David S. Ancalle&lt;/li&gt;
  &lt;li&gt;Antoine Blanchard&lt;/li&gt;
  &lt;li&gt;Stuti Shrivastava&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Kick-Off Meeting</title>
   <link href="http://www.thehackerwithin.org/illinois/posts/kick-off-meeting"/>
   <updated>2015-08-19T00:00:00+00:00</updated>
   <id>http://www.thehackerwithin.org/illinois/posts/kick-off-meeting</id>
   <content type="html">&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;/h2&gt;

&lt;p&gt;This meeting is to introduce The Hacker Within, Illinois chapter and discuss what students want out of the group.&lt;/p&gt;

&lt;h2 id=&quot;meeting-info&quot;&gt;Meeting Info&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Date: Aug 19, 2015&lt;/li&gt;
  &lt;li&gt;Time: 11:30 AM&lt;/li&gt;
  &lt;li&gt;Location: &lt;a href=&quot;http://illinois.edu/map/view?skinId=0&amp;amp;ACTION=MAP&amp;amp;buildingId=564&quot;&gt;3100 NCSA&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Topic: Kick-Off Meeting&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;questions-to-answer&quot;&gt;Questions to answer&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;What is THW-IL?&lt;/li&gt;
  &lt;li&gt;What can be expected?&lt;/li&gt;
  &lt;li&gt;What are topics of interest?&lt;/li&gt;
  &lt;li&gt;How can both undergraduate and graduate students benefit?&lt;/li&gt;
  &lt;li&gt;How to promote the group?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;[meeting_url]:&lt;/p&gt;
</content>
 </entry>
 
 
</feed>
