t!!Related tools Im using
Vi + Semantic Web + AWS + Shell + Vimperator + Processing + Tools in general
Own tips & tricks
- grep -d recurse FunctionName *.extension_of_header_files
Learning and teaching
Based on 1 single principle
- removing layers of non feedback
resulting in live coding practices specific to domains of interests
See Inventing on Principle by Bret Victor, CUSec 2012
- non textual feedback
- 0 configuration first tutorial
- live coding
- agile practices
- domain specific environment
- (Ruby) language self-testing exploration
- "we used the language as a tool to explore itself. In the same way that a test is better than a specification, the language is better than a description of the language."
Live coding for Music with ChucK.
- Dont Repeat Yourself (DRY)
- Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
Tools, IDE, community websites, ...
- code repositories including search function
- integration tools
Note that this should include search first across own produced code including code within this wiki (most likely in this Tools group), own repositories (cf Mercurial or Fossil), past projects, etc...
- documentation ready
- keep the history for further study
- safe closure (VM, jails, zones, ...)
- during live demo
- uses a transparent terminal/console with notes hidden behind it
- not distracting for the audience (unlike constant apps switching)
- predictable for everybody
- relaxing for the presenter, nothing to forget and flexible flow (interruptions or new ideas are ok)
- learn from Wikipedia:Hackathon and its good practices
Notes on programming languages used
Used in Mathematics#Statistics and FinancialTools.
- Revision control software or RCS / (distributed) Version Control System or (D)VCS / Source Code Management
- errors management
UML (now with Executable UML), ...
- Languages focusing on human languages but with links to semantics, grammar, vocabularies, etymology, semiotics, ...
Grammar and parsers
Designing a new language
- my discussions with CobraCommander, author of Cobra
- Building Your Own Dynamic Language by Ian Piumarta, Stanford University 2007
- Practical Common Lisp by Peter Seibel, Google TechTalks 2006
- How to create your own language in 20 minutes by Dinko Srkoč, DC 2008
- Domain Agnostic Languages "The most powerful tools available to us aren’t the ones that already exist, but the ones we make ourselves and the ideas and patterns that enable us to shape the tool for the task." Piers Cawley 2007
- Bootstrap yourself into conviviality by writing your own Forth David Frech, DorkbotPDX 0x01 2008
- Another Go at Language Design by Rob Pike, EE380, Stanford University 2010
- Structure and Interpretation of Computer Programs (SICP), by Abelson, Sussman, and Sussman, MIT Press 1984
- helpful tools
- The Twelf Project language used to specify, implement, and prove properties of deductive systems such as programming languages and logics.
- Wikipedia:Lambda cube
- Wikipedia:Attribute grammar
Fundamental data structures
Logic , Type theory, Category Theory,Knowledge / Information Theory
- Algorithmica an international journal which publishes theoretical papers on algorithms that address problems arising in practical areas, and experimental papers of general appeal for practical importance or techniques.
From the closest to the hardware to the largest architecture (following the guiding principle of LayeredModel).
IT framework = strategical choice
- avoid sterile discussions as battles of positions
- software either as a craft or as a production process, requires tools and your framework will have a great impact on the result. Consequently is it a real investment and has to be done as such with an estimated ROI.
- list key components for the rational choice of a framework based on the
- environment : internal politics in the team, external politics in the industry, available skills, ...
- type of project : complexity, size, costs, deadline, minimum life time, ...
- list key languages and their properties
- available libraries, size of community, supported paradigms, quality of the documentation, supported platforms, ...
- give estimates when no data is available
- map languages with components
- provide an explained choice
See the more general Slideshows#StrategicIT that aims at studying the industry and its actor, not solely the languages and frameworks.
Principle : the complexity is growing through SaaS, PaaS and all kind of "new" vendors of solution. Knowing "the stack" is consequently still fundamental to stay efficient regarding the architecture and its performance but also the cost.
To integrate: Wikipedia:Solution stack, Wikipedia:Protocol stack, Wikipedia:Call stack, Wikipedia:OSI layer, Wikipedia:Cloud computing#Layers, Wikipedia:Personal computer hardware
And "integrated" http://openstack.org
- proc, memory, transfer, ...
- hard to monitor so consider visualization in virtual world (pedagogical tool)
Synthesis of all previous 3
- networked software going through everything
- add tools to track the entire process and optimize
Organize the following links
- Programming Language Popularity, started in DedaSys LLC by 2007
- ways in which advances in math change grammar of computer languages
- Quantifying the evolutionary dynamics of language Nature 449, 713-716 (11 October 2007)
- Software evolutionary dynamics modelled as the activity of an actor-network IET In Software, IET, Vol. 2, No. 4. (2008)
- KM Tools for Software Developers KnowledgeBoard 2006
- Category:Software metrics , the and Software metric on Wikipedia
- Stack Overflow a collaboratively edited question and answer site for programmers
- Ohloh Tools including Compare Projects, Compare Languages and project code analysis
- Assembla Accelerate your team with online workspaces
- DOAP XML/RDF vocabulary to describe software projects, and in particular open source.
- Wikis for Software Engineering
- web tools
- Beautiful Code Leading Programmers Explain How They Think, edited By Andy Oram and Greg Wilson, O'Reilly Media 2007
- research based tools
- cTuning.org an open community-driven collaborative wiki-based portal that brings together academia, industry and end-users to develop intelligent collective tuning technology that automates and simplifies compiler, program and architecture design and optimization.
- Evolutionary Program repair (EPR) Fixing Real Bugs in Real Programs with Genetic Programming
- methodsandtools.com free software development magazine on
- Software Testing, Project Management, Programming (Java,.NET, Ruby on Rails, Ajax), UML, Agile (eXtreme Programming, Scrum, TDD), Requirements, Databases, Software Process Improvement, Tools
- discovered thanks to Domain-Driven Design Community
- Westley Weimer focusing on "automatic or minimally-guided techniques that can scale and be applied easily to large, existing programs"
- Programming Is the New Literacy by Marc Prensky, Edutopia 2008
- issue trackers
- ANTLR Parser Generator framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages.
- LeanThinking applied to CS/IT
- Delta Debugging, From automated testing to automated debugging, Software Engineering Chair (Prof. Zeller) - Saarland University
- The Evolution of End User Programming by Allen Cypher, IBM Research Almaden, Google Tech Talk February 2010
- Philosophy of Programming Languages, University of Essex
- communities and practices
- managing a team or even entire community around software projects
- OpenHatch Community tools for free and open source software
- Toplap writing of software while it is being executed, allowing programmers to improvise music and visuals live before an audience as well as conduct exploratory research with live source code.
- see Music for OpenMusic, ChucK and other programming oriented musical tools
- Clever Tester
- Structure and Interpretation of Computer Programs (SICP) by Abelson, Sussman, and Sussman
- SIGPLAN Principles of Programming Languages (POPL)
- Rosetta Code programming chrestomathy site.
- Flymake on-the-fly syntax checker for GNU Emacs
- Emerging Languages Camp For language designers, implementors, users, and enthusiasts.
- Wikipedia:Category:Software engineering disasters
- Stack Exchange
- Software Engineering - Area 51 Proposed Q&A site for students, practitioners, and researchers. Software engineering deals with requirements engineering, software design and architecture, implementation, testing, maintenance, configuration management, process, tools, methodologies, quality, and ethics.
- Theoretical Computer Science
- Wikipedia:Hackathon, code sprint, code trail
- talks, conferences
- basically until early 2011 programming looked to me rather individual, a safe place for autism mainly limited to remote pair programming sharing screen, chatting on IRC and checking community websites
- after a recommendation from Sylvain to participate to LeanStartupEtBusinessModel and having there a discussion on their weekly code sprints I checked a bit more all the events for geeks like BarCamp (RailsCampParis3, WebWorkersCampParis, WebWorkersCampParis3), code sprints, meetups (ParisJSMeetup6) for different framework, programming language, etc...
- efficient way to learn, share, look for technical trends but also political (in the sense of organization of individuals) and tacit and expected rules
- hence my now probably recurrent question (e.g. during LuaALaGaiteLyrique) regarding the size and activities of the local community for a framework or language
- Bugs Everywhere distributed bugtracker
- Wikipedia:Racket (programming language)
- Make one to throw it away, Scott Downe's Blog May 2010
- The Association for Computational Heresy, flagship conference SIGBOVIK
- local communities of practices
- The Congress on the Future of Engineering Software (COFES)
- Interstices Découvrir la recherche en informatique
- Software Carpentry Helping scientists make better software since 1997
- Remote Pair Programming Using SSH Screen Vim and Skype, 2009
- Dreaming in Code
- WithoutNotesSeptember11#NoahGoodman on Church
- Rosetta Code present solutions to the same task in as many different languages as possible
My notes on Tools gather what I know or want to know. Consequently they are not and will never be complete references. For this, official manuals and online communities provide much better answers.