Where as a developer do like to you keep your code snippets, links, checklists, final solutions to problems etc?
I've fooled with Google Notebook, MS Onenote, TreePad, textfiles, and Evernote a bit (currently leaning toward Evernote). All have pros and cons but none seem to be really suited to developers. Is anyone super-happy with a collection / note system that's not just generic GTD, but with developer-centric utility?
I like physical notebooks. Preferably small ones (4x6 or 5x8, not 8.5x11), permanently bound (spiral bound, book binding, etc.).
One notebook per project, typically, unless they're really small projects, in which case I reach for a partially used notebook and add to it.
I find it very helpful to grab a notebook off my shelf and re-read my maunderings from when I was thinking my way through something. Scribbling on paper lets me record partial thoughts instead of doing a 'finished' write-up. This lets me revisit my thought process in addition to the solutions I found -- and that tends to be more enlightening than merely recording a solution.
UPDATE: I'm extremely gratified at the response of my peers to this simple answer, and so I thought perhaps I should elaborate on my methods.
First off, I find the typical Moleskine notebooks to be too small, and they tend to be expensive. I usually use something like this one from Staples [1].
Top of each page: Project name, Page number, and Date I started writing on this page.
Daily: Draw a line across the page, and write the current date (and sometimes the time) down before adding more notes. It's helpful to see the gaps of time in working out ideas. And I often find my best ideas turn up just below one of these lines -- that is, after I've thought for a while and come up with something.
Review and Redact: If I've written out a few ideas of directions to go, and later I decide on one of them, I make sure to go back to the original list of ideas and add notes; specifically, I'll hilight the chosen solution somehow (underline, circle, etc.), and add a reference to the new page where I wrote down why I chose this solution. Also, I try to make these revision notes in a different color ink, or written at a different angle, or make them in some other way obviously not part of the old information.
Reference: If I flip back to look at something, I consider jotting down 'see pg. 13' so I don't have to go flipping around for that information again. I also never hesitate to refer to other project notebooks, noting them with 'See proj. Alpha, pg 23' or something similar. Sometimes I backlink that notebook as well, say in Alpha pg 23 a note 'Very helpful for proj Beta pg 7!'. These sorts of notes across projects are fairly rare.
I'm sure I've left out some of my other ideas and techniques. Perhaps others could add their ideas and techniques here as well? I know I'd appreciate hearing them!
[1] http://www.staples.com/office/supplies/p1_Steno-Memo-Notebooks_98429_Business_Supplies_10051_SC1:CG10:CL140571Start a blog. This way, not only you benefit, but so do others who may have the same problem. There are also combination blog/wiki systems, ranging from Drupal [1] to Hiki [2]. Also, consider that having your notes on a host (with regular back ups) will ensure that they survive you dropping your laptop down a flight of concrete stairs, and that they will be available even when you're away from your primary working machine.
Oh, and some people really like mind maps [3] for brainstorming and such, but I'm not sure that they're that valuable for long-term note taking/storage.
UPDATE: If you don't really want to run your own site, or a blog is too much of a time investment, another option is to start posting on RefactorMyCode [4] or Snipplr [5]. You get a searchable database of your code snippets, plus perhaps people will comment on your code and suggest improvements. The " Code reviews on the web [6]" thread might have more ideas over time.
[1] http://drupal.org/It's great all your notes get cross referenced.
TiddlyWiki is a single HTML file which contains all the articles ("tiddlers") for a small wiki. It also contains all the styling and javascript to make it work as a wiki (displaying / hiding articles, generating menus, etc). Fans find it a very intuitive way of constructing a document.
... although it's not just a document - one might almost say it's a tiddly wiki!
The only problem is how to keep it in sync in multiple locations.
Possible solutions are:
capability.principal.codebase.p0
. (4) In the line that has capability.principal.codebase.p0.id
, change the second argument to point to your TiddlyWiki file (e.g. "file:///C:/dir/dir2/TiddlyWiki.html"). (5) Save. - Kyralessa
An oft over-looked application is OneNote [1]. You can share your notes on a network share, over the Internet as well as from within SharePoint or just keep them private on your own PC.
If you're a heavy Windows user, OneNote integrates with every other MS Office application. Will sync with Outlook todo lists as well as with PDA's and Smart Phones.
I've been using OneNote for at least 6+ years now and would be lost without it.
Summary of Comments and Other Capbailities
Sample Usage (from comments)
I use it on a tablet, and it's great, for example, for deriving equations, as you can write the equation with the pen, and then type a paragraph of descriptive text, and insert a link from the web.
Best Comment
[1] http://www.microsoft.com/onenoteI wish it was available for Linux, as it's the only reason I use Windows.
A Moleskine!
Depending on the nature of the project and the size of your development team, a number of methods are necessary to adequately cover all of the bases:
For day-to-day notes, reminders, and sketches, I still haven't found anything as good as an old-fashioned pen & paper notebook. Part of the beauty of this solution is that your notebook can be as organized or as chaotic as suits your style. I don't think there is any best way to use a notebook.
A wiki is great, but I find that in order to get the most out of it, it has to be a common wiki used by everyone on the team or in the department. TiddlyWiki [1] is an excellent piece of software, but it is designed for individual use. You want something more like MediaWiki [2] that can be set up on a central server.
The focus of your wiki should be on practical documentation. It should be rife with FAQs, tutorials, How-To articles, sample code, and so forth. Ideally, any time somebody on your team hits a stumbling block and has to learn something specific to your company or project, they should contribute an article to the wiki about it.
Avoid email for documenting things such as gotchas and best practices. Many people tend to reach for email when they first identify a recurring problem and want to publicize the solution. The problem is that email tends to be hard to find weeks later, which is when the problem being discussed will most likely resurface. The best thing to do is to write a wiki article and then send an email to publicize the article. A good wiki will have a much better signal to noise ratio than a typical email inbox.
A blog is a useful tool for personal development and communicating your experience to other developers. However, writing a good blog tends to be a lot of work, and may prove to be too much of a distraction within a software development team. Also, blogs lack the hierarchy that a wiki has; they capture information in chronological order, and therefore suffer from the same issues as an email inbox to a small degree.
If your team or department is large, a forum might be a useful alternative to email, and may also be a convenient dumping ground for transitory topics that don't belong in a wiki. A forum can be a useful place to track fire-fighting style issues that occur suddenly, affect many team members, and may require some discussion or exploration. It can also be a place to post light-hearted stuff such as funny web links or other topics that team members use to blow off steam.
Generally speaking, the most important things to have are the paper notebook, the bug-tracking DB, and the wiki. Blogs and forums are good to have, but not as effective for capturing simple, straight-forward documentation. So far I haven't found any single piece of software that is effective enough to replace a combination of individual notebooks combined with a central wiki and a central bug database.
It should also go without saying that your project should use some sort of version control software. :)
[1] http://www.tiddlywiki.com/I use Emacs Org-Mode [1] along with Remember Mode [2] to keep track of everything. TODOs, appointments, notes, etc. With Org mode and Remember mode integration, plus a shortcut key defined in my window manager, I can hit a shortcut key from anywhere (Win + R in my case) and pop up a new Emacs window, select which type of item I'm saving (TODO, appointment, note, etc) and then quickly type what I want and then hit C-c C-c. The note is filed away to a default location for me to organize later if I so choose. This is so simple and convenient that I don't have to interrupt my flow of thinking if I suddenly think of something I need to do or take some notes on a given task. "Just what are the steps again for setting up a remote git repo? Okay, I do this and this and this. I had better write this down before I forget."
[1] http://orgmode.org/FWIW, I'm really digging Evernote right now. The searching works great making it really easy to find code snippets. The tagging is nice also. Honestly, best feature by far is having a Mac, Windows, and Web client that auto syncs. Your notes/snippets are available anywhere..
oh.. and it's free..
Use a Wiki. I personally use ScrewTurn Wiki - Desktop Edition [1]
[1] http://www.screwturn.eu/DesktopEdition.ashxI use a directory of text files. Roughly looks like this at the moment :
admin\
important-stuff.rst
development-log.rst
development\
projects\
proj1\
overview.rst
...
proj2
reference\
some-topic.rst
I use the ReStructuredText (rst) format for the individual files so its easy to generate html. Of course markdown would work almost as well :)
in development-log.rst I put entries for each day with current tasks and just general notes for stuff that comes up. Each new project starts with an overview.rst and can then expand into new files on specific topics as needed.
I manage the whole tree as a local bazaar [1] tree so i can check old versions if necessary.
To search I just use my editors built in search - or index using a desktop search tool.
I used the rsync the whole tree up to a ssh server every day to use from home as well - but thats not an option now that I'm behind a corporate firewall.
btw - this editting widget is actually pretty cool. I like the combination of editting in a plain text format combined with live preview. Works well.
[1] http://bazaar-vcs.org/Tomboy [1] for Gnome. That's pretty much like a wiki but it's a client application.
[1] http://www.gnome.org/projects/tomboy/I have just started using Evernote. Its searchable, you can publish it to the net and accessible from anywhere.
Scan in your original diagrams to go along with the code.
And its free.
DokuWiki [1]
DokuWiki is is targeted at developer teams and mainly aimed at creating documentation of any kind. It has simple but powerful syntax which makes sure the data files remain readable outside the Wiki. (All data is stored in plain text files – no database is required.) Optional syntax highlighting of code blocks is another neat feature most programmers find useful.
[1] http://www.dokuwiki.orgI use a Google Notebook. I like the fact that I can access it from any computer with Internet access, and the format is simple but useful. The searchability is a big plus, and I can share it with other programmers.
We've talked about creating a team wiki, but I'm glad that my notebook only has things that are useful to me. The exercise of putting things into my notebook also helps me remember the things that I've taken the time to add.
Plus, the handy cut-and-paste. Hardbound notebooks have a real disadvantage when it comes to pasting in code snippets.
I use a password protected, private instance of Media Wiki. (It's the same backend that Wikipedia is based on).
I use Emacs, and dump everything into text files, typically in a src/snippets
directory. Then I make sure that my OS provides fast full-text search. For group projects, I use MediaWiki and a searchable bug tracker.
Blog posts are great for more involved answers.
It's not developer centric but I find a really natural way of keeping notes is TiddlyWiki [1]. I find the natural structure afforded by the wiki metaphor a really quick and easy way to organize notes well.
I always use it when condensing a large text about a technology into a small piece of reference material or when planning a piece of work.
There are some issues when saving locally with the Java applet though so be careful to make sure it is working before making extensive notes.
Edit: None of this is a replacement for being able to Hold a Program in One's Head [2].
[1] http://www.tiddlywiki.com/I've been using freemind for a few months. http://freemind.sourceforge.net/ It's a mind mapping tool. It essentially builds a tree with text nods. Very quick to use, and it also allows you to easily assign a context to a particular note, by adding the note to the appropriate parent node. I also use a small notepad when I'm walking around.
I go through 100s of post-its a month.
Then I also have a WordPress blog with some code syntax hilighting plugins that is behind an .htacces password.
AbstractSpoon ToDoList. Ultimate tool for everything.
http://www.codeproject.com/KB/applications/todolist2.aspx
Personally? While I'm planning and designing, I'm a big proponent of good old fashioned pencil and paper. I have yet to encounter a diagramming tool that's as natural as sketching out the boxes and arrows myself, and during the design phase my work is equal parts pseudocode, quasi-UML, interface sketches, and checklists.
For notes that I want to share with my team, I prefer to use the wiki that's built in to Trac [1]. It's integrated with rest of the issue-tracking environment, so you can do things like easily link to tickets, source code, revisions and changelogs. We've found it to be a great place for the kind of notes and discussions that you mention.
[1] http://trac.edgewall.org/I strongly recommend FlashNote [1].
It is so convenient - just ALT-S and type then ALT-S away.
I find the newer version interface is the tiniest bit clunkier than the old version but it's still the smoothest note taker around.
I can't recommend this program any more - every person I've introduced to it, developer or not, loves it and uses it.
NB: Windows Only
[1] http://softvoile.com/flashnote/I use Trac [1] tickets to keep my memo and to-do-list, with subversion integration, it can also easily manage my personal projects and scripts.
[1] http://trac.edgewall.orgI find that the less time spent on the tool the better. I often have 2 files going: ideas.rtf and todo.rtf. The former is a collection of random thoughts while the latter thoughts that have a temporal nature (e.g. tasks, etc). The reason I bring up the format and not the editor is because my notes then end up being portable and editable by almost any tool .
However, if I had to name a tool I would say TextEdit on the Mac. You can't beat the cmd-+ keystroke for enlarging text. A quick way to establish structure and layout in a notes document is essential.
A variety of tools depending on exactly what I'm saving. I use Evernote for saving notes, webclips, links, code snippets and the like. I really like it so far. Tasks and checklists go in Remember the Milk (though I just started trying out OmniFocus). Random ideas get written on vertically ruled index cards for the initial note and get filed away in one of the electronic systems.
Snippley is a neat little Adobe Air app done by the guys who manage MooTools, made specifically for storing little snippets of code. You might find it useful: http://code.google.com/p/snippely/
We use FogBugz, and all notes from the dev team go into the wiki. There are also general engineering/networking questions, and they go into an engineering wiki.
This way, even quick notes are found in one place and last forever. And you have the added benefit of being able to easily correct or update older notes.
if you are working on something that may be patentable, use a hard-bound notebook with unlined pre-numbered pages. have it notarized periodically.
otherwise, notepad works for me ;-)
I've been programming for over 20 years and sadly I have had the same problem as the OP, until I discovered the LiveScribe pen this year.
It has totally changed my note-takeing life! It has 4 main benefits:
I honestly can't recommend this enough. It's like GPS for me; once you've used it, you can never go back!
I have a directory called "notes" with just three sub folders, unix, java and confs (for working config and property files). It is backed up in subversion and mirrored between my laptop, work laptop, work desktop and my server. Many of the files have names like "find-command-examples.txt" , "cusip-validate-via-regex.txt" or "jboss-jndi-with-openldap.txt"
Plain text is the way to go. And fewer folders is better since you don't waste time deciding if something should go into "unix", "shell" or "scripts"
On my Mac I use spotlight to search. On unix I use grep. On windows I use the cygwin find command.
If you need formating, consider rtf since you'll still be able to grep. Or use find with rtf2txt to keep plain text versions.
I've like to evolve my notes in a wiki site (I use SharePoint but any wiki system would do) to share internally with my team members. From there, depending on the topic and how much "churn" there is with the content, I migrate notes into more formal documents that can be version controlled.
My concept is not really specific for developer-centric purposes, but the idea of a wiki works great for situations involving a team of peers.
I'm old school. Plain old text file using my favorite text editor TextPad - http://www.textpad.com/
Dropbox
Just combine dropbox [1], your favourite text editor [2], and a folder of markdown formatted text files.
It has the following advantages:
After 25+ years as a developer, many of them spent writing notes (I'm an inveterate scribbler) I'm really over paper notes.
They are bulky, you can't search them, can't back them up and can't carry them around that easily.
Modern OS, especially OS/X which I use as my main desktop, are really good at finding things so the most important thing is just write stuff down. You can worry about getting the where right later. That's also a lesson for wiki users - we had a very successful wiki (using Twiki) at CSIRO where I worked with many scientists and the number-one lesson was to record now, edit later.
Having said all that, I'm naturally a tactile and then visual thinker. I tend to sketch solutions. To keep everything searchable, simple, diffable and able to be used in a wiki and in Doxygen, I do many of my diagrams with GraphViz. That way I just have to describe the diagram in a simple text form and the picture is generated. I use GraphViz (strictly, the dot tool) for schema documentation, calling sequences and casual architecture diagrams because it's the fastest possible way to get a picture recorded.
As a self-education and self-improvement excercise, whilst it is useful and fun to be able to leaf through past notes in a notebook, I think it is actually better to be actively editing and commenting on past work. I think you're more likely to lay down new associations in your brain if you're handling the material by pulling bits out and writing them up or classifying them in relation to other bits of knowledge. This is also one thing you can do to mitigate the linear style of blogs - maintain index pages pointing to your better postings.
If you are using VS try CodeKeep [1] ( just in case you did not read about it above )
Start blogging ( Even if nobody reads it ... as mine ; )
copy , paste to blogger
I use small copy paste snippets to Blogger. It sends automatically e-mails to my Gmail account. Install Google Gears - for example I do have my regular searches such as "cmd cheat sheet" or "perl cheat sheet". I tag each code snippet with easy to remember tags ... Thus later on when I need them : Start - Run , type Opera , Ctrl + 1 - access Gmail type / to focus on the search tab , type "tag " , hit Enter
whell it is most probably there , Copy Paste and use it.
use a fake class I also have the following type of fake class, which does help if you type HowTo.DoSomethingSuggestedByVSIntellisense
using System.Text; using System.Diagnostics; using System.Collections.Generic; using System.Collections;
namespace GenApp.Utils.Theory { /// /// This is fake class for quick copy paste. Usage: /// type HowTo. - the intellisense will display the names you have figured out for each fake method /// select the name from the , click in it , right button , G , will get you there , /// copy paste the text , Alt + F, C to close and remember to delete the fake call. /// public class HowTo {
public static void UseRegexesWithWhiteSpace ()
{
//how-to use regexes with white space
// Regex re = new Regex(
// @" # This pattern matches Foo
// (?i) # turn on insensitivity
// # The Foo bit
// \b(Foo)\b "
// , RegexOptions.IgnorePatternWhitespace ) ;
// for ( Match m = re.Match( "foo bar Foo" ) ; m.Success ; m = m.NextMatch() ;
} //eof method
public static void DisplayJavaScriptConfirmationDialog ()
{
//Active_chkbox.Attributes.Add("OnClick" , "return (confirm('Do you want do disable this user'));");
} //eof method
public static void RegisterPageStartUpScript ()
{
//how-to Page.RegisterStartupScript(@"startup",@"<script>alert('Thank you!');</script>");
//string JaScript = "<script language=’javascript’> alert('User Details saved successfully') </script> " ;
//Response.Write( JaScript );
} //eof method RegionsterPageStartUpScript
public static void AddCallingMethodNameToDebug ()
{
string code = @"
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
string mName = st.GetFrame(1).GetMethod().Name;
";
} //eof method AddCallingMethodNameToDebug
public static void SettersAndGetters ()
{
string help = @"
how-to generate those in textpad F8 how-to Generate member accessors , properties for C# asp.net with textpad how-to setters and getters find:^(.*)$ replace:private string _\1 ; \n public string \1 { \n \t\t get { return _\1 ; } \n \t\t set { \1 = value ; } \n } //comm -- eof \1 property \n\n find:^(.) (.*)$ private string s\1 ; \n public string \1 { \n \t\t get { return s\1 ; } \n \t\t set { s\1 = value ; } \n } //comm -- eof \1 property \n\n
FIND:first remove all the [] from the copy paste of the table create screipt ^\t[([a-zA-Z_])](.)$ FIND type and var ^(.) (.)$ REPLACE Properties
//for the constructor _\2= this.\2 ;
//for the passing to the constuctor \1 _\2 ,
/* ^(.) (.)$
";
} //eof method SettersAndGetters
public static void ListAllDbObjects ()
{
/*
--HOW-TO LIST ALL PROCEDURE IN A DATABASE
select s.name from sys.objects s where type = 'P' or type='UP'
-- GET THE GENERATED ONES ONLY
select s.name from sysobjects s where type = 'P' and s.name like '%gsp%'
--HOW-TO LIST ALL TRIGGERS BY NAME IN A DATABASE
select s.name from sysobjects s where type = 'TR'
--HOW-TO LIST TABLES IN A DATABASE
select s.name from sysobjects s where type = 'U'
--how-to list all system tables in a database
select s.name from sysobjects s where type = 's'
--how-to list all the views in a database
select s.name from sysobjects s where type = 'v'
Similarly you can find out other objects created by user, simple change type =
C = CHECK constraint
D = Default or DEFAULT constraint
F = FOREIGN KEY constraint
L = Log
FN = Scalar function
IF = In-lined table-function
P = Stored procedure
PK = PRIMARY KEY constraint (type is K)
RF = Replication filter stored procedure
S = System table
TF = Table function
TR = Trigger
U = User table ( this is the one I discussed above in the example)
UQ = UNIQUE constraint (type is K)
V = View
X = Extended stored procedure
*/
} //eof method
public static void GetProcedureMetaData ()
{
string answer = @"
select PARAMETER_NAME as 'COLUMN_NAME', DATA_TYPE , CHARACTER_MAXIMUM_LENGTH AS 'MAX_LENGTH', IS_RESULT , PARAMETER_MODE from INFORMATION_SCHEMA.PARAMETERS where SPECIFIC_NAME='Login_Check'
Select * from INFORMATION_SCHEMA.Routines --returns stored procedures and functions
exec sp_HelpText 'Login_Check'
";
answer = string.Empty;
} //eof method
public static void GetRowColumnValuesFromDs ()
{
//(ds.Tables["TableName"].Rows[0]["ColumnName"] == DBNull.Value) ? false : (bool)ds.Tables["TableName"].Rows[0]["ColumnName"];
} //eof method
public static void CopyMeAsTemplateMethod ()
{ } //eof method
public static void ReflectionExample ()
{
//Type objectType = testObject.GetType();
//ConstructorInfo[] info = objectType.GetConstructors();
//MethodInfo[] methods = objectType.GetMethods();
//// get all the constructors
//Console.WriteLine("Constructors:");
//foreach (ConstructorInfo cf in info)
//{
// Console.WriteLine(cf);
//}
//Console.WriteLine();
//// get all the methods
//Console.WriteLine("Methods:");
//foreach (MethodInfo mf in methods)
//{
// Console.WriteLine(mf);
//}
}
public static void shortcuts ()
{
string _shortcuts =
@"
//how-to shortcuts
Ctrl + Shift + F -- recursive find
F3 -- find next occurence
Ctrl + H -- find and replace
Ctrl + M + M -- collapse method
Ctrl + B --- set a break point
CTRL + “-” and CTRL + SHIFT + “-” -- web browser like backward and forward in code
Ctrl + Tab --- shift tabs
Shift + F5 --- stop debugging
Ctrl + I --- fast search
F5 -- start debugging
Tryf = try and finally block
Prop = property with get and set accessor
Switch = switch statement with default
Alt + W , L -- close all windows
Alt + W , 1 -- open the first window
Alt + F , F , 1 -- open the latest file I closed
Ctrl + F2 , Tab -- go to the methods dropdown , type a letter to get to the name of the method
Alt + L --- select the Solution Explorer
Ctrl + Shift + Z -- press 2 (needs arsclip (google download arsclip)) -- get the second latest entry from my clipboard
";
} //eof shortcuts
public static void redirectToCurrentUrl ()
{
string _redirectToCurrentUrl =
@"
Response.Redirect ( System.IO.Path.GetFileName ( System.Web.HttpContext.Current.Request.Url.AbsolutePath ) , false );
";
} //eof method
public static void formTypes ()
{
string _formTypes =
@"
//how-to forms 1 - Empty Search Form , 2 - Filled Form , 3 - Empty New form ( new Margin Data , new Project )
//how-to formTypes
//, 4 - filled search form from get by id procedure
// 5 - FilledSearchForm (coming from params)
";
} //eof formTypes
public static void GetTheFileNameWithoutTheExtension ()
{
/*
System.IO.Path.GetFileNameWithoutExtension ( System.Web.HttpContext.Current.Request.Url.AbsolutePath ) );
*/
} //eof methoed
public static void GetThePhysicalRootPathNoExtension ()
{
//how-to get the physical root path on the file system of the application
//Utils.Dbg.Debugger.WriteIf ( "My rootPath is " + rootPath );
} //eof method
public static void AccessConfVariables ()
{
//how-to access conf variables BL.Conf.Instance.Vars [ "varName" ] would give you "theVarName ;
} //eof method
public static void GetRowColumnValue ()
{
//how-to get row column value
//(ds.Tables["TableName"].Rows[0]["ColumnName"] == DBNull.Value ) ? false : (bool)ds.Tables["TableName"].Rows[0]["ColumnName"] ;
} //eof method
public static void GenerateExtendedPropertiesForATable ()
{
//table column
//find:^(.*) (.*)$
//Replace:
//EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'title="\2",visible="1",fs="Basic Details",readonly="1"' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'\1', @level2type=N'COLUMN',@level2name=N'\2'
} //eof method
public static void RedirectToTheCurrentURL ()
{
//how-to redirect to current url = users.aspx or projects.aspx
/*
Response.Redirect( System.IO.Path.GetFileName ( System.Web.HttpContext.Current.Request.Url.AbsolutePath ) , false );
*/
} //eof method
public static void THEORY ()
{
//EVENTS AND DELEGATES IN ASP.NET -- http://msdn.microsoft.com/en-us/library/17sde2xt.aspx
} //eof method
public static void ReplaceDebugging ()
{
/* find : replace
^(.*)([^\/\/])(Utils\.Debugger)
\t\t\t\t\t//Utils.Dbg.Debugger
*/
}
public static void UseStringBuilderInsteadOfString ()
{
//Bad
string s = "This ";
s += "is ";
s += "not ";
s += "the ";
s += "best ";
s += "way.";
//Good:
StringBuilder sb = new StringBuilder ();
sb.Append ( "This " );
sb.Append ( "is " );
sb.Append ( "much " );
sb.Append ( "better. " );
} //eof method
#region SomeObject.Value = SomeValue ?? null;
class SomeObject
{
public string Value { get; set; }
}
public static void DummyAssignValueIfNotNull ( string SomeValue )
{
SomeObject SomeObject = new SomeObject ();
if (SomeValue == null)
SomeObject.Value = null;
else
SomeObject.Value = SomeValue;
}
public static void SmartyAssignValueIfNotNull ( string SomeValue )
{ //Instead of this:
SomeObject SomeObject = new SomeObject ();
SomeObject.Value = SomeValue ?? null;
}
#endregion SomeObject.Value = SomeValue ?? null;
//<source>http://stackoverflow.com/questions/28637/is-datetime-now-the-best-way-to-measure-a-functions-performance</source>
public static void MeasureMethodPerformance ()
{
Stopwatch sw = new Stopwatch ();
sw.Start ();
// Do Work to measure
sw.Stop ();
string StrDebug = string.Format ( "Elapsed time: {0}", sw.Elapsed.TotalMilliseconds );
} //eof method
public static void GenerateResxFileOutOfListing ()
{
/* FIND: ^(.*)$ REPLACE: \n value\n comment \n\n
*/
} //eof method
} //eof class
#region implement IEnumerable for a type public class ClassImplementingIEnumerable : IEnumerable { public IEnumerator GetEnumerator() { yield return "x"; yield return "y"; }
// Explicit interface implementation for nongeneric interface
IEnumerator IEnumerable.GetEnumerator ()
{
return GetEnumerator(); // Just return the generic version
}
} //eof class #endregion #region implement IEnumerable for a type
} //eof names
I use http://www.backpackit.com/ by 37signals [1]. I can create pages add lists, notes, files, pictures, writeboards and tags and then search anything I previously added. It is not developer specific, but it works for me.
For snippets I have one page for each language I use and each snippet is a note with files (sometimes).
[1] http://www.37signals.com/I find it surprising that nobody has mentioned the notes built-in support in Opera. You can access the notes whenever you're browsing with a shortcut (Ctrl-Alt E), which will prompt you to the notes tab searchbar, You can even synchronize your notes so that you'll only have one big repository of notes in any Opera browser that you use, thus you can be in Linux, Windows, Mac and still read your notes.
I use it all the time whenever I can't recall how I did something before but that I have a hunch that I might have made a note for it, I just bring the notes from Opera and type whatever I can remember from that note, and voila! There it is.
Although, it could be said that one of the drawbacks of Opera notes is that you can't format your text.
I'm surprised no one has mentioned Pocketmod [1] yet. It's basically a DIY origami notebook. You can customize the pages to suit your needs. Personally, it's either lined pages or graph paper. I'll usually have a few in my backpack for different projects.
While on the computer, I'll send myself an e-mail with my note. Using GMail's search engine, I can usually find any note quickly.
[1] http://www.pocketmod.comI'm using Leo [1] for this kind of stuff.
Description from the homepage, for lack of a more personal note:
Index cards and a spiral notebook.
I use PersonalBrain as my knowledge base. For me, it excels in storing code tidbits, patterns, project-specific data and general notes. Information is easily linked to other information, and I can quickly find any piece of information that I need in seconds.
For blazing quick creation and retrieval of stored knowledge, nothing else beats it.
(You'll find that the makers of PB try to sell it as a mind-mapping tool, I find other tools better like FreeMind better for that job.)
Ok, this is a mac-centric answer...
I used to use voodoo pad [1], which is a desktop wiki program. It's quite nice to use because it's a fully integrated mac app. You can copy and paste rich text into it and preserve the fonts and formatting and so forth. It's really pretty nice to be able to dump procedures, notes, stuff you received in email and so forth. And it has a great search feature.
One thing I should note -- I initially bought this application because I thought I could have a nice-to-edit desktop wiki, and be able to access it remotely through a webserver/wiki type interface. It never lived up to the hype though. Maybe it's better now.
Then I used Omni Outliner [2]. This had many of the great qualities of Voodoo pad, but would allow me to hide and rearrange things. It gave me the ability to prioritize stuff, and conversely, hide unimportant stuff. And search too.
Now, I'm using Omni Focus [3]. The Omni Group [4] came out with it after they came out with Omni Outliner, so I switched. It does most of the stuff Omni Outliner does, but with all the Getting Things Done (GTD) [5] goodies that helps you manage the tasks.
To be honest, I haven't really taken advantage of the OmniFocus extras, but it's part of the plan...
[1] http://flyingmeat.com/voodoopad/A combination of good old physical notebook and notebook in the cloud (Google docs).
Physical notebook is simply much better when I want to quickly scribble my thoughts and draw diagrams. And I can do this anywhere. Notebook in the cloud is good for copy-pasting code snippets. And it's nice because somebody else is doing the backup for me, and I can use it as long as there's internet access. I wish Google docs could do basic drawing and diagram though.
I am really liking EverNote [1] for general note management.
The older I get, the less information I seem to be able to retain, and I’m finding it increasingly necessary to write things down so I can reference them later. Since it seems I have forgotten how to use a pen or pencil to make legible characters on a piece of paper, I usually type this information into the computer. I have tried a number of ways to organize these digital "sticky notes". For awhile I was using the Notes feature in Microsoft Outlook , but that doesn’t really allow me to access my notes wherever I am, and it was awkward to use. I discovered I could use Yahoo! Notepad to sync with Outlook Notes, so I began to use that quite a bit - until I moved to Vista and Office 2007. For a long time, there wasn’t a sync client from Yahoo! that would work, and I found myself looking at other alternatives. A couple of weeks ago I discovered an application that is really working well for me. Evernote describes itself this way:
Evernote allows you to easily capture information in any environment using whatever device or platform you find most convenient, and makes this information accessible and searchable at any time, from anywhere.
What’s nice about Evernote is that it is provides a Windows client that synchronizes with a web interface, so your information is truly available to you wherever you go. There are Mac, Windows Mobile, and IPhone clients as well.
This is not just for text. There is a simple rich text editor for taking notes in meetings or entering the bits of information you need to do your job or manage your life. Beyond that, you can store entire web sites (or just selected portions) quite easily using a Firefox extension. The program will also store scanned images, PDF files, and audio clips, but I haven’t really taken it that far.
Searching works well, and they claim to also search PDF files and text within images. Like Outlook Notes and Yahoo! Notepad, each note is assigned a title based on the first line. Evernote, however, allows you to rename the title. Notes can be organized into folders and assigned tags.
Synchronization also works well - even behind the firewall at work (it appears to use whatever HTTP proxy is configured in Internet Explorer). By default it syncs once an hour, but this is configurable, and you can force a sync at any time. I haven’t really tried using the web client. I have the Windows client running in the system tray so it quickly accessible.
Did I mention it was free? There is a monthly cap, but in my regular use I am not even coming close to the allotted upload allowance. The premium version is $45/year, which gives you SSL encryption as well as a much larger upload allowance.
If you are like me and need an application that will allow you to create your own personal knowledgebase , than I highly recommend Evernote .
[1] http://www.evernote.comI use a paper notepad and either windows' notepad or linux' kjots. Additionally I keep notes in the source code I am working on (mostly the 'why' something was down).
As someone said before: "Make sure to write everyhting down.".
I have been using a tool called clockingIt www.clockingit.com it lets me create projects and then tasks inside the projects. tasks have different priorities, severities, a description and a trail of comments I leave every time I update the task.
I mainly use this tool to track my time, so when I am working on a task I clock in on that task and at the end of the month it generates my timesheet.
it is open source as well. It is a great replacement for post-it notes and also keeps track of my time!
Try google docs, for some existing code, you can copy and paste it in really quick. Plus it's online so you can reference it when your on the road or home.
I use GMail [1] - it is searchable and available anywhere I have internet, and is long term memory.
[1] https://mail.google.com/mail/I ran into the same thing about 2 years ago. I wrote a little program that sits in the top right corner of my desktop that drops down and has notes and contacts. I'm not sure if the published version still works well, but the code is there so you can fix any bugs you want.
You can get it at http://desktopcontacts.sourceforge.net [1].
It is a little buggy. It was one of my first ventures into custom painting, but I find it useful.
[1] http://desktopcontacts.sourceforge.net/Set up a wiki. Its free and easy. Check out MediaWiki [1], the software that powers Wikipedia. I set that up on Fedora a couple of years ago. It was pretty easy to set up and use.
At my current job we use Microsoft OneNote which is also nice, but you have to have the software installed. Its easier to author, but if you want a wide audience then a wiki might be the better solution.
[1] http://www.mediawiki.org/wiki/MediaWikiUltra Recall - The most awesomest PIM / personal database / document manager evar. http://ultrarecall.com
Unfortunately it's Windows-only.
I regularly use Emacs and org-mode for note keeping. Its flat text format is easy to post in emails, diff with text processing tools, store in SCM systems in a meaningful manner, and so on. The nice UI shortcuts to add new 'note nodes', promote notes, demote notes, move them around, expand and collapse them, and the almost free-form style of the note text is nice when one spends a lot of time editing text (documentation, sources, etc).
For more details, if you are already using Emacs, check out: http://orgmode.org/
Um, I use the source code? Really. That's where you (or if open source/free software), somebody else will look for the algorithm, ideas and background to the code. Code snippets become examples or utilities. Checklists or release scripts become version-controlled admin scripts. This doesn't deal too well with diagrams, I admit.
Pencil and Paper are fine until that calamitous flood or fire comes along, also paper isn't very efficient for searching or copy/paste.
I use ToDoList [1] for TODO lists and a folder hierarchy of text files which I search and categorize (by folder name) through a custom explorer-like notepad app I wrote.
[1] http://www.codeproject.com/KB/applications/todolist2.aspxFor my work on enterprise applications:
Lots of notepads. I diagram a lot, and scratching it out is quick and easy. I can take it with me to a meeting or to QA or -gasp- a customer.
OneNote. Window Key + S. Instant Sizable Screenshots are worth their weight in gold. The notebooks are pretty useful to.
Code Comments and text help files in the repository. Thinking of your code as a product that has to be consumed by other developers, packaging it correctly can be a big help.
To do list. Wherever I can make them. Word, WordPad, Notepad, notebooks, OneNote, whittled into my desk. Should probably be number one. If you work on an application that can be your notepad, try that, too. It helps you find bugs.
For my web development
Trac. I love that thing!
See above.
Four things give me the ability to record and find every note I need for a software project.
vim
&TextMate, but there's no reason you can't be proficient at emacs
, Notepad 2, TextPad, or BBedit. I'm looking forward to learning sam
.grep
, find
, and Quicksilver.rspec
. Ideally you can generate documentation from those tests, saying which pass, which fail, and which are pending or ignored.svn
, or Mercurial, hg
.Tomboy [1] - a desktop wiki that just feels right with powerful search capabilities. With the newest release it goes multi platform.
[1] http://www.gnome.org/projects/tomboy/I blog at geekrant.org [1] - Google searches it, I get third party comments, it's great.
[1] http://geekrant.org/My trustful paper pad with a good pen. Always work. No bugs. Sometimes, I do have to fill the ink inside though.
I Use TextMate with Markdown for my notes.
For sending these notes to others TextMate has a nice preview feature for Markdown [ctrl]+[alt]+[cmd]+[p]
which allows to send your notes as a well formatted pdf.
i keep my notes in standard black engineering notebook. When complete, I usually put a dymo lable on the front detailing the date of the first and last entrries.
I've been writing on a blog (www.strugglingthru.net) and using Evernote. Evernote is especially nice because I can sync all of my notes across my laptop, work PC, home PC and my iPhone. Personally, I use the free Evernote service (which is pretty generous). But someone else said start a blog and write on it - I highly recommend that. It's a great way to give back to the community.
Edit: I also have an engineering notebook at work. They are invaluable for both you and your employer. Highly recommended.
I use the Mantis bug tracker [1], I use it for bugs, todos and notes for stuff I'm working on.
It lacks some features of FogBugz [2], but hey, it's free ;)
[1] http://www.mantisbt.org/I use a combination of a large Moleskine journal (which I break up into sections for different university courses and projects) and plain txt files (TextMate). The journal for conceptual stuff, the txt files for saving project-related emails and other text harvested from the web.
These days I'm using "Action Sheets" [1] from Behance [2] that I get at a local paper store for notes and diagrams in conjunction with Plain Text Wiki [3], a wiki plugin for TextMate [4], for notes and links. I backup and sync the wiki to other computers and my iPhone using Dropbox [5] (I just keep the repository in my Dropbox folder). (Previously I used svn, but Dropbox is more automagical and works with iPhone).
( viki [6] is a wiki alternative for vim)
[1] http://www.creativesoutfitter.com/Products/Action-Sheets/15I use Vim and the Viki plugin [1] - effectively a wiki using plain text and a plain text editor.
[1] http://www.vim.org/scripts/script.php?script_id=861Moleskine!
Zim [1] Desktop Wiki is a good outliner/note taker. It runs on your desktop as a normal application (not a web app). It stores its data in plain text files with wiki markup. Supports rich text and images. I use this app all day every day.
[1] http://zim-wiki.org/Simplest tools are best. I used notebooks for a long time, but got frustrated by no being able to search for stuff or take them your notes with you. Used OneNote on a tablet pc for a while. Has a lot to recommend it, but the notes are stuck on one PC (OneNote can actually share stuff around, but it's a bit fiddly) and tablets are expensive underpowered and short on battery life.
My primary thinking tool is a whiteboard and a digital camera.
I now use FogBugz - the combo of case tracking and wiki is very powerful. You can keep all your stuff in it. Easily re-work material into specs and docs. Share material with co-workers and create cases when it comes time to actually do something. And full-text search lets you find it.
My company hosts an instance of mediawiki internally, so I use that.
I find that I take a few sorts of notes:
Notebooks (pen and paper), One Note (when using tablet) and Sharepoint for more formal doc management.
Honestly I keep notes on projects, solutions and other notes in a more traditional fashion. I use a moleskine notebook, personally. I originally used a piece of personal wiki software called "Notebook". It works like just about any other wiki but it lacks image support and table support. However I found it was a hassle to add information. I'd spend way too much time formatting the information and get sidetracked from my main task. With a traditional notebook, I spent far less time formatting, and more time jotting down what I needed and resuming my work.
The main website seems to be down so I'll simply post the Wikipedia article about the software. http://en.wikipedia.org/wiki/Notebook_(software) I do highly recommend it if you do want a wiki approach with a small footprint.
I just use slickrun's jot to quickly store/read things with a quick shortcut. Probably not the best technique, but it's quicker than ^"100s if post-its", IMHO.
I use InkSeine [1] on my Tablet PC. It is incredible.
[1] http://research.microsoft.com/InkSeine/index.htmlI use wikipad which is basically a note taking tool that uses Wiki-like syntax
See: http://groups.google.com/group/wikidpad/web/home
todo.txt in the autostart-folder :)
To be able to track changes and remember how i thought 6 months ago i use a simple blog, together with my own sketching-homepage, Cosketch [1], to get some kind of image-support in the blog.
[1] http://cosketch.comFor notes and misc. code snippets:
CintaNotes [1]
I keep this portable app in a Live Sync (previously called FolderShare) folder, so it's always synced across home and work computers.
To-do lists and similar:
Also portable, I keep the .tdl files in that same Live Sync folder
[1] http://cintanotes.comOmnifocus! Best task/list/item tracker i have used so far.
i used doc.google.com ,it can have excel, doc files, and export them to be a office file. or you can just start a collaborative site, and post anything you like.
Postit Notes! Stickem to the monitor. Also NotePad and WordPad.
Jedit + Explicit Folding + Outline Plug-in
I got a bunch of plain text files on a directory searchable using Jedit's hypersearch feature. The outline parser plug-in offers a dockable tree view of the explicit or indent folding structured text. Other useful plug-ins are SuperAbrevs (folding header templates), CandyFolds (folding visualization) and more. Easy data syncronization with rsync (its just plain text files). www.jedit.org
http://plugins.jedit.org/plugins/?Outline
http://farm4.static.flickr.com/3403/3659402148_1bfbf18f99_o.png
I have 2 large physical notebooks.
One has "Reference" written on the front, and one has "Work" written on the front.
The Reference notebook I use for general study notes, or things I come across which I think it would be useful to remember in future (e.g. notes on JQuery or OO principles). I write a page number at the top of every page, and maintain a "Contents" list on the first page. If something comes into my head which I think it would be useful to learn about, I add it to a list on the back page, and then when I have some free time I pick an item from this list to read up and take notes on.
The Work notebook I use for more project-specific notes (e.g. brainstorming on a project design, or drawing up a task list). Again I number every page and maintain a contents list on the front page, although this contents list only includes references to important pages.
When I reach the end of a Reference / Work book, I start another one!
The best thing about this method is its simplicity, and its easier to mind-map / draw diagrams in a notebook than through your computer.
I find very convenient Notational Velocity for OS X. It a modeless, full text search engine for note taking. http://notational.net/
ToDoList [1], main file kept on multiple machines and synchronised using Dropbox [2]
[1] http://www.abstractspoon.com/I always have NotePad running and save an "ideas" file each day.
I wrote my own todo application, because I did not like the ones I saw on the internet. It's here: Niko's To do [1].
[1] http://todo.seasidehosting.stI love having a notebook to scribble stuff, but that's mostly for layouts/designs/etc. For code snippets I use gist [1]. They can be marked private, given titles/etc and are git repositories (!) so you can keep editing them and keep history with no effort.
[1] http://gist.github.comI have a glass desktop and I use wet-erase markers for all of my transient notes. I used to use dry-erase but they would rub off as things would slide across the desk. Not so with wet-erase.
If I really really need to keep the notes for posterity, I take a picture with my digital camera. I've only had to do this a couple times.
My memory is horrible. When I took my current job, I created an Access database to handle my notes. I've got links to documents and websites. Names of different servers. Copies of expense reports. The Bio I sent the HR Dept. There are code sample and SQL scripts.
It's searchable. Date stamped. I can write any report I want. It is nothing fancy. The key is, I work with Access a lot, so it was not that hard to build, manage and use.
If you want something that is accessible from the web, your phone, computer etc. I think 'Evernote' is one of the best products out there. It is everything I would want in a note app. I'm still learning more. The cell phone camera upload is perfect.
I use google sites to keep my notes and knowledge base.
This gives me web access, good integration with other google office tools, search, etc...
My head usualy works well, but for the times it does not, I use a small note pad, right in front of the monitor.
Tomboy combined with Gnome-Do. Part of Gnome on Ubuntu. It's not developer specific, but it's unreasonably useful, and integrates with Do brilliantly. I press Ctrl-Space, type some stuff, press tab, type note and then go to create or search, and it searches all my notes for that text, and brings up a list of results, or it creates a new one with that title. Works perfectly, and keeps everything indexed, which is a real problem I've always had with making paper notes. Where's the bit with my plans for this bit?
Also, you can combine this with dropbox with a bit of neat symlinking, and have all your notes kept in sync (with revision control) on all your computers, and backed up to the internets. Beautiful.
Microsoft Onenote [1] - excellent tool
It works on my PC and on my Windows Mobile phone.
[1] http://office.microsoft.com/en-gb/onenote/default.aspxI used to use Basket Note Pads [1] in KDE 3.5.x. However, after migrating to KDE 4.x, I am waiting for a KDE 4 version of it.
Currently, I rely on `physical' notebooks.
[1] http://basket.kde.org/I put everything in Evernote. Windows, Mac, iPhone & wev clients and it's all kept in sync. I even put PDF docs and PDF books in my Evernote notebooks, then I can access them anywhere.
I like it simple:
PSPad or UltraEdit helps in keeping your notes properly formatted (indentation). It's easy to move code snippets around.
With text files you don't have to deal with formatting, but you can use TiddlyWiki if formatting matters.
During meetings or discussions I use real notebooks. If I am bringing my laptop, I use my text files. If using notebooks, I record important information into my text files, too.
Firefox bookmarks synchronized online. I organize my Internet references using folders and/or tags. I make sure the bookmark title is very descriptive, so that you can take advantage of Address Bar search when accessing them again.
I just forward everything to Gmail OR email it to myself at Gmail, and label it well.
I use Google Side Bar Gadget it's not very advanced but easy and fast
I use UltraRecall [1] when I want to capture info from the blogs I read.
[1] http://www.kinook.com/UltraRecall/I quite like Remember The Milk [1]. I can have a tab for each project, an entry for each task and each task allows me to write notes.
Never really got into writing notes for long term - maybe I should start a blog!
[1] http://www.rememberthemilk.com/For getting my thoughts in order I use an outliner tool. On windows I currently use ecco pro [1]. It's very old software (most recent build is over a decade old), but it works really well for putting down structured text. There are some word macro's to easily export to word.
[1] http://en.wikipedia.org/wiki/Ecco_ProI use VoodooPad Pro on OS X, even when writing Windows code in a VM.
I've been a big fan of Evernote lately.
I personally use two methods, one being what JBB stated (paper notebook). The second is www.ubernote.com [1], which I have been working as a part of for the last two years. Ubernote has been coming along very quickly recently and gives me just about everything I need. Users of Microsoft OneNote or EverNote will conceptually understand the application, just about any user of an email client will understand the interface. I know I am an Ubernote evangelical, but working there, I have become pretty passionate about it. Using Ubernote, I can write notes in an editor similar to this one, share them with other people (normally coworkers or my girlfriend), add comments, clip web pages using the Firefox toolbar or bookmarklet, tag, search, etc. I use it to clip a lot of reference material and then look it back up later. Saves me from having to do a Google search for every nugget of information that took 20 minutes to find and I need to remember again.
Even though I write note taking software, I still can't fully give up my paper notebooks, for the common instances of:
Shane
www.ubernote.com [2]
[1] http://www.ubernote.comI have used several things that were not quite satisfactory, most recently Notepad++. I like how it opens lots of files left open. OneNote is captivating, and I have tried it, but it did not quite work.
I am looking forward to the released version of Win7 with its nice screen clip grabber and using that in conjunction with OneNote--that might just be the right thing for me.
Notes in MS Outlook 2007.
I'll throw my two cents in: I use Notepad++ and text files. Anything heavier (word, wordpad, onenote, etc.) is really too much for me. I like a clean and unobstructed window into the notes i'm writing without 200 features begging "use me! use me!". Only downside is that they (usually) get scattered all over my system and sometimes get deleted. Gotta fix that...
On Mac OS X, I've been extremely happy with Mori [1] for years. Unix commands, install guides, general notes, robust built-in search. And you can feel safe trying it out, exports your data and.. never actually forces you to register. :)
Mori is a digital notebook that makes it easy to record and organize your thoughts. Unlike the alternatives, Mori doesn’t box you into one way of thinking. Imagine a notepad that grows and grows. No matter how big it gets, you can search it in an instant, as if it’s all written on the back of your hand. Notebook, project manager, research assistant, and more. In other words, Mori lets you decide how you want to keep your notes, references, tasks, clippings, and more.
Lately I've started exploring Scrivener [2], "The biggest software advance for writers since the word processor." I've found it more motivating to maintain good notes as the tool itself is designed prepares your work for publication.
[1] http://apokalypsesoftware.com/products/moriScrivener is a word processor and project management tool created specifically for writers of long texts such as novels and research papers. It won't try to tell you how to write - it just makes all the tools you have scattered around your desk available in one application.
Never be afraid to make mistakes. Scrivener's "snapshot" feature makes it easy to return to an earlier version of your text. Before starting a major edit on a document, just take a snapshot, which stores the old version safely away. You can then call up old snapshots for reference, or restore an older version of the text if you decide you prefer it to the most recent revision.
I keep txt files for each day locally like '08-19-09.txt'.
I find it easier to just grep through them to find what I am looking for. Of course, projects etc. get their own files.
Yup.Google notebook is the one you should use.If you want to store as documents use google docs.The recent acrobat [1] from adobe looks quite sleek & glossy. However I haven;t explored it much.You can also use firefox addons such as evernote web clipper
[1] http://www.acrobat.comA sheet of paper....
Since there a lots of them I use college blocks. And I have a big stack of them in office.
I keep notes by project and projects by web site using a text editor. The text editor I use, kedit, allows me to link from these text documents to the source directly and it supports it's own set of snippets.
For snippets, I have a search page that I maintain on the local server. It helps both me and the other programmers.
I use delicious to bookmark important/interesting stuff and use "to do" lists on google desktop to make that things get done.
I use Nocs [1], which I actually wrote myself. It's a simple, Notepad-like app that uses Google Docs for storage. I use it for all kinds of TODOs and snippets. I like it because I can leave it open both at work and at home and my files are always in sync. All the files are stored as actual Google Docs documents, which means I can search and edit them both within the browser and in Nocs.
Very similar to Evernote though.
[1] http://nocs.googlecode.com/When all else fails, I use the 'journal' feature of Outlook
It's easy to add to and easy to find stuff using the timeline
I maintain a notebook to keep interesting code snippets,examples topic.....
Simply using pen and paper.
I use the Zoho Notebook www.zohonotebook.com
What I do is take notes on a whiteboard/paper/whatever everyday.
At the end of the day I use jotnot [1] to take an enhanced photo then save them to evernote [2].
Not perfect OCR searching with the paper(I have awful handwriting) but the whiteboards are pretty successful and I assume it will improve as evernote gets better.
[1] http://www.jotnot.com/iphone/Solution: (USB Flash Drive and Notepad++)
Notepad++ is a text editor that highlights many of the popular languages. It's also portable. I can run it off my USB flash drive which is on my key chain so it's with me all the time. I can organize my files in whatever way I need to and I have access to it even when I'm not connected to the internet.
It's not as glamorous as some of these other solutions, but it's a free solution that works for me. The only thing con is the fact that you've got to have a USB port for this solution, so that means no iPod Touch access. But how many times am I actually going to be coding on my iPod Touch? And if I happen to think of something I need to add to my notes and I don't have a computer or laptop around I can email it to myself and save it on my flash drive later.
I can't believe nobody uses Lotus Notes for this...
I'm stunned I tell you. Stunned. ;)
The combination of OneNote with a tablet PC is awesome! I was a bit of a skeptic at first. I used the trial version and then forgot about it. A year later I had an unruly collection of files, project related emails, notebooks and scraps of paper all scattered throughout my life. I went back to OneNote and all my problems went away. Some highlights:
It is SO worth the price. It allows you to get started on a project and avoid all that time spent deciding how to organize things.
I also lean towards TiddyWiki. Once you learn the markup, easy to keep your stuff interconnected.
But if you have the money and not anti-MS, then OneNote is the best, especially if you are using a Tablet or Wacom pad.
I'm using Mind Manager (mindjet.com) and a blank Moleskine. Moleskine for scribbling notes during a meeting and to track my tasks (no tool could give me the satisfying sensation of striking through a task with my pen ;) ) Mind Manager whenever I have to structure a lot of information and to keep track of the itsy bitsy details of my projects.
I use BasKet Note Pads [1] because it's very flexible. I collect a lot of notes in this application; not only code snippets but also ideas for possible birthday presents, quotations, ...
Unfortunately it's only available for KDE.
[1] http://basket.kde.org/index.phpI use a combination of Things [1] and Yojimbo [2]. Of course I sync them and also use .text files when I need a quicknote.
[1] http://www.culturedcode.com/things/I use OneNote 2007. I make sure that my files are backed up to a server and so available from anywhere that I need them. The ease of manipulating text within OneNote is great, and the best thing is that you aren't limited to linear text. You can add new paragraphs off to the side, or on top of another.
One of the tools I use is TodoList [1], both for actual to-do lists but also for code snippets, links and pretty much anything that can be kept in a form of a list.
Other tool is the already mentioned TiddlyWiki [2], although I'm only starting to use this. It's a very handy tool with built in search and tagging. Interesting variant of this tool is MPTW [3]. It has a bit different approach and provides an easy way to organize information.
For scribbling my thoughts on a current project however nothing beats paper and pencil.
[1] http://www.codeproject.com/KB/applications/todolist2.aspxPost-Its for reminders.
Notebooks for meeting notes.
Text files (Notepad/UltraEdit/Notepad++) for tasks and time tracking.
What a great question...
I use paper notebooks for most of my notes, which I try to keep sorted in binders or folders for future reference. Notes eventually evolve into project documentation, which usually fits in some kind of wiki-form. Classic Word-like documents are a no-no in my opinion.
Any structured e-paper-based approach failed for me. It's overly complicated and it's not portable after all. I do use, however, desktop post-it notes which are excellent for keeping code snippets, to-dos and such.
Another emacs fan here. I generally start most notes out in OrgMode. It provides a nice outline style that still allows for free form notes as well. It's also nice because as I identify things that need to be done I can mark them as TODO, schedule them and have them show up in an agenda type view of things to do. Additionally you can set a deadline on them as well which will then make the item show up earlier in the agenda with a count down of when it should be done. I am also a fan of EmacsMuse which among many other things is a personal wiki. There is also some tie in between the two packages I believe that will allow you to publish both org and muse files to html/xml/rss/pdf... Both also can make use of remember mode.
1) A good text editor with a hierarchical outliner mode (e.g. Emacs + org-mode, or vimoutliner). why? Because programming involves drilling down into increasingly precise statements of the original task.
2) Your revision control system of choice and local checkout of the source code why? Because the most precise definition of the task usually is code; leaves fall off the Todo Tree and into the tree of source code.
Text files, a GNU userland and revision control go together like coffee, milk and sugar, and this arrangement gives you the flexibility and freedom to adopt new tools as you choose.
A combination of things: Google Notebook (with an add-on for Firefox), Google Reader with a "Note in Reader" button for Firefox, Screwturn Wiki, Notepad and a physical notepad of course :)
A legal pad and a whiteboard.
My personal notes tend to go down on paper... whatever paper is lying around at the time.
We use Confluence (wiki) where I work: http://www.atlassian.com/software/confluence/
You have to pay for this one but there are free ones out there as others have mentioned.
we used instiki int he past: http://www.instiki.org/show/HomePage
it was pretty nice and free.
On wikis, I like Daisy [1]. It's like a wiki on steroids, and I find it great for documentation, brainstorming and keeping notes. It's also easy to share the information with other devs too.
[1] http://cocoondev.org/daisy/Like previous posters, I also use TiddlyWiki for my notetaking needs. I will expound on why, from a programmer point of view.
First, note that "tiddler" is a note object in TiddlyWiki parlance.
Each medium to large project gets a TiddlyWiki file all to its own. The default tiddlers are an overall project overview, and a "master" class that links to other objects. Each object has notes about that specific class or object, things that work or don't work, etc. Most of this ends up being in classes, but as we all know, there's additional notes we take while writing code, including external libraries and supporting programs.
I used tiddlywiki. It was easy to use and generally fits the bill for my needs. The tagging works well.
I suppose, however, that having an indexed drive would work just as well w/out having the need to use a special tool.
I use Wikis as much as possible. I find that it helps for a number of reasons:
I find a lot of people waste too much time on formatting in a Wiki environment and not enough time on just taking the notes. For this reason, I've found Wikit (http://www.equi4.com/starkit/wikit.html) to be the best Wiki software. It's easy to setup and run (has a built in webserver), and has enough formatting options to keep me satisfied, but not so many that I get overwhelmed.
I use The Journal found at http://www.davidrm.com/thejournal/
It's a great tool that use for keep scratch notes, my daily journal entries in date format. I keep the sources for connecting to my blog, which is nice to have an offline archive. I keep general programming notes and code snippets in a Loose Leaf format organized by language. I keep a Bug/Error Listing for those @#($&@#(*$ they didn't document THAT moments and the appropriate workarounds. There are customizable templates you can create to save time on repetitious entries. For me these are the built in headers and bullets for my revision notes, daily time logs and workout notes.
Generally I keep my other writing projects, including my novel in here too. The program is very flexible and just plain works well for how I function. I also love how I can install it on my USB Jump Drive, just like my PIM/Business mail program and keep it with me regardless of what computers/machines I am using.
To those whom have mentioned mindmaps, I use those for brainstorming primarily, but that for me needs to be a paper/whiteboard exercise. There is something about the process of creating mindmaps for me that needs to remain somewhat organic. Generally after I complete a map I will either post it on my cork board or scan it/draw it to include in whatever the map was made for. There are a few good programs out there for creating them, particularly MindJets MindManager [1], but I only did the trial on it and can't say for long term how useful it is.
[1] http://www.mindjet.com/I keep all notes together with the source management, using trac [1]
By recording links to tickets and changeset together, it makes an easy way to keep discussions of individual issues together, track the code that went along with it, and the wiki is useful for documentation.
[1] http://trac.edgewall.org/Microsoft OneNote is very handy, particular as it can be used disconnected, which is when a lot of thoughts and ideas come to me (airplanes etc.). It's also quite good for sharing notes and doing real time collaboration on ideas and notes, which a must have feature for me that a lot of web-based systems don't have.
I have a little 4x6" notebook in which I write down notes and ideas. It's the cheapest notebook Staples sells that I can fit in my pocket, not one of those fancy moleskine ones. That way, I'm free to fill it up with crap and replace it ASAP.
When I solve a problem for a specific project and writing the code isn't good enough to document it, I just write comments. If comments aren't appropriate, most of my repos end up with a misc
directory that contains random notes, OmniOutliner checklists, example scripts, and aborted attempts at great ideas.
If my idea is about something more general, but isn't general enough to turn into a released library (which I do at the drop of a hat), I put it in my Rubric [1] and that's that.
I like wikis, but they're generally just a bit too much work for me to use for keeping notes. That has to be really, really easy to do. Finally, sometimes I use Jott [2] to dictate things to myself via Hiveminder [3] so I can put them into the right file later, when I'm out walking.
[1] http://rjbs.manxome.org/rubric/For the Mac Centric ::: I use Yojimbo from Bare Bones Software to store and loosely categorize PDF's (most academic papers Safari Web Page Archives from various developer sites. For a while I tried structuring them all as giant outlines in Notebook from Circus Ponies Software, but Yojimbo's fast and elegant search function obviated the need to spend so much time trying to pre-organize things.
For working code, I just use BBEdit to manage temporary clippings of live code fragments.
But nothing can match Tinderbox with its powerful background Agents from Eastgate Systems (Full Disclosure: I am a friend of its developer) for building and maintaining complex hypertext documents and applying a generative programming approach to building complex mix-development-language web projects.
On the road, I use a solid state voice recorder or OCR Pen to capture notes which I sometimes transfer to Post Its that I leave in plain sight to so they can jog my memory at critical points in time.
Depending on the size of the project, I'll use a notepad or sticky pad. If I'm saving code, I'll usually create a text file in the projects folder and then make a reference to the file in my written notes.
I also use a simple application called Taskpaper [1] which allows you to manage task lists and outlines by writing lists like you normally would on paper. I'll usually create a new Taskpaper file for every project and keep the file on my desktop until the project is complete.
When working with a team, I use Writeboards [2] and basic messages in Basecamp [3] - great for sharing and collaborating with others.
[1] http://hogbaysoftware.com/products/taskpaperI blog the notes.
Depending on where I am, any of OneNote, EverNote or Gmail.
*Note applications are short-term memory. Gmail is long-term memory.
I like to use a blog for revelations that are generally useful for other projects as well, stuff like how to use a particular tool really effectively to solve some recurring problem.
For things that have to get done ASAP I use sticky notes on my desk. One note per one item and chuck 'em in the bin when I'm done.
If an implementation solution needs to be defended, the justification goes in the code as comments. This is also true of minor refactoring TODOs, because it's so easy to just grep for "TODO". Larger tasks go in issue trackers, which is also true of my private projects: I tend to use ditz [1].
The rest goes in wikis, preferably.
[1] http://ditz.rubyforge.orgWell I'm using XEmacs nearly all day long, so it's "natural" to use it for everything. The mode to keep on snippets, notices etc is named planner. Which is a wiki like stuff. The stuff is simply kept in text files and that's the unbeatable....
Regards Friedrich
Depending on what i'm doing i use:
It would seem that a combination of a Tiddlywiki [1] file and a DropBox [2] would be a good solution. It would have the network usefulness of Google Notes with the plus of being editable/accessible when disconnected from the local Dropbox.
[1] http://www.tiddlywiki.com/Mac specific answer: I use VoodooPad [1] extensively for keeping snippets, notes, and so forth. Aside from being an excellent hypertext editor, its single biggest benefit to me is the ability to run scripts from within one of the pages and get the results immediately.
The resulting pads become an active tool as well as information repository that are just invaluable.
[1] http://flyingmeat.com/voodoopad/I have used TadaLists with relative success - good for sharing with others for cross-person lists. I typically keep only certain types of lists (i.e. application ideas, technical checklists for an eclipse install, remaining items for small apps, etc.). I have found some bugs with the re-ordering, but other than that, it's really simple and quick. Certainly there are better tools out there targeted at developers, but this works for me (for now). One major benefit is that it follows me - I can't misplace it or forget it at home, and can access anywhere I have Internet, which whenever I need it, is practically always there.
Previously, I've used notebooks with limited success (lose them), and the whiteboard on my desk (out of date too quickly).
I use Daisy WIKI / CMS (http://cocoondev.org/daisy/index.html) to keep my developer notes. The reasons are rather simple:
That is why I use Daisy, in a nutshell. As you can tell, I rather like it! :)
todo lists: my '@Work' context for Remember the milk [1]
most things else: I keep things where I need them. Comments inside my code. postits on my desk, and if I feel something's worth sharing I might post it to the internal wiki my company hosts.
[1] http://www.rememberthemilk.comI use Emacs, along with planner mode and remember mode. Planner mode is a TODO list software, with PIM features, and it sits on top of Muse-mode, which is basically wiki software for emacs.
At the core of planner is the daily page. IT is a new wiki page that is created every day. I keep my daily journal in these daily pages. it also stores daily appointments, and tasks.
If I am starting up a new project, I will create a new wiki page for it. At this point, I can start adding tasks right away with planner mode, and linking them to daily pages (for their due dates). Additionally, you can create wikilinks to other projects (for super-projects or sub-projects.) or even links to files and file positions in the filesystem.
So notes regarding a particular project would go into that projects page. Checklists would become todo items. Final solutions would also belong in there. Code snippets exist as links to that particular file, plus some notes to go along with it.
Everything is in one nice and central place in my IDE. It's bliss for me.
After trying a bunch of things, I've taken to just carrying a small notebook with me at all times and note down everything I think of and when I really need to take code snippets, some of them go to google notebook in the folders or into tomboy... if I'm using windows and it's for some sort of paper, OneNote all the way!
Some time ago, I adopded a simple but very efficient workflow that handles/comprehend also note-taking:
In this way, every note I take is related to a specific development workflow and is avaiable for further analisys. Since the BugTracker.NET [8] web site is exposed to the internet, I can search/consult/interact with this knowledge just navigating into it
[1] http://en.wikipedia.org/wiki/Extreme_ProgrammingTo save (and share) your links use Diigo (http://www.diigo.com/). You can highlite text, pictures,...
Anything that's handy and is available when I want to scribble -
be it my notepad, notebook, a file on PC, sticky notes, even wall :) .... whatever that helps jot down your thoughts without breaking it due to non availability of any thing in particular..
whats the point looking for a particular medium, which by the time you get, entire thought process is gone.
The only thing to care about, what ever you used, should be available for back reference !
I make notes, lists, todos in text format, and either save these in a "doc" folder in the project folder, or right in the project folder itself if there are only one or two files. If I am using version control these get checked in with the project.
I typically use whatever basic text editor/reader comes with the OS that I am using at a particular moment: Mac OS TeachText [1]/SimpleText, OS X TextEdit [2], Microsoft WordPad [3] and Notepad [4], the cat [5] command in BSD/Linux, Nedit [6], etc...
[1] http://en.wikipedia.org/wiki/TeachTextI use my own product which I built with this in mind: TheKBase [1]. It's multiple hierarchical, not unlike your brain.
It reads and writes pure XML and is very lightweight (but needs .Net 2.0 or better) and user-supported (i.e., free). I cannot imagine why people would use physical notebooks or notepad.exe when there are options like this around.
[1] http://www.thekbase.comThe best "sticky-notes" app I have ever used (very lightweight and small notes with no window widgets wasting screen real-estate): AtNotes [1]. Unfortunately, this application has been discontinued but you can still download it and use it. When I get my first MacBook, I will likely make use of the Desktop Widget feature for this same purpose, but on Windows: AtNotes rocks.
[1] http://atnotes.free.fr/Over the years I have tried so many tools myself, I don't even know remember what I tried. I know that Google Notebook was among them, wikis (serveral) as well, Basecamp [1], Rememberthemilk [2], etc..
One important thing that I learned in the process was, that whatever tool I use, failure always came when I started slacking off. For example, I did not stick to my plan [using X] and that is what created F'ups down the road. It didn't really matter what I used, be it a wiki, or a moleskine or something else.
I am currently using the todo-list feature on my e71. And I have for the past year or so always used my phones capabilities to keep track of my tasks. I enter pretty much everything in there and set a due date etc.. This has helped me a lot. I syncronize my phone with an online calendar which I also update with whatever I have to do. This is as far as personal organization.
For keeping records on stuff I build and solutions to common problems, I currently employ my own PBWiki [3] account.
What I generally like about the wiki approach is that the structure is very flexible. I can enter information, and re-organize it later on. It also allows me to restructure information when I think I need to. I usually organize my entered data weekly.
The only downside to a wiki is that you need Internet, and that you need to be dedicated about entering information later when there is no Internet currently. It's something I constantly struggle with. ;) The phone and wifi really help, but in the end it's up to me.
[1] http://basecamphq.com/In my head and in the code with comments...
These days I use plain text files (I'll leave the vi vs. emacs debates for others). I have a dropbox account so the files get synched to each of my machines automagicly. Dropbox does revision tracking so I have at least a poor man version control on them. I am doing the same for todo lists as well.
I use a pen and paper, but the other day I found what I want for Christmas [1].
[1] http://www.livescribe.com/i made a ratty little program i call InfoCache. it's written in delphi and uses the MS Access engine. it also uses the (somewhat frail) access replication. it presently has about 8000 entries in it. pretty cool. it's searchable & can contain UU Encoded binary files as well.
i should put the program itself on sourceforge but frankly it's not hard to write one yourself.
For a text file that I need to open on multiple computers, I use Drop Box [1]. It magically syncs the file so I can open it on multiple computers. The get an auto reloading editor like MS Dev Studio or Ultra-edit. Now the file is always up to date on all your computers!
[1] http://getdropbox.comWe use Mindtouch's Deki Wiki [1] at work. They have a ready for use VM image that can be running in your desktop with a VMWare player or pluggeg into a VM server. Minimal setup required this way. The VM runs on debian, but you can download the source-code (GPL v2) to setup yourself. Requires Mono/.NET
All my work-related notes are placed in the wiki. Most of them are made public so others can benefit. Since we use a pretty old language, not used by many other companies, this helps. Plus all the (very old) paper guides for the language were uploaded to the wiki.
[1] http://www.mindtouch.comI can't recommend FreeMind highly enough.
I use Yojimbo [1]. It works well for keeping not just text but images, PDF documents, web sites (links and full archives), etc.
I have collections for common things that are not tied to any single project (syntax cheat sheets, interface guidelines, etc.). I create a separate collection for each specific project where I put things like web research, code snippets, requirements docs, and engineering notes. Yojimbo allows the same item to be in more than one collection so it's easy to aggregate project-specific and general-but-related information in one place.
Yojimbo syncs all its information (via MobileMe) to all of my machines so I have the data wherever I am. But unlike web-only solutions the information is actually stored locally on each machine. That means I can work offline (I usually commute by train) and everything syncs up the next time I connect.
[1] http://www.barebones.com/products/yojimbo/I use Org-mode in GNU Emacs. It's pure text: you can easily backup your notes, or handle them via a versioning system. You can also export them to various formats, with code highlighting. Very nice.
I use MediaWiki for keeping large notes (i.e., diagrams, specs). For short-lived snippets, I use this alias so that I can just type "wiki" at the command line:
alias wiki="pushd .; cd /home/simoncpu/notes; vim wiki; popd"
For general observations and "what have I learned today" type things, I second the notion of using a blog. If nothing else, it'll be something interesting to go back to.
For code snippets, I'm quite enamored of basKet on linux.
I use a combination of physical notebooks, Emacs modes and LaTeX (just so that I do not lose my typesetting skills - they're invaluable.)
Paper and pen!
During the thinking process a sheet of paper is great for me - I can sketck, draw, mark, put number while debugging, etc. This is for temporary memos, however. For more general and long-term information I use docs and/or spreadsheets, depending on the information itself.
For most important, mid-duration memos I like to use source files and simple text files - todos, marks for needing optimization / further reviewing - all fit very well among the code, since this keeps them well up to date.
Also sometimes when I am really into something and I have to interrupt - I put a small summary, in the current source file, of what the current state is and what are immediate steps that must be taken to continue - this helps me to restart very fast when back.
Tinderbox for everything. Links, outlines, maps, agents, search, export, you name it. Can be as simple or complex as you want. I live there.
I've been using One Note. Its ok. Have a different page for every month and throughout the day I document what i've worked on.
I use Trac [1] tickets for keeping track of things to do, and Trac's wiki for formal notes and documentation. During a planning/design/brainstorming phase, I'll use pen-and-paper, and if I'm trying to work out a complex problem that I can't keep all in my head at once, I turn to the large whiteboard hung up next to my desk. Each is perfect for certain purposes, and I couldn't do without any of them. Especially Trac. Nothing would ever get done around here without Trac!
I also frequently rely on Gmail and it's search capabilities; if I get important information via email, I never need to transfer it anywhere else to keep track of it, I just leave it in my mailbox to be searched for when it's needed.
[1] http://trac.edgewall.org/I think a blog is a good place to put you ideas. If google indexes your site, then you can search for previous answers that you used.
A notebook, and plain-text documents edited with VIm, generally. I do use google for links and notes in the style of "remember this!"
I use a notebook. I am a visual guy so I like to draw diagrams of workflows, mockups, schemas and so on, so computer based tools are too clumsy compared to a pen and paper and sitting back on the sofa. A tablet PC is not an adequate replacement either. You can't beat the feel of paper, the high DPI, the instance feedback, etc.
I also have a personal SVN repository of project code and snippets.
I would also set up a personal Wiki for when I am having to write or document things, often snippet-based best practice notes.
I use a ToDo list manager application for listing tasks I need to do. The one in Outlook is not suitable in any manner, you need one that can handle task hierarchies - an outliner basically. OmniOutliner on the Mac is great, and OmniGraffle is great for drawing up those notebook scribbles later on.
There are applications that can be used for authors when writing books, and I think there is room for a tool that does the same for programmers.
I use a bound A4 Artists Diary (unruled, high GSM paper) which I write mind maps, scribbles and all sorts of unstructured goodness on.
I rarely seem to need to review these notes ... it just helps to write them down.
We use NoteScraps [1] at my office. It was developed internally to solve this problem. It was designed to be simple and look great.
[1] http://www.notescraps.com/I'm a big fan of a notebook or even just a pad of paper... but for a while now I have been doing a lot of note taking in OneNote. It's all about being able to search quickly.
Others have mentioned sharing on a network which can also prove helpful in some applications. Also I find it's simple ability to capture screen prints, or even print outs from a web browser or other application to be really helpful.
I like to use one of those bright yellow note pads. I have always preferred to write my notes/ideas out by hand rather than use a word processing or note taking software. It feels like I am able to explore ideas easier on a note pad because I can make quick sketches of ideas, connect two separate thoughts using arrows, or just doodle.
I think the notepad gives me the ability to have a uninterrupted stream of thought. If I am typing I easily get distracted by an IM message, go to a website, or what ever. I seem to be more distracted when I try to write notes or ideas using the computer.
Maybe I am old fashioned. I don't know.
I used to keep notebooks and always lose or misplace. Now-a-days, I just post solutions on my website.
I have currently begun using sharepoint. More because VS Team Foundation automatically creates a sharepoint site for each project created. This, so far has been an excellent place to put documents about the project (Design docs, 3rd party utility docs etc) as well as forum like dicussion boards etc.
Now, that being said, that is project / team based. We also have a division level sharepoint site where we do much the same.
Personally (Outside of the company) I have tried onenote but I will certainly checkout some of the suggestions made here.
If you have a MSDN License - use OneNote for dragging & Dropping URL links, email, documents, etc - its ability to rearrange existing notes is awesom
I also agree with the suggestions of TiddlyWiki and ScrewTurn Wiki - I love to use wikis for personal and group collaborations and brainstorming
I use the Firefox Extension Quicknote [1] for small notes.
[1] https://addons.mozilla.org/en-US/firefox/addon/46I use the fitnesse [1] wiki to keep notes on projects at home. One feature it has that I've not seen in other wikis is that it is hierarchical, which means that you can have short names for pages that don't clash with pages with the same name in different branches.
[1] http://www.fitnesse.org/I like and use OneNote quite a bit, but have recently fallen off the wagon and returned to paper and pencil. (I just like them!)
I miss InfoDepot (an old Classic Mac application) for this sort of thing. In fact, I'd still use it (I have several copies; former employee of the company which made it -- before my programming days, mind you) except that printing from an emulator is nigh-impossible. If you have a recent Mac available, OmniOutliner [1] is very similar. (I last used version 2, which is still quite sufficient for my needs. Great app.) Both of these products work on the concept of organizing your data as outlines with multiple columns -- think outline meets Excel, and you get the drift pretty quickly.
Would that there was a Windows app similar to OmniOutliner/InfoDepot -- that's the ideal note-taking/organization app for me. I've often toyed with the idea of making one ...
[1] http://www.omnigroup.com/applications/omnioutliner/Evernote for the win - being able to synch up across multiple computers and on multiple operating systems AND on my iphone makes it the best app for me. Just take a few minutes to learn the shortcut keys and you'll be good to go.
One great tool for jotting down notes is Tomboy Notes. It comes preinstalled with Suse Linux. It is easy to use and it support cross linking. Having said that pencil and paper is still more natural than any computer based solution.
Check Off on the Mac is cool, hides away nicely and pops out when you need it. For any important calendar events / deadlines I use iCal.
may be it just fetish, but I use my molesckine :)
Personally, I've found a Wiki in general to be the best. Especially if I can get to if from anywhere. Specifically, I've grown quite fond of DekiWiki [1]. It's open source, written strangely in PHP and C#, and runs under Mono on just about any OS available (Linux, Windoze, Mac OS X or otherwise).
Piko
[1] http://www.MindTouch.comAs indicated by the amount of replies here, there are many options. Which you choose depends on your requirements, which might include:
The main advantages that paper have over any digital options are in drawing images, as well as fast text entry -- it is often much easier to reach for a notebook than to find a program on the computer, if only because usually, my desk is a lot bigger than my monitor, and is used ony to store paper things (and coffee mugs, off course).
In the digital realm, simple text files with a versioning tool (subversion or darcs) seem to satisfy all the requirements very well, so that is what I use whenever I just want to jot down text (I type a lot faster than I can write). Fast text entry is my most important issue though -- I type a lot more notes than I ever re-read. An absolute requirement for me is therefore that I can just summon an empty note with a single keystroke from any context.
I also use MediaWiki, personally as well as in team projects.
I use Google Notepad
I have started using CardMeeting [1] to keep track of my different tasks. Great if you want to share notes within a team as well.
[1] http://www.cardmeeting.comNotes on the Dashboard (MacOSX)
I make notes on a white board in my office, on my own and when other team members are part of the discussion.
I then take a digital photograph with my mobile phone.
These images are then sorted and listed in my SDF (Software Development File).
I also use a physical notebook. I find myself more productive (when thinking) if I am not behind a keyboard.
I use a small home-made database, driven by a simple search box.
For long term notes use a wiki. We use Dokuwiki [1].
We also use a bug tracking or change request system like Mantis [2]. Here you can handle requests for change in code. Developers and requesters can vote on and discuss changes and bugs. This way you keep a history of the discussion which is also very useful.
An interesting approach I found some time ago is to establish a local IRC, let everybody discuss their problems, log all conversation and make the log searchable. This way, someone on vacation can spend the first day to read the conversations and get on track with what happened the weeks they were away.
[1] http://www.dokuwiki.org/dokuwikiI tend to use a simple text file organized in folders what convey what the notes are about..for example a GWT folder for google web toolkit notes
emacs modes like org or planner.
I use "the Brain" from http://www.thebrain.com/ since it works a Mac Os, Linux, and Windows.
Personally, I use Notepad++ for long term notes and Notepad for short term cut and paste items. Everything else we keep in our CM system (i.e. design details/notes, requirements, source code). At my previous job, and for freelance work I've used Google Docs & Spreadsheets just so I could share the notes out and access them anywhere.
dotProject is Open Source Project and Task Management Tool who let you record and/or share milestones, trouble tickets, notes, etc.
I highly recommend it.
I've found that using a wiki is a great way of doing things, but if you can get everyone in the same room, there's nothing better than an active tape recorder, a big whiteboard, and a camera for capturing the state of the whiteboard as you work together. Even if you're working solo, the whiteboard and camera can be very useful as a way of tracking how your mind flows while working on a project.
Also useful, of course, is the tree of text files, especially when kept in a source repository (for the always helpful revisioning that occurs), but a wiki is just as good, if not better for this.
Dave Winer's OPML outliner tool is simple and handy.
PMWiki for notes. For todo items and reminder, Tracks http://www.rousette.org.uk/projects/ or Bitnami for easy installation package of it.http://bitnami.org/stack/tracks. Lots of good ideas in this thread.
I use this
I use Evernote [1]. It's the best incarnation of a Memex [2] to date.
[1] http://www.evernote.comI just use a text editor and store all my snippets in a set of folders organised by language. I put the code with a brief description in the file of what it's for and then title the document with what it's an example of and use that title to name the file. Once this is done, you have a question and an answer that can be searched (Google Desktop?) or browsed through the file system to get at an answer of how to do something. I try to apply a bit of a "refactoring" methodology, by only writing something up if I'm using it for the third time. That way, I don't have to scrabble for an answer again and I know the code is likely to be reused again, so it's worth my time to document it.
A highly ranked answer by JBB mentioned note books. I agree with that person, something in my brain clicks in to action when I write something down, which is not happening when I type in to a computer. It some how solidifies the information in my brain. There is one draw back to notebooks. Search, retrieval and sharing of information aren't so easy, which I guess is why stackoverflow.com and other sites are about.
I use emacs org-mode together with remember. Under org-mode I use a GTD file with topics and tasks and a task-topic to gather tasks yet to be distributed over topics (or projects). Remember allows one to quickly add new tasks (they go into the task-topic at the top of the file) and notes (they go into a notes file, but can carry a reference to a topic (project).
The GTD file, the notes file and an archive of completed tasks are all kept under Git version control. At work, at the end of the day I push these files to Github. At home I can pull them out of Github; add stuff, commit the files and push them to Github.
Simple text files organize notes and projects and can be reached from anywhere.
I blog it.
For small notes, I use KNotes (provided with KDE). And for more important notes, I send an email to myself :-)
Filofax, so you can add new pages when you want to expand a section, and avoid that logbook problem of having different projects all mixed up.
Notes? I don't need no steenkn' notes! .. I use eidetic memory...
SnagIt, OneNote and Evernote
I use a combination of OneNote, Blogging and good ol' pencil and paper.
Evernote rocks!
I've used 3m's Post-it Lite [1] to great success for quick notes I don't want to lose. I always end up losing physical post it notes as they drop off the monitor when people walk past my desk (open plan office). They also make copy and paste in to/out of emails much easier ;-)
[1] http://www.download.com/Post-it-Software-Notes-Lite/3000-2351_4-10060027.htmlI use EditPad Lite (like notepad) for quick how-to steps for stuff I know I'll need to do in the future and will forget.
I use physical 1 subject notebooks to record my daily activities.
For changes to code that is in-production I identify my changes with date, name, and summary.
I have various "cheat sheets" like reg ex, css, html quick references printed and pinned to my cube wall. A few Other things I've printed, but mostly I just bookmark my stuff in IE with a well define folder structure. I found if I end up keeping too many notes in a binder you can't find anything anyhow.
Keeper [1] is a note taking application, more intended for use by writers but has many of the features the other note applications mentioned here have. Notes are quick to add (ctrl + n) and there are a variety of note types and brainstorming features. Keyword tagging and search available as well.
[1] http://yourothermind.com/Keeper/keeperdetails.htmI used to use office's note for my work. It's full of tips related to work. I then move everything to Google Note since I can search and use it anywhere. The drawback is that I can't narrow my search in certain notebook. It would be great to try other tools.
I also like to use physical notebook to draw out ideas and use UltraEdit when I need to look at some one time data.
Simple text file on a remote server.
I have a couple of text files... One for my one-liners & PERL inside vim. One for sysadmin help when I did that job, how to "config a scsi tape drive" use the "dd" command to format a floppy, etc. And I have a good sized directory that includes everything from one use shell scripts, to perl stuff cut-n-hacked out of the man page examples saved off as things like PERL_Function_Test.pl, all the way up to some of my medium sized data cruncher and stat generator programs. This way, I can grep stuff out of them as needed. And I'm a little on the lazy side, I have aliases that grep stuff out of my help files. And if anyone asks me a question I don't have time to answer, I tell them to look at my alias "gp" which does "grep *! ~/hints/perl_one_liners.txt"
I use a method very similar to JBB's, only I use small three ring binders instead of notebooks, because this way I can better organize the pages, and use all kinds of paper (blank for sketches, ruled for normal writing, etc.)
I also have an adjustable hole puncher so I can put anything in there (printings, magazine clippings).
Fortunately, the size of the binder pages is half letter size, so I can print anything without having to load special paper into the printer, and I just cut it afterwards.
I tried blogs, wikis, and all sorts of more advanced tools, but none has worked better than this one. Although I'm thinking of improving it by scanning the pages and uploading them to a blog or some other web tool so I can look at them anytime.
Since I run an Apache server anyway for personal use I just use Media Wiki. I make weekly backups of the database so I can reinstall it or transfer it to a different machine if necessary. I like using Wiki because if someone asks for help I can just give them the URL and they can look through my notes with out having to borrow a notebook.
Text files in ~/lib/docs
I use Evernote [1] to keep all my code snippets, blog exerts and links. Evernote has the following features that made it great for my everyday note taking:
I use Mindtouch DekiWiki [1] for all my programming and system management notes. By restoring backups of the (company) Wiki to a Virtual Machine on my MacBook, I can take my development notes anywhere.
[1] http://wiki.mindtouch.com/If it is something I know i am going to reference a lot and want to reference easily, i use a wiki.
If its something quick, notepad in windows or a pen/notebook.
I use Evernote. I love the fact that I can get to my notes whether I on the Internet or not. Also, the text in graphics are searchable. Comes in handy for a photo of a Whiteboard.
I have been using a A4 sheet of white board paper and thin white board pens. Then I will take a picture of an important note.
If they are documentation type notes, I'll use a text file or Word doc in the project folder so it's available to all via source control. Personal notes, usually just a text file or a physical notepad, although I'm looking at Evernote and Onenote after reasing these responses.
I use a mix. I hate using notebooks, because I am prone to losing them and if I do then I am a bit screwed. I hate using a laptop, because I don't want to lug it everywhere especially to someone's cubicle. I have a smartphone, but I type very slow on them. So what do I do? I mainly go with paper and type it up later or just try to remember and email it later.
Little "composition" notebook.
I use a mixture of small spiral notepads, Google Notebook, Evernote, and post-its. I'm gravitating more and more towards Evernote however.
Depends on the project, but I sometimes use Tinderbox [1] for planning notes.
[1] http://www.eastgate.com/Tinderbox/I love Yojimbo on OS X
I'm becoming scared that this post is misleading developers to use physical notebooks. Note that the majority of people prefer digital solutions, they just aren't in consensus for the type of software. There is evidently less competition among notebooks than among software products.
This answer is a community wiki. Please edit it to reflect the best resources revealed by this question.
MS onenote 2007 works like a charm for me.
The OCR from screenshots as well as the capability to have unstructured thoughts presented in a structured way, automatic backups as well as saving and a bootstraper with amazingly small footprint does it for me.
A combinaison of a physical notepad and the windows notepad. I use windows notepad when I want to be able to copy/paste my notes. Other worthy notes are in my physical notepad which I can bring with me everywhere I go.
I've been pretty successful with:
I've tried Evernote, OneNote, etc but I always fear the file format... Wiki on a Stick is a single html file.
@
Karthik Hariharan
[4]:
You are right that the single file things bloat and I did fail to mention that I do not use a single Wiki on a Stick for all things. I've got an intro html page that leads into multiple Wiki on a Stick instance. The intro page is a gasp frameset so that I've always got navigation to at least the top levels of my other sites. I have one wiki for gaming notes, one wiki for development reference, one wiki for recipes, one wiki for my blogging/writing notes, etc. (My work wiki is organized similarly by client and/or project.) I find this a minimal amount of work for staying away from specific file formats and staying with open html/javascript.
This is a great thread and I will certainly be checking out some of these alternatives.
The solution I was using was to find a notetaker that consolidates to just one flat file and then use something like FolderShare or DropBox to sync it with my home, office, and laptop PCs.
The downside to this is that many of these single file things (like TiddlyWiki) don't scale very well over time. After 2 years, TiddlyWiki became so bloated and slow that I gave up the notetaking concept all together.
Now I actually use gasp Outlook tasks.
Microsoft OneNote stored in the Solution and bound to source control.
Also, I find it the easiest to use a physical notebook. I carry it around everywhere and add ideas as I go throughout my day. Then at the end of the day, I usually go on Google Docs and organize them on a document.
ToDo comments in code and then I use the things application for tasks lists.... http://www.culturedcode.com/things/
A plain text file or a dead-tree notebook. I normally take notes in the heat of the moment, so I prefer to keep it simple.
Everytime I tried something fancier (like Tomboy on GNOME), while it was nice at first, failed the purpose for me. It normally breaks my workflow, thus I stick to the simple text files.
For keeping references handy I've been using an Excel file with multiple worksheets, e.g. Web, Db, C#, C++. Each worksheet has the following columns:
Subject | Title | Description | Source Link | Last Updated
I post useful/interesting code on my blog for me and others to reference later. Other than that I use Gmail (which has proven to be very useful) and also traditional Pen & Paper.
I use MS Word file to write notes and upload it my Yahoo,Gmail(backup) Inbox..You can make seperate folders for your notes in your EMail website....The uploading thing is done every 4-6 months to save it from any hard drive failure...its a bit tedious but thats the way i am...simplicity has also been my friend...
Notepad.exe
I use the small vista gadget that provides you post its until I don't need it, in case I need it back, just send a self email and keep it stared or followed up
As a simple solution, i use google desktop + gadget to take notes + calendar. Good thing about google desktop is that you can use a lot of your "google hacks" techniques to filter your search plus specific techniques for your desktop (http://desktop.google.com/features.html#advancedsearch). To fast notes about debugging, values, fields names, i use to take a note with a pen + notebook. Just avoid to write there your passwords :-)
The back side of meeting agenda and minutes that my company insists on printing out. And bulldog clips.
I just use Livejournal [1]. It's not fancy, but supports tags and is always available.
[1] http://www.livejournal.com/I drift between EverNote and Backpack, tending to keep everything for one particular ticket or project in a backpack note and then archiving it to EverNote for sort of project-based stuff. EverNote for one-off things and storing all manner of information. I also flirt with OrgMode frequently.
link text [1]I've been keeping a solution log as suggested in Practices of an Agile Developer [2] for a couple years now. I keep them in Yojimbo (Mac OS X specific) as rich text notes. The program isn't the important part, though. It's getting into the habit of keeping track of the solution to every problem you spend more than a few minutes trying to figure out. It's invaluable to have it as a reference when you've come across it again and can't for the life of you remember what the solution was.
[1] http://www.barebones.com/products/Yojimbo/If I am on the road, nothing beats dead trees. I normally carry around a small, hard covered paper notebook (to survive the rigours of my backpack). It doesnt ever run out of power, wont get checked by airport staff and boot up is immediate. When I get home I transcribe it into a personal wiki. The transcribing process allows me to reflect on what I wrote and add to it or discard information as required.
Physical notebooks. They don't need batteries and always work. Anything I jot down there for ideas (usually done as drawings either architectural or UI) become spikes, real code, or blog posts. I keep as few notes as possible and let the software be my notepad.
There's a One click install of MediaWiki avaiable on my hosting service. I use that when I want to save notes.
TextPad [1]
I date and time stamp my entries into a different text file for each project, and keep a running dialog of my thoughts, progress, etc.
It also makes an excellent editor when I want to look at some code without firing up the IDE, as it has built-in syntax highlighting. If it doesn't have syntax highlighting for the language I'm using, I can download the appropriate Document Class from their website, or create my own.
[1] http://textpad.com/I use the lined yellow legal pads for my mind maps and simple notes, but for more important stuff that needs to be kept forever I use a small C# app that I developed just for this purpose with built in search for speed and efficiency.
I have been programming for nearly 10 years now and I have no magic toolbox of code to show for it.
My rationale is that what I wrote to solve one problem only solves that particular case and probably just barely does so. Think about it. If you're writing code it means that you either A) didn't look for an existing solution in the operating environment you're running under, or B) the need isn't general enough to warrant inclusion in the library. In either case, what makes you think your code is the answer to this class of problem every time you encounter it. Odds are, it's not. Your solution isn't as reusable as you think.
Besides, how could you ever justify jumping to a new language if requires you to leave your comfort zone? ;)
Microsoft One Note is an amazing and underrated tool, majority of developers have it installed with office and never even open it... I can't live without it.
I have a project called "home" that I keep in Subversion and check out to every machine I'm on. In that project is a directory called "lab" and any time I have to work on a scratch program or write a 2-200 line program to do something, I do it in lab, and add it to the repo. The accumulated scraps have saved me more than once, and having it on every machine, always updated via Subversion, means that I never find myself saying "Damn, it's on this machine..."
http://xoa.petdance.com/How_to:_Keep_your_home_directory_in_Subversion
Also, I have a wiki that I keep notes in if I think the notes are interesting to anyone else. See above.
I've been using Google Docs for notes so I can have them available on all my machines. Paradoxically though I'm finding that as Google adds more word processor features Docs becomes less useful for me as a note-taking app. For example, there are now red squiggles for misspellings that I can't seem to turn off. I'm thinking about switching to Word or some other file-based solution and syncing with Live Mesh.
For code snippets that I find online I just bookmark them in Delicious. My own code is usually under source control. I've used Live Mesh or Groove to share small demo projects across machines.
At work I use MS OneNote, as it is extremely easy to use, you don't have to remember strange syntax or shortcuts. Formatting is simple and WYSIWYG.
At home I record everything in evernote.com, as it is basically the free equivalent to OneNote. But as it stores everything on an external server, I won't use it for my company's material.
Second vote for Keynote here. It works great as a simple, hierarchical text database.
Imho, any kind of wiki-based systems will do the job.
Notes and files are fine, but wiki gives you a history - a very powerful feature!
Nice question btw. :)
I'm a Mac guy, so I use TextMate [1] and TaskPaper [2].
[1] http://macromates.comI don't save snippets, instead I keep all my projects uncompressed and if I need something I will look for it using tracker/google desktop (depending what so I'm using)... for figuring out stuff I use my old nootebooks, they are scribbled al over :P
I have one folder with all the docs in there. This is for personal use so I always know there the info I want is.
Plus I keep almost the same structure within projects.
Depends on the scope of the note, I suppose. For to-do list type things, I use FogBugz. (It's free for small teams and students)
For random notes, my old usage pattern was to open up a copy of NotePad, type stuff, then lose it because I restart my computer without saving it somewhere. Addressing my issue, I created a note program for my own personal use. Think of it as notepad with tabs and autosave, or alternatively, think of it like OneNote but not bloated. Free at https://webfiles.colorado.edu/allredj/, if desired.
I've used a number of methods over the years:
Paper Notebooks
Like most people, I started out keeping notes in a spiral bound notebook. This method has one big, fairly obvious advantage: you can draw what ever you want - text, diagrams pictures, whatever. Notebooks last a long time with proper care. The drawbacks are inability to search and the fact that I have atrocious handwriting. And killing trees, I suppose.
MS OneNote
I have access to this at work and it's one MS product I really like. It has individual files for notebooks. This is great for organizing things at the project level. I can use a notebook for a project and then remove it form OneNote when the project is over. I still have it if I need it, but it's not in the way. It integrates tightly with Outlook - you can create meeting notes for an Outlook event with a single click and create tasks & link them to items in OneNote. It also supports diagrams and highlighting. The main drawback is that it's Windows only and it's not cheap.
Omni Outliner (Mac)
It's a very nice outlining tool and I still use it for lists and things (often in conjunction w/ Curio, below). But it falls short in organizing, traversing and searching large amounts of data. It just seems a bit cumbersome for all that.
Curio (Mac)
My current method of choice. I've tried Evernote, but (unlike a previous author) I can't get past the non hierarchical organization. Curio allows me to have a separate notebook (file) for each project, create simple diagrams, links and other do-dads. You can also create & embed documents on a page. The drawback is that, like OneNote, it's not cheap.
I always dedicate one of my desktops to a fullscreen emacs, so writing notes is only an Alt-Tab away. I store my notes in files called 'notes' in the relevant directory. The notes tend to get monolithic, but are quite useful because I either never read them at all, or I read through the whole thought process again and again.
I think any personal wiki is good for this sort of thing. Personally I use one that I wrote myself [1] because I wanted one that could sync with my phone, but tbh, any wiki is good if you figure out a nice way to structure the notes that makes sense to you.
[1] http://dale.lane.googlepages.com/I've read through the massive list of comments and there are a lot of good ideas in there. Personally, I've been using more and more of google's tools, such as google notes and google documents. Most of the coding I do is internal and requires me to vpn to work to get at. This can be inaccessible in some situations, I love the way I can always access my stuff on google, which is better than say a desktop application where the documents would be only on a local pc somewhere, or on the company wiki (which requires vpn access), or in source control (same as the wiki). Google tools have really good and quick searching technology built in. Until I find a really good global solution, I'm going to continue using Google.
I wish StackOverflow was up-and-running a few months ago when I scoured the web for the answer to this exact question. I had used Microsoft OneNote at a previous company, but no longer had access to it where I now work. I tried using some of the Wiki-based applications, but quickly got frustrated with it's usage model. I had also looked at some of the mind-mapping products out there, but those didn't fit the bill for me either. I have since settled on EverNote and have been using it for several weeks now.
I had my doubts at first because of its lack of support for organizing notes in a hierarchical fashion, but I've gotten over that. I like the fact that it supports tags and that you can filter your view by multi-selecting various tags.
I also like the fact that it runs locally, but can be synchronized on the Web. I had looked into the Google Notebook application, but didn't like the web-only UI.
Plain 4x6 index cards. plain white paper, or quadrille (5mm) from (http://www.printfreegraphpaper.com/) on a clipboard. Notebooks.
I'm also one of the old school folk that prefers pen and paper for taking notes. But I must add that when I finish up one notepad, I reread the whole thing and distill the most important ideas and notes and write them into my new notebook. Kinda like refactoring all my legacy ideas :)
Depending on the topics, I use several moleskin notebooks to keep notes. I tried OneNote for awhile but found writing it in a notebook allowed it to be portable for quick notes; e.g., pulling it out of my bag to make a note or reference while walking down the street.
First, I am on Mac OS X, so I have access to some great tools, which aren't available on other platforms.
For notes, I use Omni Outliner Professional. Great tool for capturing notes. If I need to put in an image, I use Omni Graffle. And finally, for tracking actions in a GTD way, I use Omni Focus.
Together, and they work together well, they provide me with a solid suite which keeps me on top of things.
I use a combination of a wiki (screwturn) and thorough and usefull source code comments. Nothing beats well commented source code to explain a paticular gnarly algorithm. Wiki entries are more useful for storing high level concepts like architectural decisions and designs, down to passwords to development servers.
I also use lots of post-it notes around my monitors.
Microsoft OneNote
I usually take notes during a meeting on plain old Paper and Pen. Then I keep the paper around as long as I need it, usually only a few days. If I need to keep information for longer, I'll type it in and save it in a Word document or something.
I've played around with OneNote, but it doesn't seem to fit the need the best. Maybe I just need to find a good system for using it.
A couple people I've worked with have just used Notepad to type notes in and they save a single text file for each day of work. Then they can use something like Google Desktop Search to search through all their notes.
I typically use my blogspot account along with my moleskin notebook and mark different sections like "learning", "projects" with page markers. Even though I like this system many times I find myself having a lot of notepad files named after the subject/project.
Hope this helps.
We have a team-wide wiki [1] to record all project details/documentation/design, everything really. Because it is just a wiki though, it requires some guidelines to make sure it remains organised. We are definitely looking out for improvements to the wiki software that allows us to organise the information better.
The important thing is the visibility the wiki provides to the team, and has become invaluable when team members move on from our company. The last thing we want to do is trawl through someones private documents to recover important information.
Make sure you think about this when writing notes: "Is this information going to be useful to anyone else other than me?".
[1] http://www.mediawiki.org/Every good text editor (and by good I mean Emacs and TextMate) has a mode/bundle for note taking, organization, etc.
Try ORG mode on Emacs, or the notes Bundle in TextMate. I use the latter.
I use the Eclipse templates feature to store my code snippets. They are easy to write and parameterize, and can be inserted into your code with an easy ctrl-space. That is, if you use Eclipse of course.
Another vote for a plain old (big) text file and TextPad.
I could write a ton on what I do and why!
Basically, I use standard 3 ring notebooks, with squared paper.
I do this, because I find it is the most flexible method. It is easy to merge existing documentation and my own thoughts. It is easy to re-organize. The use of squared paper allows me to do diagrams and tables either in portrait or in landscape mode.
For small projects, I use a single notebook to hold several projects. For larger projects, I use one to several notebooks.
Random notes are simply kept in a notes section, and reorganized, as the organization becomes obvious.
All notes are dated.
When I convert notes to documents, I use Wordpad for the first draft, because of it's simple word processing capability. (The more complexity you have, the more time you waste on the prettyness.)
I try to keep one small topic per page to simplify reprinting.
Eventualy, documents become formalized, and are converted to Word or PDF files. (When this happens, it is no longer my problem.)
This method stood me well in my career as a programmer and analyst. In fact it got me a years worth of consulting. I got a contract to document the large system I helped to develope. I was the ONLY programmer (of 20) on the project who had bothered to do any documentation at all.
I was able to justify doing documentation (to others), as it kept me sane while doing on-call support and trouble-shooting for the whole system.
The method I used for this was an enhancement to the above notes system, with considerations for the incremental nature of the notes for a whole system.
Perhaps someone will ask a question about this topic.
I usually just open a plain text file and save it to my jump drive; however, I just started looking at InCollector, which provides more structure, directories and tagging, as well as search/filter capability.
I just started working just a few weeks ago so I don't really have a working proces for this. However I'm trying out Remember the milk [1], which seems to work pretty well. It's just list with some notes added. But this is an interesting issue. I'm definitely going to check through this list of programs posted by people and see if I can find something interesting.
[1] http://www.rememberthemilk.comI carry around folded sheets of graph paper, pack moleskin or similar notebooks if i'm going somewhere, or use whatever paper is available to scratch notes. On the computer i often just keep a couple ongoing email threads with myself, pasting stuff in as needed. Email info and notes to/from my mobile device that way too.
At home i try to boil, condense, and organize the info into OneNote. (Excellent app.) As for development techniques, code snippets, and programming stuff, use a simple blog or wiki to keep track. I like and use WordPress and TiddlyWiki.
Occasionally, ideas are best expressed as demo or prototype apps, which end up in d:\dev.
I like to use project spec sheets. I find that taking notes on them helps me hold on to those specs longer and make them more useful.
I use MS One Note at work, and it works pretty well. I also write a blog and put a lot of notes on there.
Have also looked at Evernote, but was not very impressed with it. Not very easy to organize things like in OneNote.
One con with OneNote is that is not free. So I have it on my work machine, but not on my other computers, so I can't standardize on it.
SharePoint offers a number of flexible tools with its wiki, list, and document libraries. We use it to hold all of our project artifacts, including best practice snippets, how-to's, etc.
I wrote a little script which takes a file with the last working day's notes, prepends today's date on it, and writes it to a file with today's date on it, then opens it in TextPad (which loads up on my second monitor).
The means that I always have my notes off to the right, and I jot down what I'm doing every time I do anything significant.
I was actually rather proud of the last working day bit, which even works out Bank Holidays.
I use Incollector(both Windows & Ubuntu) and Evernote on windows. Evernote has more features when compared to incollector. You can directly add text from firefox browser using the evernote plugin, drag & drop, mailto, tagging, images.
On Ubuntu, mostly use Basket note pads [1] and Tomboy Notes.
[1] http://basket.kde.org/pen and paper.
easy and simple.
work: keynote when on windows paper
home: gmail online random bits of paper when offline
Google Notebook for code snippets and research.
For projects at work a paper notebook.
I used to really like legal pads. I never missed anything, and everyone was quite happy. There's nothing like waving a legal pad around with pages of crossed-out tasks when the more Dilbert-themed managers wander by for showing progress.
That is, of course, until after a couple years the legal pads had accumulated several pages or so of low-importance, high-tediousness tasks.
Obviously, those types of tasks should have expired and disappeared, but I continued to copy them over and over again. I'm not sure what drove me to do so. OCD?
I probably should be all "Yo yo yo... I gots myself a tasks wiki integrated with VS2008 Team Server, and as I enter or complete items my current location is all imported-like from my iPhone and marked up on my Google Earth super-mashup along with the GPS locations of everyone I've done talked to about it... Later, I'll do a GE flyby on my completed tasks... way cool"
Nah. For years now it's all Notepad, KEdit, and post-its.
KISS.
Of course, I can't read post-its on my monitor from a client's site... so I may be due for a re-think. Webcams, maybe? :)
I use legal pads on hashing out rough ideas. Once I'm actually coding I tend to just write extensive notes to myself in Visual Studio, including liberal use of TODOs. As someone else mentioned OneNote really a great app as well, esp. if you're pulling lots of info from various sources.
For quick random ideas, I have a plain text file that I can quickly append to using
Quicksilver
[1] (ctrl-space .
random idea tab a tab n enter
). I also keep a physical notebook (nothing fancy) by my bed for emptying my brain if it's keeping me awake.
To-do lists go on Ta-da Lists [2].
To work out anything complex I use an A4 lined notebook or a whiteboard.
If I'm working with a colleague on a design, we use a whiteboard then take photographs, which get emailed around an written up.
[1] http://www.blacktree.com/I wrote my own very basic one for my personal code snippets but am thinking of moving them over to a blog shortly when I re-do my website.
At work we're investigating using the "Clippings" functionality within BBEdit. Basically the idea is to have a shared library that we all add to then redistribute occasionally but we're not sure how easy it's going to be to maintain.
I like DokuWiki[1]
From the main page:
DokuWiki is a standards compliant, simple to use Wiki, mainly aimed at creating documentation of any kind. It is targeted at developer teams, workgroups and small companies. It has a simple but powerful syntax which makes sure the datafiles remain readable outside the Wiki and eases the creation of structured texts. All data is stored in plain text files – no database is required.
Supports syntax highlighting for different programming languages and more...
I have a "personal productivity" wiki with Wetpaint.
I've used standard written notebooks in the past, but they have the same recurring problems:
My new strategy has three parts, but one focus: good data should be digitized in flexible "wiki-style format". This happens in three parts:
Some people have mentioned blogs and I think that this is a reasonable starting ground for sharing. But blogs are a weak way to organize evolving data. Things change and wikis are simply the natural home for things that change.
I normally use notebooks for everything. Since it becomes very cluttered I have started to create text files and carry them on my thumbdrive. I still rather have the notebook in front of me for easy reference but the text file saves me on clutter. Hopefully soon I will figure out if I like the text format better.
It's gonna sound stupid but a couple of years back I actually backed down a lot on notes trying to keep things in my head instead. If you take it step by step you'll learn to keep more and more stuff in there at the same time. I didn't bother to learn some kind of technique but I guess you should do what you feel fits best.
I do keep track of schedules, bugs and features in a plain text file but that is mostly to have something to cross out when I'm done. I've noticed how much faster I work and how my designs get better the more stuff I keep in my head -highly recommended!
Started using Code Collector Pro [1] for random things I find on the intertubes, books, etc. It's not baad.
But for visualizing problems, my trusty Moleskine does wonders.
Oh, and having a blog or other "online collection thingy" is really useful.
[1] http://www.mcubedsw.com/software/codecollectorproIf you take notes and you can't find them later, then they are useless.
I've had good results from gmail for notes that I don't want to make public and a public blog for things that should be public. In gmail, I have a label called "notes" and inside notes emails I include an abstract and a list of keywords that describe the information. This makes the information very searchable and it is easy to update overtime either by saving an open item as a draft or replying to an item with a new email. All emails are addressed to me, unless I am discussing a problem with somebody else.
I think gmail wins for taking personal notes based on convenience, searchability, ubiquitous access, and potential collaboration.
We at Crowd Favorite [1] are developing a custom Wordpress [2] site that acts as a:
...and so on. I think that covers some of the basic reference functions that any developer (firm) should have.
[1] http://www.crowdfavorite.com/At work I have an Oxford Composition notebook that I use for meetings. I use Notepad to keep track of things I'm working on, on a daily basis, and these are all stored in one folder, named by date, and indexed with Windows Search 4.0. I also have a whiteboard next to my desk, and I take pictures of it with my iPhone and upload them to Evernote, which translates the text and makes all my whiteboard images searchable. Not very organized yet.
(I have Moleskines as well, but don't use them for programming-related stuff.)
Dawned to me, isn't Stack Overflow exactly the place to keep them? :)
As of until now, it's been TextEdit (OS X) in RTF mode, and Spotlight for the searching.
Edgies [1] is tremendous for temporary todo-kind of notes. Kudos!
[1] http://www.apple.com/downloads/macosx/productivity_tools/edgies.htmlAction Outline by Green Parrot Software
I use a combination of Google Notebook [1] and regular good old pen and paper. The tagging capabilities and the possibility to share,and access the notes from everywhere are valuable. I also use the google web history to find reference links I didn't note or tag in the notebook.
Once you've found the right tagging system, it's very powerful.
The thing is, you need a google account. And there are the privacy and confidientiality issues.
Pen (or pencil) and paper still rule when it comes to brainstorming and conceiving. One drawback with my system is that the pen and paper entries must be reported back to the online notebook. I find it tedious sometimes, but it forces me to review and reorganize my thoughts and my todo lists.
Sorry for any grammatical or spelling mistake, English is not my first language.
[1] http://www.google.com/notebookDevonthink Pro [1] (only works with OSX), the artificial intelligence feature auto linking related material is pretty neat. In that sense it's better then EverNote, Together etc. It can export to plain text files and someone made a script for markdown. For task and client related document management I switch between combination of Contactizer Pro, Things and Inbox2.
[1] http://www.devon-technologies.com/products/devonthink/Already mentioned, Dokuwiki [1] is where I keep all my computer based nodes. The syntax is really straigtforward and very human readable - I often take notes in notepad++, editing the page source directly, then view it in a browser to see where I'm up to.
I use it particularly for "on the fly" TODO lists so I can have total control over what goes in them. I just put a strikethrough format on any finishted task text.
A really useful addition is DokuWikiStick [2], a dokuwiki and apache distrobution that will run from a memory stick or out of a folder with no installation required. Great for taking notes with you.
[1] http://www.dokuwiki.org/I built my own in Lotus Notes which has been enhanced over the years, I have what I call 'Tech Notes' that I posted in my original knowledge base eight years ago. At one point I went down the path of having one per topic but later merged them all back together into a single database. My most recent change was to add in lastRead and last edited values on the documents which makes it even easier to find somehting that I looked at/ edited recently.
I put everything in a large LaTeX file, easy presentation, nice rendering, and the source code is extremely gre-able.
I use a combination of sources. I keep some notes written down, and some using Google Notebook. I'm giving Evernote a try now. Still haven't found that ONE source that seems to work the best.
A wiki might be a good idea, though it would require a bit more work on your end to keep things organized how you like it.
I use KeyNote [1]. It's fast, needs no install, saves everything automatically, has tons of shortcuts, and sits quietly in the tray, until you invoke it with Ctrl+Shift+F12.
[1] http://www.tranglos.com/free/keynote.htmlFor noting and discussing new details, and also for bug fixing, I have found Mantis being an very nice tool, and, using Eurekalog as a bug reporter, it can store the bugs directly in the system, from anywhere. (But I haven't taking this in use still, since my Mantis is mainly to be used with my php-based programs, while my Delphi-things are for other companies, so I have to find a commercial mantis site (I have probably found one, which also support blogs and also commercial components to)
Otherwise I use an old-fashioned flip-over instead of a blackboard for discussing architectual things. When changing to another project, just flip over the paper and continue on a new paper. When going back to the other project, just flip back again :-)
And for formally describing flowcharts etc. to be sent as files to others, I have started to use Microsoft Visio, but, I find documentation on how to use it rather scarce :-(
Quite like mindmapping tools like MindJet - good for organizing and capturing random thoughts that crop-up during day-to-day work
I don't use a specific tool to keep notes, but rather prefer to make any remarks in the comments at or near the actual code. Whenever I need something later on, I generally remember where I used it first or I'll just search my code library for it. Even when I just think of something for later use, not as part of a current project, I'll just throw together something that demonstrates the idea and save that for later use.
I find that my source library is the first place I look for old ideas anyway and that's why I started using it this way. An added advantage is that I also have a lot of other people's code sitting in there and sometimes when I look for my own notes, I find the answer in other people's comments and solutions.
i use DevProject Manager [1] its free, can run of a USB stick, Dosn't require admin rights at all,it has syntax highlighting, does project management and has a code store all in one.
[1] http://www.gaijin.at/dldevproject.phpI carry around a 160 GB Maxtor USB drive. It has all snippets, websites, db's, notes and anything else I think is necessary. It fits in my pocket. If I see something useful on a blog or in a forum, I just save it as an .mht. Snippets of code go in a text file and then are stored there also.
I find a simple pen and bound notebook serves me well.
I think we often get caught up in using software for the sake of it. A pad of paper and a pen is, I find, the single simplest and most flexible system for taking notes, sketching UI's, planning features, or just working through and noting my ideas.
I use Memento a little sticky program that can be found at "Guys with Towels" to keep personal notes whilst developing. Eventually notes that are worthy get put into out "ticket manager" system, works well for our team. Rippo
For info-scraps I use a single Notes.txt file on WinXP and Notes.rtf on Mac (so far I'm using Google Notebook for links but not for notes in general, as it turns out).
For more organized and edited reference-making, I may write in Markdown and contain it in "Mandown" manual documents.
Mandown is an open source thingy I cooked up (building on the great work of the Markdown [1] and Showdown [2] guys):
Run-time Rendering - the power/simplicity of Markdown without build-time compiling (dynamic Markdown to HTML happens client-side via Javascript acting on the Mandown source).
Read More: http://wittman.org/mandown/
BTW, I can't say enough how nice it is to write in Markdown here on SO.
[1] http://daringfireball.net/projects/markdown/Math notebooks or white paper , and FreeMind (http://freemind.sourceforge.net/wiki/index.php/Main_Page , seems is now right now:) ) for bugs and toto lists. That and sometimes text files, but thats basically for temporary notes with extended error descriptions.
Natara Bonsai is great at creating hierarchical lists. It can be used for TODO lists, note taking such as meeting notes, etc., and to organize data by topic...
I use OneNote, the best app ever...
I have been enjoying OneNote lately, esp since I added a pen tablet to the desk.
Being able to add quick little drawings makes it almost as cool as pencil and paper.
Bonus being that I dont end up with as much dead tree to sort through at the end of the week/month.
The integration with outlook tasks list also very handy.
VIM 7 with UTL plugin is awesome. Just type text any way you like and with a simple shortcut macro you can press a key (F5 for me) and it will open a http link, a PDF file, etc. Since this is VIM, that means you can also use this to jump from one file to another and thus have pretty much a Wiki if you like. It can be as simple or as advanced as you like.
I like the wiki way. For my personal stuff I use MoinMoin [1] on my desktop. Python is the only dependency, so it's quite platform independent and the installation is done in seconds. If you have multiple distributed workstations, you could put your wiki in a Dropbox [2] and sync it between the systems or just install it on a remote server and use ACLs to protect confidential pages.
[1] http://moinmo.in/A good Wiki is excellent for a development team (try Redmine [1] or Trac [2]). It helps that you could link the notes directly to your repository source code, tag your entries, use ticketing system and so forth. It's a great and indisposable tool for collaborative development. If you are a lone wolf anything would do but something with good searching capabilities would definitely be more useful. I would suggest MS OneNote because of Live Search integration but that's just my personal preference.
[1] http://www.redmine.org/Opening a blog has the many bonuses:
Of course some stuff is not suitable for the masses. In this case I suggest some text files, an USB key and a good editor (Ultraedit, Notepad++). A naming convention and an automatic file catalog may come in handy when the number of files grows.
NOTE: chose to open a programming blog? Have a look at SyntaxHighlighter [1]
[1] http://code.google.com/p/syntaxhighlighter/Personally I use OneNote since it is provided by the company and I can have the contents synced to my windows mobile without any problem.
I use a combination of a paper notebook, and TextMate. I use OmniGraffle for drawing diagrams, and I've found that skitch [1] is great for annotations.
I've still not found anything which can replace the feel you get from physically writing on paper, and provide useful cross-references.
[1] http://skitch.com/I like to make notes by hand. Good fountainpen, good paper and my ideas just pour from my head by them self.
Problems start when you want to copy down some links or longer text from the screen and later use it on the same or other machine. Little by little stack of notebooks is growing and you're starting to wonder what to do with them.
At work I'm using Evernote, at home MS OneNote. Evernote is lighter and free, OneNote has more functionality.
VIM
I keep my notes in a file in home directory called notes.txt
. It's easy to update and search, I might start using markup that way I could translate it to web page when needed ...
diigo [1] to bookmark interesting stuff. docs management using sharepoint(MOSS 2007).
[1] http://www.diigo.comI send an email to myself on gmail.
And perform search on mail.
from:me has:attachment blah
vimoutliner [1] for hierarchial notes. vim dot [2] for diagrams and graphs.
[1] http://www.vimoutliner.org/I use an outliner application called Bansai from Natara Software [1]. It's a super-simple editor that lets you enter notes in an outline format - I try to keep Bansai open in one monitor when coding, and jot notes on anything from functions I want to re-factor later to reasons I made some design decision. Bansai is not free, but fairly inexpensive.
[1] http://www.natara.comI've just started using Bespin [1] to keep note across the Web. it seems to have some promise, and in theory, you could create/host a wiki in bespin and access it from anywhere
[1] https://bespin.mozilla.com/Evernote.
Index searches, multiple notebooks, tagging, and available on almost every device imaginable (via native client or web browswer). Omnifocus for everything else.
I'm going to have to give another nod to Evernote. For now, it is the solution I use. Just a few reasons I find it useful as a developer:
I have tried a few other tools, and a few GTD apps. This is the one I'm using for now, until something better rears it's head.
Hope this helps!
-- Sean
I use
I coded my own php based wiki engine.
OneNote!
Truly, I've scrapped everything else I used to do. I love it and blogged about it here [1].
[1] http://aspectdatasystems.com/ADSI/Blogs/Boyd/post/2009/04/23/My-New-Favorite-Tool-OneNote.aspxI've become a big fan of OneNote as well. Non-intrusive, easily searchable and convenient.
anything important goes into google documents, accessible from anywhere. all the rest - drafts, too small/unimportant remains on notebooks that I keep losing monthly and starting a new one...
I use MS OneNote 2007 and achieve the following: 1)collaborative authoring: including restrictions passwords, collaborate via SharePoint or a SharedFolder on my local disk. I dont need to worry about others needing to know any markup text, very straightforward - just like typing in Word- support for tables, colored text etc! 2) real time chat/discussion (sharing session!) 3) whiteboard/drawing 4)search text from pasted images/ great search across notebooks 5) ability to flag items 6)Good integration with MSOutlook: I can send emails/Meeting Items and Contacts directly to OneNOte, (an annotate/add special notes to the content 7) Create PDFs or email One Note pages to people 8) I can send PDF/PPT to one Note: allows further annotation 9) When I view Web content, I can send an entire page or just one line of text directly to OneNote and one note even saves the link for me! 10) I can also have record audio and if i provide keywords during the recording, the play back will begin from the point from where I made the annotated keywords 11) I can even search based on changes made by others or me to the notebook 12) I also use OneNote during meetings: jot down minutes, flag to do items: I create custom flags or use the out of the box tag that read Critical/ TO do...and later I can create a summary of all flagged items across notebooks. 13) I sync OneNOte with my office copy and home copy 14) and When I buy my Windows Mobile I can use the Active Sync Feature of OneNote...!! 15) I also write out my thinkings in OneNOte and send them to Word and take it from there for a professional doc that needs to go out to people. 16) Screen grabs are also reallyyy neat! 17) I also embed files (audio- mp3 of a meeting, a Word doc that I may need to view later etc) 18) I also love the fact that I do not need to keep saving as i type! It autosaves! 19) I used oneNote even as a calculator: if I type 1+ 2= on a OneNote page, and press Enter I get an answer typed out for me! Maybe I will come back and add more later..but I can go on about using OneNote 2007 and how useful it is!
I pesonally use WikidPad [1], a desktop Wiki application written in Python. It is really fast and it works pretty well. It is primarily plain-text, but the primary advantage for me ist that it is lightening-fast when switching between pages (if you use SQLite as backend), which is a huge requirement for me.
I once managed to integrate a GettingThingsDone [2] extension into it, don't really remember where I got that one from. It manages my whole TODO list.
[1] http://wikidpad.sourceforge.net/Tiddlymath [1] is good you can include svg - but I keep meaning to extend it for programming diagrams.
[1] http://math.chapman.edu/~jipsen/tiddly/tiddlymath.htmlSynchroTron TiddlyWiki [1] is a 'a reusable versioned non-linear shareable web notebook' that used DVCS techniques in its interesting implementation. I've only fiddled with it but is seems like a good choice for a lightweight group project.
[1] http://hg.opensource.lshift.net/synchrotron/raw-file/tip/tiddlywiki/tiddlydvcs.htmlOpera, the browser, is superb for quick note-taking.
That is, of course, if you have it running most of the time....not much use if you have to fire up Opera just to take a note ;-)
Totally addicted to the mind-numbingly ability to synchronize the notes without any fuzz...just sign in to your account once per computer, and then your notes are always available.....just priceless, especially if you're a tad absent minded, and not always aware of which computer you happen to have in front of you....
I always have in my solutions a particular file called notes.txt where I write down all my notes. Every project I'm working on has my notes so that everyone can read my notes when they are making changes, or what so ever.
All my code I've written for companies are stored in Source controlled applications, and if they don't have any.
Redmine's wiki.
I keep several moleskin notebooks for my collection buckets.
Then I process things with google calendar and backpack. My google calendar is used to setup extensive reminders, and all the calendars are linked into backpack. I even display project specific calendars on each "page" relative to that project in backpack.
For things that I just need reminders for, I add that to backpack as well. All of these reminders are SMS'd to my phone.
So far so good, though I agree starting a blog is a great way to encourage yourself to keep improving and to track progress.
I use Toodledo [1] and a notebook. Toodledo can sync to Outlook and has an iPhone application so I'm always in sync no matter where I am.
[1] http://www.toodledo.comFor work stuff I use a good old paper notebook to jot down ideas, draw diagrams and other stuff during meetings and transfer them later on to a team wiki (an internal DokuWiki instance).
At home I use my wordpress blog. I have a lot of drafts :). If I need something more than once, I reformat and post the blog entry.
I have used google doc.
I'm partial to http://pocketmod.com/ for doing small notepad keeping in paper. I've fiddled with TiddlyWiki and I like it a lot, but I don't care for being tied to a computer. I carried an iPAQ for a while, but it was a bit too fragile for me. Pen and paper has the right mix of portability, flexibility and economy for my tastes. Now if only I could duplicate and back it up. Version control would be nice too. :-)
VoodooPad [1] from FlyingMeat software (OS X only)
It's the world's most awesome personal wiki tool, but to associate it with normal wikis is to do it a great disservice. It is totally wysiwyg, has sweet built in search, sketches, html export encrypted pages and more. If you've got a Mac I highly recommend it. The developer's been adding features to it for years now and is very responsive to customer questions.
[1] http://flyingmeat.com/voodoopad/I don't recommend Lotus Notes. Our organisation uses it (for legacy reasons) and the search functionality is very poor, especially as the 'Google Gold Standard' gets better and better.
As with other answers, I use TiddlyWiki, but it's not ideal for storing code snippets.
This is really weak but for projects I am working on I write in notepad (notepad2 to be precise) any notes that I may need and I sketch any diagrams using paint.
When I have a good idea of what I am doing and I wish to share- if it is something for work I write very lengthy emails, refining and rewriting the notes that I have in notepad.
For simple notes + bug/issue tracking I have used a shared google document, highlighting or coloring text depending on who the author of the notes is.
I also write about some of the non-specific aspects of my projects on my blog so I can express my feelings and thoughts on the non-code aspect. It is like talking to a therapist about the issues I go through and is more about letting me reflect on those issues and to understand by expressing them in writing.
I use emacs [1] org-mode [2] both to track my tasks and to maintain a local wiki where I keep my notes. I keep the notes synchronized between computers using git [3].
During meetings, I take notes in Emacs on my MacBook when I have it along or on a Neo [4] I have lying in the drawer for later transfer to a real computer with Emacs. I'm eagerly awaiting delivery of a Mini9 [5] to replace both of these systems in this role.
WorksForMe (TM)
[1] http://www.gnu.org/software/emacs/Google Docs and Trac with SVN
I run a full-fledged weblog for my engineering notes on my workplace's internal network. It is indexed by a Google search engine, which usually homes in on what I want to find weeks or months later.
Additionally, we have a wiki which is used both for scrubbed docs and as a scratch pad for ongoing development.
I actually use my own application that I've been doing for the past years... Although the development is really slow.
There's no webpage for the current version but you can check it out here:
http://www.nazgulled.net/?lg=en&id=downloads
[1]
Old version: FireNotes v0.5.1 (very old really)
Latest version: FireNotes v0.7.4920 (Developer Preview 1)
I use Tomboy Notes
I use pen and paper (note books and yellow notes) for quickies and in-work notes.
When working on a project or task of some size I use mind mapping ( iMindMap [1] or MindManager) and to some extend word processors for longer lasting notes.
I find the mind mapping a great tool to get an overview of the task at hand as well as keeping track of minor and major tasks in the projects during the whole process. Good for making context dependent notes to refresh your memory when returning to projects for later development and/or bug fixing
[1] http://www.imindmap.com/I use pen and paper (note books and yellow notes) for quickies and in-work notes.
When working on a project or task of some size I use mind mapping ( iMindMap [1] or MindManager) and to some extend word processors for longer lasting notes.
I find the mind mapping a great tool to get an overview of the task at hand as well as keeping track of minor and major tasks in the projects during the whole process. Good for making context dependent notes to refresh your memory when returning to projects for later development and/or bug fixing
[1] http://www.imindmap.com/I am on open suse(KDE) ,Knotes and basket get the job done for me.
I am using "The Journal" [1] by DavidRm Software. It is not particularily developer centric, but I have found that it has really helped me getting my notes organized. It has both a "notebook" and a "daily journal" mode. I used to have lots of handwritten notes lying around, but they are mostly gone now.
[1] http://www.davidrm.com/thejournalEmacs Org mode
I use my blog for my thoughts that can be public. For the rest I use either OneNote at work (on PC) or Omni Outliner at home (on Mac). I wrote a post [1] on note taking you may find interesting. I also use notes on my BlackBerry which I sync to Outlook which works for small pieces of information that I use regularly. I used to use a Palm PDA and Palm desktop, which I find superior to Outlook but Outlook is what we use at work..
[1] http://blog.endlesslycurious.com/2008/09/26/note-taking/plain old paper and Freemind http://freemind.sourceforge.net/wiki/index.php/Main_Page
I use Microsoft OneNote. Easy to use, never have to save anything and you can allways find everything with a simple search.
Google Docs & MediaWiki for most everything!
I use a combination of My Life Organized [1] and ScrewTurn Wiki [2]. I run MLO from my usb flash drive.
[1] http://www.mylifeorganized.net/My blog, combined with Evernote.
Notes go in Evernote, and can be screenshots, whiteboard photo's, hand written and scanned notes, typed notes and URLs, and code snippets. I can easily tag all this stuff and organize it.
When stuff is non-NDA and public knowledge, I move the notes to my public notebook for everybody to see. If I have the time and I have found something interesting, I post it on my blog.
My blog only contains answers. No questions. It servers as an external memory which I also use to refer to when people ask me questions. It saves me and them a lot of time and makes people happy.
You can get Evernote here: http://www.evernote.com/
and here is how a public evernote page looks like: http://www.evernote.com/pub/rolfje/PublicNoteBook
I usually only use blank A4-sheets of paper and write on them from all angles and sides. It gets a bit messy on my desk sometimes, but i really like the freedom of a large paper without lines.
Notes of permanent value live in ~/etc/howto
with a find
/grep
script for recovering information quickly. Ephemera live in ~/todo/next-actions
or ~/todo/someday-maybe
as espoused by David Allen in
Getting Things Done
[1].
FogBugz
Anything I'm taking notes on is for a feature or a bug, so I have a tendancy to use FogBugz as my repository for notes and details and anything relating to those items. That generally covers it for me.
I often use an online outliner/task management system, http://checkvist.com . It allows to share my notes with other people, simple, and really keyboard friendly.
I was looking for a tool like this some time before, and didn't find one which would meet my expectations regarding user experience.
So CheckVist was written.
FireFox Scrapbook (to hold pieces of useful info found on the internet), FireFox X-Marks (for synchronized bookmarks between all computers), EverNote and ... MS OneNote which is very good
For me it's always been easier and more practical to just use the old pen and notepad. I do that for notes and to backup small tasks that otherwise I'd probably forget.
I use the now abandoned but still enormously useful application from tranglos software called KeyNote [1]. Its the best hierarchical note taking editor that I have ever come across till date. And IMO it still does it job pretty well.
[1] http://www.tranglos.com/free/keynote.htmlAn engineering pad (the graph paper kind)
Nothing.....
A plain notebook...
I love Basecamp [1], we trialled it at work and never looked back. You've got to-dos, messages, writeboards, time tracking and some other stuff.
It's incredibly well-designed too, every part of the interface has been really thought out. It really does make our lives easier.
[1] http://www.basecamphq.comI keep my reference documents for problems I tackled in a private wiki [1]. This gets round issues of confidentiality, as the code I write is not open source.
[1] http://www.fogcreek.com/FogBugz/LearnMore.html?section=RichTextEditori use treepad. i create a tree that looks like this:
- 2009
-- 01
--- 2009-01-01
---- client/project 2009-01-01 a description of what was done
---- client/project 2009-01-01 a description of the 2nd thing
--- 2009-01-02
and so on
i don't think it matters much if you use a wiki or treepad or whatever as long as its searchable. i like to keep things organized by day. at the "day level" of the tree i record and overview of what i did. in the children of that node, i put the details (sql queries, sometimes code snippets, etc). the big thing imo is to make sure it is searchable. treepad has a relatively fast search capability that lets me find when i did what and for whom i did it.
i started doing things this way in 2005. before that i kept a paper diary of sorts. before that (pre 2000) i didn't keep track of anything. i have to say that starting my daily treepad diary is the single most productive thing that i've ever done. i use it religiously and the rewards have been many.
-don
I am surprised that nobody has not mentioned yet Devtodo, which is great app.
Emacs's org mode is also great in note taking and organising.
i use my gmail to keep track of my important files ,so basically and send an eamil to myself with tags in the content so i can perform searching.
Hello,
I use Zotero [1] (Firefox extension) to keep web search, script, solutin, document. Also i use Trac to keep my tasks, checklist etc. And i use iPod.
And last one, my friend use iBob (i will explain it in our webpage www.javaloper.com)
[1] http://www.zotero.comnotecase + wordpress
I've recently been using the Pulse Smartpen, which is an ink pen on paper solution that also happens to have an infrared camera builtin with audio recording and 2 gig storage: http://www.livescribe.com/. I use this for capturing design ideas and drawings, meeting notes, and pretty much anything I normally write down. It records all your writings and drawings and links them to the audio recordings -- really has to be seen to fully appreciate. The notebooks get synced from your pen to your computer, and can also be uploaded to free cloudspace on their website where your notebooks or sessions can optionally be shared. There is no built in OCR, but there is an optional add-on that integrates with it. And it has built-in text search on your written documents (which must be using some OCR behind the scenes).
I've tried and liked both ScrapBook and Zotero -- they're both primarily targeted at capturing local copies of stuff from the web, but (I believe) they also include simple note-taking.
I've started using ShoveBox (Wonder Warp Software; OS X only), available for free from MacHeist.com. Drag files, images, text snippets or URLs to the icon on the taskbar and it stores them all. Searchable, exportable, all that stuff. It's not developer-centric but works for me.
I am developing my own web app to keep my notes, urls, todos and files. It is an open source project : http://sourceforge.net/projects/easytc/
I use Google Notebook [1]. It's gerat and I use it for any type of note not only just programming related. Although I've heard that unfortunately Google stooped their work on it for now...
[1] http://www.google.com/notebook/I sujest using Microsoft Live Thumbtack [1]
[1] http://thumbtack.livelabs.com/Thumbtack is an easy way to save links, photos, and anything else you can find on bunch of different Web sites to a single place. Grab the stuff you want, put it into a Thumbtack collection, then get to it from anywhere you can get online. Share it with your friends, or just keep it for yourself. It’s way easier than sending a bunch of links in an e-mail, and even easier than setting lots of favorites in your browser.
Some excellent notes here already...
Evernote is great because it bridges the analog/digital gap, in a way Google Notebook couldn't. Now that Notebook is leaving google, Ever note will begin to look more impressive. Think of Evernote as a personal butler, that will take scribbles, cameraphone screenshots of basic plans and tie them all together. It still needs effort in tying work to each project you are working on however.
The feel of doing on paper work for creative work cannot be lost neither - scribbling basic web layouts is still (for me) faster on a page, done as crudely as the timeline gives me. Having this is something I can refine latter on if needed - and Evernote will let me scribble on it while retaining the original copy.
I use Microsoft OneNote.
When I start talking to someone about a project I start an outline in OneNote. It could start very simple like the results of a first phone call to setup an appointment without much more than a project name and some very basic information.
As I ask questions, talk to other people and do my own investigation I add to and with OneNote can easily modify the outline very quickly.
If possible I'll put the outline up on a screen and develop the design and requirements in collaboration and in real time with the people who know and care about the project.
In all cases I will email, show or print the outline to the stakeholders to see if this is a good representation of what they want.
My next step is to refine the outline now taking into account to how the data will be organized, what type of program (web, windows forms, windows service, etc.) and continue the design so that I have a clear path to start on actual database and software implementation.
As I go along in the project I can further refine particularly complicated parts and be left with some good design documentation.
For a new or prospective client, during the first interview I can capture what they say and provide some detailed feedback via email after the meeting which usually has a very positive effect!
GMail Tasks
I'll echo the general sentiment that a wiki is the best way to go. I am currently using drupal to store all my notes. It has a great taxonomy system. I've walled mine off (https and password) from the rest of the web though so I don't feel so bad about it not being polished. From there, its a quick copy and paste of the terminal, and I've got it...
I use a combination of:
I just use google notebook for URLs etc and a physical notebook for others :)
Eclipse's @TODO feature - I use this for any notes and TODOs related to the Java project I am currently working in.
Physical notebook - For notes and TODOs that does not fall on the above category but is still related to the project I am currently working in.
Email - I use these for sending notes and TODOs from my office email to my personal email. But these are not related to work. These are mostly links, and texts about anything I want to research at home.