Software for Science: Some Personal Reflections
As computer systems become more and more complex, software and tools lag more and more behind. This is especially true for scientific software that often demands high performance, and thus needs to take advantage of parallelisms, memory hierarchies and other software and systems. How do we help bridge this ever-increasing gap? 
This paper describes some of my experiences and thoughts regarding licensing, code sharing, code maintenance, open access publishing, and educations and training. Details include my recent experiences with getting industrial funding for GPL licensed software, BSD issues, sharing code on GitHub, and how I inspire students to take my 4th year Parallel Computing elective which this semester has over 50 students enrolled. Some thoughts and comments regarding why both optimization and data locality are such a central issue for scientific software is also included.