- Writing code is important for researchers to validate ideas, understand algorithms, and check work, but code is a means to an end rather than the primary product. Researchers should focus on knowledge gained rather than the code itself.
- Researchers must balance optimizing time with producing trustworthy, reproducible results. Using version control and tracking parameters helps achieve this.
- Testing, especially unit testing, helps researchers have confidence in their results. Creative testing approaches may be needed given the nature of research code.
- Researchers should aim to need as few bespoke tools as possible but not less, reusing existing frameworks and code when reasonable. Shared tools can also help disseminate ideas.
A short introduction to the more advanced python and programming in general. Intended for users that has already learned the basic coding skills but want to have a rapid tour of more in-depth capacities offered by Python and some general programming background.
Execrices are available at: https://github.com/chiffa/Intermediate_Python_programming
Recent workshop on security code review given at SecTalks Melbourne. The slides contain a link to the vulnerable PHP application to perform the review.
A short introduction to the more advanced python and programming in general. Intended for users that has already learned the basic coding skills but want to have a rapid tour of more in-depth capacities offered by Python and some general programming background.
Execrices are available at: https://github.com/chiffa/Intermediate_Python_programming
Recent workshop on security code review given at SecTalks Melbourne. The slides contain a link to the vulnerable PHP application to perform the review.
An Introduction To Software Development - Test Driven Development, Part 1Blue Elephant Consulting
This presentation is a part of the COP2271C college level course taught at the Florida Polytechnic University located in Lakeland Florida. The purpose of this course is to introduce Freshmen students to both the process of software development and to the Python language.
The course is one semester in length and meets for 2 hours twice a week. The Instructor is Dr. Jim Anderson.
A video of Dr. Anderson using these slides is available on YouTube at:
http://youtu.be/bCp1fbAd56k
In his recent book, Clean Agile, Robert C "Uncle Bob" Martin chooses Extreme Programming (XP) for the basis of his explanation of Agile because "of all the Agile processes, XP is the best defined, the most complete, and the least muddled."
So why is it that in my professional life I only hear us speaking about Agile in terms of Scrum, Sprints, and possibly Kanban? Often I mention XP and people are not sure what I mean. Am I sure myself?
Coined in 1999 by Kent Beck and Ward Cunningham, XP has been with us for twenty years, but may of its practices have been with us for much longer. Many of them will be familar to you, but did you know they came from XP?
This talk aims to take us back to what XP is, how it fits in the Agile world, how it sits alongside other methodologies, and why, like Uncle Bob, I believe it is the best defined methodology, and what we should all be talking about.
The talk is based on a heavily refactored talk that Mike gave previously at Agile on the Beach conference, updated for 2020.
Given at Ox:Agile Meetup on February 11th 2020: https://www.meetup.com/OXAGILE/events/nxrdmrybcdbpb/
Scripting experts from Inductive Automation cover general best practices that will help you add flexibility and customization to HMI, SCADA, IIoT, and other industrial applications. Some specific tips about using scripting in the Ignition platform will be included as well.
In this webinar, learn more about:
• Common scripting pitfalls and how to avoid them
• The best programming languages to use
• Things to consider before using scripting
• How scripting environments work
• Scripting timesavers
• And more
Scripting experts from Inductive Automation cover general best practices that will help you add flexibility and customization to HMI, SCADA, IIoT, and other industrial applications. Some specific tips about using scripting in the Ignition platform will be included as well.
In this webinar, learn more about:
• Common scripting pitfalls and how to avoid them
• The best programming languages to use
• Things to consider before using scripting
• How scripting environments work
• Scripting timesavers
• And more
Recently I was asked to to a presentation presentation at University of Cape Town entitled QA and SCRUM. This made very little sense to me but it did substantiate my belief that the understanding of agile development is generally very superficial ...
Second "code school lesson" for Eurosport's developers.
1. Refactoring : when? why? how?
2. Single Responsability
3. Practical case : clean architecture.
Slides for Automation Guild 2016 Conference
If you want to automate, you learn to code, and you learn to code well.
“Automate” doesn’t mean “Automate Testing” it means “Automate part of your test process”.
You need to learn to code to do that with the most options open to you.
We’ll look at some ‘we do this alot’ and ‘we want to automate’ activities which we can use tools for. But we’ll also see that we are limited by the tools.
When we code, we can do a lot with minimum code, and gain a lot more flexibility.
Then we’ll cover how to think about learning to code.
solve a problem quickly (automate tactically)
solve a problem for the long term (automate strategically)
To work strategically we need to learn:
to code well,
understand refactoring,
libraries vs frameworks,
abstractions,
etc.
This talk isn’t just for beginners, we’ll cover stuff that should make it useful for the experts in the audience.
We’ll cover a lot in 45 mins, with code examples and tool examples, and I’ll make it all pretty practical.
For more details visit:
https://www.compendiumdev.co.uk/page/tag2017
We’re all doing Agile nowadays, aren’t we? We’ll all delivering software in an Agile way. But what does that mean? Does it mean sprints and stand-ups? Kanban even? But what about Extreme Programming? If as a development team we’re not using pair programming, test driven development, continuous integration, and other XP practices, then we’re not really doing Agile software development and we may be on a march to frustration, or even failure.
I’m going to look at why the current trend of companies and projects adopting Scrum, calling themselves Agile, but not transitioning their development to XP, is a recipe for disaster. I’d like to cover the main practices of XP as well as other good practices that can really help a team deliver quality software, whether they’re doing two-week sprints, Kanban, or even Waterfall.
https://www.youtube.com/watch?v=aZgnY9fAHOA
Basic overview of software test types, methodologies.
Explaining and reasons to test and common pitfalls with various testing methodologies.
Example scenarios for the viewer to think about test strategies.
Tips to avoid having to write tests in the first place.
Content created and presented by Nico Heidtke at the "Die Programmierer" meetup organized by Binary-Gears in Darmstadt, Germany at 02.07.2019.
What is reproducible research? Why should I use it? what tools should I use? This session will show you how to use scripts, version control and markdown to do better research.
Palestine last event orientationfvgnh .pptxRaedMohamed3
An EFL lesson about the current events in Palestine. It is intended to be for intermediate students who wish to increase their listening skills through a short lesson in power point.
An Introduction To Software Development - Test Driven Development, Part 1Blue Elephant Consulting
This presentation is a part of the COP2271C college level course taught at the Florida Polytechnic University located in Lakeland Florida. The purpose of this course is to introduce Freshmen students to both the process of software development and to the Python language.
The course is one semester in length and meets for 2 hours twice a week. The Instructor is Dr. Jim Anderson.
A video of Dr. Anderson using these slides is available on YouTube at:
http://youtu.be/bCp1fbAd56k
In his recent book, Clean Agile, Robert C "Uncle Bob" Martin chooses Extreme Programming (XP) for the basis of his explanation of Agile because "of all the Agile processes, XP is the best defined, the most complete, and the least muddled."
So why is it that in my professional life I only hear us speaking about Agile in terms of Scrum, Sprints, and possibly Kanban? Often I mention XP and people are not sure what I mean. Am I sure myself?
Coined in 1999 by Kent Beck and Ward Cunningham, XP has been with us for twenty years, but may of its practices have been with us for much longer. Many of them will be familar to you, but did you know they came from XP?
This talk aims to take us back to what XP is, how it fits in the Agile world, how it sits alongside other methodologies, and why, like Uncle Bob, I believe it is the best defined methodology, and what we should all be talking about.
The talk is based on a heavily refactored talk that Mike gave previously at Agile on the Beach conference, updated for 2020.
Given at Ox:Agile Meetup on February 11th 2020: https://www.meetup.com/OXAGILE/events/nxrdmrybcdbpb/
Scripting experts from Inductive Automation cover general best practices that will help you add flexibility and customization to HMI, SCADA, IIoT, and other industrial applications. Some specific tips about using scripting in the Ignition platform will be included as well.
In this webinar, learn more about:
• Common scripting pitfalls and how to avoid them
• The best programming languages to use
• Things to consider before using scripting
• How scripting environments work
• Scripting timesavers
• And more
Scripting experts from Inductive Automation cover general best practices that will help you add flexibility and customization to HMI, SCADA, IIoT, and other industrial applications. Some specific tips about using scripting in the Ignition platform will be included as well.
In this webinar, learn more about:
• Common scripting pitfalls and how to avoid them
• The best programming languages to use
• Things to consider before using scripting
• How scripting environments work
• Scripting timesavers
• And more
Recently I was asked to to a presentation presentation at University of Cape Town entitled QA and SCRUM. This made very little sense to me but it did substantiate my belief that the understanding of agile development is generally very superficial ...
Second "code school lesson" for Eurosport's developers.
1. Refactoring : when? why? how?
2. Single Responsability
3. Practical case : clean architecture.
Slides for Automation Guild 2016 Conference
If you want to automate, you learn to code, and you learn to code well.
“Automate” doesn’t mean “Automate Testing” it means “Automate part of your test process”.
You need to learn to code to do that with the most options open to you.
We’ll look at some ‘we do this alot’ and ‘we want to automate’ activities which we can use tools for. But we’ll also see that we are limited by the tools.
When we code, we can do a lot with minimum code, and gain a lot more flexibility.
Then we’ll cover how to think about learning to code.
solve a problem quickly (automate tactically)
solve a problem for the long term (automate strategically)
To work strategically we need to learn:
to code well,
understand refactoring,
libraries vs frameworks,
abstractions,
etc.
This talk isn’t just for beginners, we’ll cover stuff that should make it useful for the experts in the audience.
We’ll cover a lot in 45 mins, with code examples and tool examples, and I’ll make it all pretty practical.
For more details visit:
https://www.compendiumdev.co.uk/page/tag2017
We’re all doing Agile nowadays, aren’t we? We’ll all delivering software in an Agile way. But what does that mean? Does it mean sprints and stand-ups? Kanban even? But what about Extreme Programming? If as a development team we’re not using pair programming, test driven development, continuous integration, and other XP practices, then we’re not really doing Agile software development and we may be on a march to frustration, or even failure.
I’m going to look at why the current trend of companies and projects adopting Scrum, calling themselves Agile, but not transitioning their development to XP, is a recipe for disaster. I’d like to cover the main practices of XP as well as other good practices that can really help a team deliver quality software, whether they’re doing two-week sprints, Kanban, or even Waterfall.
https://www.youtube.com/watch?v=aZgnY9fAHOA
Basic overview of software test types, methodologies.
Explaining and reasons to test and common pitfalls with various testing methodologies.
Example scenarios for the viewer to think about test strategies.
Tips to avoid having to write tests in the first place.
Content created and presented by Nico Heidtke at the "Die Programmierer" meetup organized by Binary-Gears in Darmstadt, Germany at 02.07.2019.
What is reproducible research? Why should I use it? what tools should I use? This session will show you how to use scripts, version control and markdown to do better research.
Palestine last event orientationfvgnh .pptxRaedMohamed3
An EFL lesson about the current events in Palestine. It is intended to be for intermediate students who wish to increase their listening skills through a short lesson in power point.
Acetabularia Information For Class 9 .docxvaibhavrinwa19
Acetabularia acetabulum is a single-celled green alga that in its vegetative state is morphologically differentiated into a basal rhizoid and an axially elongated stalk, which bears whorls of branching hairs. The single diploid nucleus resides in the rhizoid.
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...Levi Shapiro
Letter from the Congress of the United States regarding Anti-Semitism sent June 3rd to MIT President Sally Kornbluth, MIT Corp Chair, Mark Gorenberg
Dear Dr. Kornbluth and Mr. Gorenberg,
The US House of Representatives is deeply concerned by ongoing and pervasive acts of antisemitic
harassment and intimidation at the Massachusetts Institute of Technology (MIT). Failing to act decisively to ensure a safe learning environment for all students would be a grave dereliction of your responsibilities as President of MIT and Chair of the MIT Corporation.
This Congress will not stand idly by and allow an environment hostile to Jewish students to persist. The House believes that your institution is in violation of Title VI of the Civil Rights Act, and the inability or
unwillingness to rectify this violation through action requires accountability.
Postsecondary education is a unique opportunity for students to learn and have their ideas and beliefs challenged. However, universities receiving hundreds of millions of federal funds annually have denied
students that opportunity and have been hijacked to become venues for the promotion of terrorism, antisemitic harassment and intimidation, unlawful encampments, and in some cases, assaults and riots.
The House of Representatives will not countenance the use of federal funds to indoctrinate students into hateful, antisemitic, anti-American supporters of terrorism. Investigations into campus antisemitism by the Committee on Education and the Workforce and the Committee on Ways and Means have been expanded into a Congress-wide probe across all relevant jurisdictions to address this national crisis. The undersigned Committees will conduct oversight into the use of federal funds at MIT and its learning environment under authorities granted to each Committee.
• The Committee on Education and the Workforce has been investigating your institution since December 7, 2023. The Committee has broad jurisdiction over postsecondary education, including its compliance with Title VI of the Civil Rights Act, campus safety concerns over disruptions to the learning environment, and the awarding of federal student aid under the Higher Education Act.
• The Committee on Oversight and Accountability is investigating the sources of funding and other support flowing to groups espousing pro-Hamas propaganda and engaged in antisemitic harassment and intimidation of students. The Committee on Oversight and Accountability is the principal oversight committee of the US House of Representatives and has broad authority to investigate “any matter” at “any time” under House Rule X.
• The Committee on Ways and Means has been investigating several universities since November 15, 2023, when the Committee held a hearing entitled From Ivory Towers to Dark Corners: Investigating the Nexus Between Antisemitism, Tax-Exempt Universities, and Terror Financing. The Committee followed the hearing with letters to those institutions on January 10, 202
Francesca Gottschalk - How can education support child empowerment.pptxEduSkills OECD
Francesca Gottschalk from the OECD’s Centre for Educational Research and Innovation presents at the Ask an Expert Webinar: How can education support child empowerment?
Instructions for Submissions thorugh G- Classroom.pptxJheel Barad
This presentation provides a briefing on how to upload submissions and documents in Google Classroom. It was prepared as part of an orientation for new Sainik School in-service teacher trainees. As a training officer, my goal is to ensure that you are comfortable and proficient with this essential tool for managing assignments and fostering student engagement.
Honest Reviews of Tim Han LMA Course Program.pptxtimhan337
Personal development courses are widely available today, with each one promising life-changing outcomes. Tim Han’s Life Mastery Achievers (LMA) Course has drawn a lot of interest. In addition to offering my frank assessment of Success Insider’s LMA Course, this piece examines the course’s effects via a variety of Tim Han LMA course reviews and Success Insider comments.
Macroeconomics- Movie Location
This will be used as part of your Personal Professional Portfolio once graded.
Objective:
Prepare a presentation or a paper using research, basic comparative analysis, data organization and application of economic information. You will make an informed assessment of an economic climate outside of the United States to accomplish an entertainment industry objective.
Embracing GenAI - A Strategic ImperativePeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
Read| The latest issue of The Challenger is here! We are thrilled to announce that our school paper has qualified for the NATIONAL SCHOOLS PRESS CONFERENCE (NSPC) 2024. Thank you for your unwavering support and trust. Dive into the stories that made us stand out!
Welcome to TechSoup New Member Orientation and Q&A (May 2024).pdfTechSoup
In this webinar you will learn how your organization can access TechSoup's wide variety of product discount and donation programs. From hardware to software, we'll give you a tour of the tools available to help your nonprofit with productivity, collaboration, financial management, donor tracking, security, and more.
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
Biological screening of herbal drugs: Introduction and Need for
Phyto-Pharmacological Screening, New Strategies for evaluating
Natural Products, In vitro evaluation techniques for Antioxidants, Antimicrobial and Anticancer drugs. In vivo evaluation techniques
for Anti-inflammatory, Antiulcer, Anticancer, Wound healing, Antidiabetic, Hepatoprotective, Cardio protective, Diuretics and
Antifertility, Toxicity studies as per OECD guidelines
1. You and your code
Charles Sutton
School of Informatics
University of Edinburgh
2. Why write programs?
• Want to know if your idea actually works!
• Typical case rather than worst case
• Especially true for “hard fields”
• Artificial intelligence: All interesting
problems
• Compilers / Program analysis: Most
problems Turing-complete
• Machine learning: No free lunch theorem
• You don’t really understand an algorithm
unless you can code it
• Feedback from error analysis drives new ideas
3. Theorists should program, too
Implementing your own algorithm is a good
way of checking your work. If you aren't
implementing your algorithm, arguably you're
skipping a key step in checking your results.
--Michael Mitzenmacher
http://mybiasedcoin.blogspot.com/2008/11/bugs.html
But don’t listen to me (I’m not a theorist):
Also, avoid attempting to prove false
statements!
4. Software Engineering
• Software engineering is a rich area of
research
• Commercial software development is
• Expensive
• Error-prone
• Unpredictable
• Incredibly important
• Many high-profile software failures, often
caused by small looking bugs
5. Methodology
• Much (not all) SE research focuses on
methodology
• Requirements
• Architecture
• Design
• Code
• The first three all have a documents attached.
The code is expected to be heavily
documented.
6. Why all this work?
• Customers do not know requirements initially
• Requirements change rapidly
• It is essential but often very hard to
understand the domain
• Teams contain dozens or hundreds of
developers, worldwide, over many years
• High turnover of software developers
• Documentation needed to avoid argument.
• Most of the cost is in maintenance
[adapted from Perdita Stevens]
7. Extreme Programming
• A reaction to the high overhead, bureaucracy
of traditional approach (all those documents)
• Idea is to be agile
• Do the simplest thing that will work
• Test-driven development
• Unit tests
• Pair programming
• Focus on refactoring
• Emphasis on quickly getting running code
8. Extreme Programming
• However, researchers lack the resources to do this all
the way
• Some ideas useful to pull out (unit tests definitely,
refactoring sometimes)
More info:
http://xprogramming.com/
Books by Kent Beck, Martin Fowler
9. These measures try to ensure product quality.
When you are a researcher, it is different:
The software is not your product
Your product is knowledge
• New algorithms
• New theorems
• New empirical characterization
of existing algorithms
10. 4 Principles of Research Code
1.Your code is a means to an end.
Don’t really throw it away.
Disk is cheap; save everything.
Once the paper is done, you will throw it away.
11. 4 Principles of Research Code
2. Unless you succeed.
Then everyone will want to try out your stuff.
Success is a pain in the a@#!
If you are lucky,
you will start getting emails from
(PhD students of) famous professors.
12. 4 Principles of Research Code
3. You need to be able to trust your results.
You do not want to find a bug in your
baselines after you publish!
13. 4 Principles of Research Code
4. You need a bespoke set of tools.
Invent as little as possible (but no less!)
This is true both in your code and in your
intellectual work.
N.B. All of these principles contradict each other.
Welcome to the real world!
14. Corollaries
• These principles should guide you in writing
code for your research
• Except that they contradict each other
• So let’s see how the principles are reflected in
real-world practice
15. Code is a means to an end
• Optimize for your time
• Except when your research requires your
code to be efficient (this happens)
• Efficient code can be competitive advantage
• Think of documentation as notes to yourself
• Push as much as documentation as
possible into identifier names
• Always ask why you are writing the code...
How will this fit into the eventual paper
16. Code is a means to an end
• Do not think that you know now where you will
end up
• Optimize also for flexibility
• The only design pattern that I like is the
strategy pattern
• Wherever possible, think about where you
might want to be clever later
• Design for your later cleverness
• You care about bugs that affect your
experimental results, not really about other
bugs
17. Unless you succeed
• Commit to reproduceable research
• Bench scientists have a lab notebook
• You need the equivalent
• You must use version control!
• Organization of files, directories
• “Connect” your code to the figures in the paper
18. Version Control
• Many examples: RCS, SCCS, CVS, SVN, hg,
git, arch
• For new projects you should use at least
Subversion, consider the distributed system
(e.g., hg, git)
• I version control everything that I care about
• My code, my research publications, my
personal bib file, my Web site
• If you ran an experiment on May 13 that you
need to reproduce two years later, reproduce
that exact state
19. Version Control
• Every file that is
• Text
• Related to your research
• Cannot be reproduced automatically
• ...should be under version control
• To do otherwise is courting disaster
20. Keep track of parameters
• Your experiments will have many parameters
to tune
• Which schedule algorithm you used
• Max queue size
• Which heuristics for X, Y, Z
• Learning rate
• Make these parameters of the “experiment
running scripts”
• Keep track of them in an organized way
21. Connecting your paper to your results
directories
• Bench scientists have a lab notebook. You need something similar
• You need a system where
• if you open up your paper file a year later
• you will know how to rerun all the code needed for Figure 3
• Key idea: Generate figures automatically via script
• Then you just need a map Figure => script file
• Could use text file
• Comments in LateX code
• Also need the version of your code
• Keep tarball
• Use version control
22. Example System
To start an experiment, run a shell script
sh scripts/test-tiny-heuristic.sh
This script contains the parameters of the experiment:
scripts/test-tiny-heuristic.sh
DIR=results/tiny-heuristic/airlockF/al2.7/
java uk.ac.ed.inf.csutton.HalMain
--open-airlock FALSE
--alpha 2.7
--output-dir $DIR
23. Automating your driver
script
• Lots of times you will need to run a “parameter
sweep”
• Helpful to have a “driver script” that runs through
the parameter grid
• Interacts well with grid/cloud computing: Run
every parameter setting in parallel
24. Principles of experiment
running scripts
• 1. Automate as much as possible
• 2. Record as much as possible
• Text files are your friend!
• Some of my fancy systems friends use
databases
• Makefile’s are good for recording
preprocessing steps
• (use the filesystem to keep records for you)
• Another possibility (haven’t tried it): http://
neuralensemble.org/trac/sumatra
26. Notes about dir structure
• Typically for me a “project” is a paper or two
worth of work. (May take more than one
submission.)
• Never quite sure where to put the results/
directory. Parallel to experiment dir?
Underneath? Outside of hg altogether
• Important: Everything in results/ automatically
generated
• code/ ==> implementation of the algorithms
• scripts/ ==> stuff that only matters for the
experiments I happened to run
27. Notes
• There are other ways to do this
• I can never decide myself what’s best
• The principle is:
• If a year from now you look at the results file
alone you can tell:
• What code you used to generate it
• With what parameters
28. Trust your results
• Unit tests are great
• Test a small part of your code
• The test code itself checks success, not
human
• They should be fast to run, so you can run
them after every major change
• Nip regression in the bud
29. Testing is hard
• Testing and debugging research code can
require ingenuity
• Often your algorithm is heuristic or
approximate
• If you expect it to fail 10% of the time, how
can you be sure it’s correct?
• Especially true in machine learning, etc
30. Creative testing
• Look for special cases
• Maybe if you set alpha = 0, your method
reduces to a simpler one
• Special case on which your approximation is
exact? e.g., Beam search on small state
space
• There’s more than one way to do it
• e.g., Check different approximation
algorithms against each other
31. Bespoke tools
OS, Standard library, etc
Domain frameworks: BLAS, Matlab, R, etc.
Your personal shared code
Research area A Research area B
Experiment
1
Experiment
2
Experiment
3
Experiment
4
32. Making a toolkit
• TinyOS http://www.tinyos.net/
• Jikes (research Java compiler) http://
jikes.sourceforge.net/
• SVMlight http://svmlight.joachims.org/
(machine learning)
• Festival (speech synthesis) http://
www.cstr.ed.ac.uk/projects/festival/
• Moses (machine translation) http://
www.statmt.org/moses/
Many times you see researchers making
software that many people use. A few examples:
33. Making a toolkit
• People more likely to use your ideas if they
don’t have to implement them
• Shared infrastructure: you can try ideas
quickly
• Other people can add components which you
then use
• Fame
Why would you do this? Seems to violate
every principle so far.
In any case, this is calculated risk.
34. Summary
• Remember the four principles
• Your code is an investment of your time
• Too little: Can’t trust results, Can’t reproduce
• Too much: You try too few new ideas
• Writing efficient code can give you a
competitive advantage as a researcher
• Good luck finding the balance!