Programming

Related tools Im using
Vi + Semantic Web + AWS + Shell + Vimperator + Processing + Tools in general
Seedea content
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 http://www.iledeserte.net/Profiles/Fabien#Conditionnelles
Solution
- non textual feedback
- The Finch A Robot Designed for Computer Science Education
- music via Chuc?
- visualization via Processing
- 0 configuration first tutorial
- codepad by Steven Hazel
- http://tryruby.org
- http://trypython.org
- http://tryhaskell.org
- http://www.mongodb.org Browser Shell
- 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."
Inspired by
Live coding for Music with ChucK.
See also
- Education with e.g. Harvard CS50
- Cognition#LearningNewDomain
- Seedea:Seedea/SandIdeabox#FeelingComplexity
- Seedea:Seedea/DATAmatrix
- Zutopedia a visual guide to computer science.
- Computació amb dòmino - Domino Computation, January 2011
- part of my own motivation in http://www.quora.com/How-did-you-fall-in-love-with-programming
- Computational Fairy Tales Computer science concepts as told through fairy tales, by Jeremy Kubica
- Computer Programming for Children, Minus Cryptic Syntax by Peter Wayner, NYTimes.com November 2011
Principles
- Dont Repeat Yourself (DRY)
- Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
Key abbreviations
Practical Overviews
Tools, IDE, community websites, ...
Code re-use
- code repositories including search function
- integration tools
- http://sourcerer.ics.uci.edu/
- http://ase.csc.ncsu.edu/
- HelpMeOut: What Would Other Programmers Do? by Bjoern Hartmann, Daniel MacDougall, Joel Brandt and Scott Klemmer, CHI 2010
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...
Live coding
- documentation ready
- REPL
- 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)
- uses a transparent terminal/console with notes hidden behind it
- learn from Wikipedia:Hackathon
and its good practices
Software communities
Notes on programming languages used
- Ruby and Ruby#Rails
- JavaScript
R
- Wikipedia:R (programming language)
- tutorial
- Decision Science News' R video tutorial 1, 2
- R libs
- WikiR Structure : Integrate R language into MediaWiki
Used in Mathematics#Statistics and FinancialTools.
Python
- Python
- http://pypi.python.org/pypi/setuptools#cygwin-mac-os-x-linux-other in order to install eggs
- running programs
- moinmoin wiki
- supybot irc bot (my learning notes)
Good practices
- refactoring
- How Pair Programming Really Works by Stuart Wray, Royal School of Signals
- comments on the companion website
- Mechanism 1: Pair Programming Chat
- Mechanism 2: Pair Programmers Notice More Details
- Mechanism 3: Fighting Poor Practices
- Mechanism 4: Sharing and Judging Expertise
- recommended in XP programming
- see also notes on SC22 : Sociologie cognitive, organisation et technique
Tools
- Revision control software or RCS / (distributed) Version Control System or (D)VCS / Source Code Management
- Wikipedia:Template:Revision control software
- Version Control by Example by Eric Sink, SourceGear 2011
- Mercurial free, distributed source control management tool.
- moved to Mercurial
- Git Fast Version Control System
- moved to Git
- Fossil Simple, high-reliability, distributed software configuration management
- moved to Fossil
- Apache Subversion Enterprise-class centralized version control for the masses
- Bazaar version control system that helps you track project history over time and to collaborate easily with others.
- note that wiki are intrinsically RCS but generalized (and thus also losing specific tools) from software to text
- few wikis are actually now relying (or planning to rely) on CVS (MoinMoin2.0 storage API for hg - mercurial DVCS storage)
- Version Control Recommended Practices by Bram Cohen, 2008
- visualization of collaboration
- gource software version control visualization tool
- code_swarm experiment in organic software visualization
- CodeCity visualized as interactive, navigable 3D cities.
- Wikipedia:Template:Revision control software
- errors management
Formal methods
- Formal Methods Wiki set up by Jonathan Bowen
- AsmL Abstract State Machine Language
- Abstract State Machines website at the University of Michigan
- Asmeta ASM Metamodel (AsmM), a metamodel for the ASMs formal method developed by following the guidelines of the Model-Driven Engineering (MDE)
- B Method Presentation of B Method, B Language, and formal methods, by Clearsy
- Wikipedia:Z notation
named after Zermelo–Fraenkel set theory
- Wikipedia:Alloy (specification language)
- Alloy Community at MIT
- UTC UV LO19 : De l'expression du besoin a la realisation du logiciel including Z notation, B method, UML, ...
- The Coq Proof Assistant formal proof management system
- Workshop on Mechanizing Metatheory (WMM) 2009 Programme co-located with ICFP’09
Modeling languages
UML (now with Executable UML), ...
Linguistics
- Languages focusing on human languages but with links to semantics, grammar, vocabularies, etymology, semiotics, ...
Grammar and parsers
?
Language mechanics
general overviews
- http://en.wikipedia.org/wiki/Constructed_language
- ReadingNotes/ThePrehistoryOfLanguage
New languages
- Clojure
- The Cobra Programming Language started in 2003
- ...
Designing a new language
- Languages#MakingYourOwn
- 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
- http://www.lua.org
- Evolution of Lua, the lightweight embeddable scripting language by Roberto Ierusallmschy, Lua Workshop 2006
- Small is Beautiful: The design of Lua by Roberto Ierusallmschy, EE 380, 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
Graph
- gremlin graph-based programming language
- PEGASUS Peta-Scale Graph Mining System
- phoebus distributed framework for large scale graph processing written in Erlang
- Pregel, Large-scale graph computing at Google, Official Google Research Blog 2009
- http://www.goldenorbos.org
Fundamental Concepts
Logic , Type theory, Category Theory,Knowledge / Information Theory
Technological roadmaps
- Resources and White Papers by the Computing Community Consortium (CCC)
- Internet2 advance the state of art in networking.
Fundamental paradigms
- Programming Paradigms (CS107) by Jerry Cain, Stanford University
- Stanford CourseWare CS107
- Dataflow
- ~min37 dataflow systems/data analytic supercomputer (DAS) = "MapReduce on steroids" Running Large Graph Algorithms: Evaluation of Current State-Of-the-Art and Lessons Learned by Andy Yoo, Google Tech Talk February 2010
- pipes data flow framework written in Java
- Pixelpipe Liberate your media! post, upload and share almost anywhere
- Yahoo! Pipes Rewire the web
- DERI Pipes Open Source, Extendable, Embeddable Web Data Mashups
- tarpipe
News
- 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.
- eletronic version with its RSS feed
Hardware specific
From the closest to the hardware to the largest architecture (following the guiding principle of LayeredModel).
- ProgrammingTheUniverse#QuantumComputing
- Wikipedia:Very-large-scale integration
(VLSI)
- Electronics#FPGA (Field-programmable gate array)
- Wikipedia:Microcode
- Wikipedia:Opcode
- Wikipedia:GPGPU
General-purpose computing on graphics processing units
- Wikipedia:OpenCL
Open Computing Language
- Wikipedia:OpenCL
- Wikipedia:OpenMP
Open Multi-Processing
- Wikipedia:Category:Distributed computing architecture
See also
- Wikipedia:Unconventional computing
- Unconventional Computation 2010 (UC10), Tokyo June 2010
- Natural Computing by Cathy Lazere and Dennis E. Shasha, W. W. Norton & Company May 2010
- The LEGO Turing Machine, Lego of Doom 2009
IT framework = strategical choice
- principle
- avoid sterile discussions as battles of positions
- solution
- 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
- references
- principle
See the more general Slideshows#StrategicIT that aims at studying the industry and its actor, not solely the languages and frameworks.
Profiling
- Wikipedia:List of performance analysis tools
- Wikipedia:Profiling (computer programming)
- testing in general
- Dtrace review by Bryan Cantrill, Google Tech Talks 2007
- heartily recommended by Ryan Dahl during WebWorkersCampParis
- ~min4 "the design is the machine"
- SystemTap infrastructure to simplify the gathering of information about the running Linux system.
- DTrace vs SystemTap, Redux, tecosystems 2008
- Thoughts from the CRiSP world including DTrace for Linux posts
- Using DTrace to Analyze Your Webstack 2009
- http://www.solarisinternals.com/wiki/index.php/DTrace_Topics_OSes
- Using open source tools for performance testing by Goranka Bjedov, Google Tech Talks 2006
- SystemTap: Full System Observability for Linux by Adrien Kunysz, LSM July 2010
Entire stack
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
Software stack
- model
- kernel, syscalls, ...
- David Recordon, "Today's LAMP Stack" OSCON 2010
- tools
- Dtrace, strace, ...
Network stack
- model
- OSI layers, ...
- tools
- WireShark, ...
And "integrated" http://openstack.org
Hardware stack
- model
- proc, memory, transfer, ...
- including Hardware specific architectures
- proc, memory, transfer, ...
- tools
- hard to monitor so consider visualization in virtual world (pedagogical tool)
Synthesis of all previous 3
- networked software going through everything
- ... through Software stack
- ... and through Hardware stack
- ... through Network stack
- ... and through Hardware stack
- ... through Software stack
- add tools to track the entire process and optimize
- Profiling section on this page
Humor
- the C++ Lands, Its amazing creatures and weird beasts
- Python (#353) xkcd: A webcomic of romance, sarcasm, math, and language.
- Compiler Error (#290), Abstruse Goose
- New Programming Jargon by Joey deVilla, Global Nerdy May 2010
- The Programmer Hierarchy
To do
- incorporate and link back from my notes on
- Programming For Peace
- Programming The Universe
- The Code Book
- Intelligent Bio
- The Prehistory Of Language
- Beautiful Code
- Hackers And Painters
- Practical Common Lisp by Peter Seibel - ISBN 1590592395 - Apress 2005
- read only about half of it in order to write
E:\Work\seedea\older prototypes\lisp prototype
- read only about half of it in order to write
- originally a backup from http://projects.knowledgatic.org/ProgrammingLanguages/Resources but the collaborating admin I was building this with... disappeared.
- phylogeny not just of languages but also
- APIs
- tools
- including research tools listed here
- e.g. Sourcerer
- ML applied to code repository
- e.g. the R packaged challenge
- including research tools listed here
- add WithoutNotesJune11#Prolog and following CP/QCP/... links
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
- Firebug - Web Development Evolved
- Bespin Code in the Cloud
- MozLab developing AJAX and Mozilla applications
- http://en.wikipedia.org/wiki/Programming_tool
- 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"
- including A Genetic Programming Approach to Automated Software Repair Genetic and Evolutionary Computing Conference (GECCO) 2009: 947-954 (best paper award) (gold human-competitive award) by Stephanie Forrest, Westley Weimer, ThanhVu Nguyen, Claire Le Goues
- Programming Is the New Literacy by Marc Prensky, Edutopia 2008
- issue trackers
- Edgewall The Trac Project, enhanced wiki and issue tracking system for software development projects.
- official Trac Hacks Plugins Macros etc. - Trac
- PmWiki Issue Tracking System (PITS) integrated as a normal PmWiki instance
- Edgewall The Trac Project, enhanced wiki and issue tracking system for software development projects.
- biomimicry
- ANTLR Parser Generator framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages.
- http://en.wikipedia.org/wiki/History_of_programming_languages#Current_trends
- http://golang.org/
- with its RSS feed
- LeanThinking applied to CS/IT
- Delta Debugging, From automated testing to automated debugging, Software Engineering Chair (Prof. Zeller) - Saarland University
- first encountered in Beautiful Code
- http://eclim.org/
- The Evolution of End User Programming by Allen Cypher, IBM Research Almaden, Google Tech Talk February 2010
- Philosophy of Programming Languages, University of Essex
- Seedea:Seedea/Licenses#Software
- communities and practices
- managing a team or even entire community around software projects
- OpenHatch Community tools for free and open source software
- OpenHatch: An Open Source Volunteer Opportunity Finder by Asheesh Laroia and Raphael Krut-Landau, Google Tech Talk April 2010
- 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.
- http://www.pragprog.com/titles/tpp/the-pragmatic-programmer
- 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
- events
- 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
- 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...
- Wikipedia:Hackathon
- 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
- Remote Pair Programming with Screen and Vim, Jason Haruska 2009
- Dreaming in Code
- WithoutNotesSeptember11#NoahGoodman on Church
- Rosetta Code present solutions to the same task in as many different languages as possible
Note
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.
CONTENT
CONTACT
UPDATES
LAST TWEET
RSS for this page only


