Live data from Hacker News

The software engineering notebook

winterflower.github.io

51–60 of 143 posts

Re: The software engineering notebook

#51
Professionally - I took over the monthly payment system at my current job. There was a fair amount of technical debt and tribal knowledge about the thing - the first few months, I took extensive notes about everything from basic usage to problems encountered. As I paid off the technical debt, however, I was able to gradually turn the notes into code; now, it's almost at the point where there's nothing to write down each month (although there's usually new code to write).

Outside of that, a friend of mine has made his own semi-public wiki, and tied that into his email client; he can now easily link to pages from within the email, allowing him to communicate A LOT with very few new words. It's pretty neat.

Re: The software engineering notebook

#52
I've been actively looking for a good tool for personal note taking, and finding lots of things that seem not-quite-right.

Plain Text:

Pros > Simplest, works everywhere/on everything, scales well (append forever!)

Cons > Least automated, no images, no math, no code, hyperlinks depend on editor, no embedded files

WYSIWYG Doc Editor (Word, Writer, etc):

Pros > As easy as plain text, can do images/math/hyperlinks/embedded files, somewhat portable

Cons > Bad at code, not many automated features, unwieldy once file gets large

Markup language tool (Org-Mode, Wikis, etc):

Pros > Powerful, portable, good at code/links, scales well, highly configurable, highly scaleable

Cons > Have to learn the markup language, mostly bad at math, high up-front costs (e.g. needing to set up a server or learn alien keyboard shortcuts), non-wysiwyg feels less like a "quick note" and more like a professional document, image/doc embedding can be hit or miss

Note-taking app (Onenote, Evernote, etc):

Pros > Automates lots of note-taking tasks (e.g. time stamping/tagging), can do images/math*/hyperlinks/embedded files, scales... fairly well

Cons > Least portable (dependent on app-specific sync features which may change), less simple (best use of notebook features are non-obvious), still bad at code

Electronic lab notebooks (ELNs) (labfolder, benchling, etc):

Pros > Good for organizing/presenting data, embedding files, scale very well, have collaboration features

Cons > Very not-simple (most require either require server config, or you don't own your data), most are somehow still bad at math/code, frequently expensive and not portable

Task Managers / To-do lists (Trello, Asana, etc):

Pros > Very intuitive to use, can sort of embed documents/images, have collab features

Cons > Not good for longer-form notes, bad at math, not meant for note-taking, you mostly don't own your data

Others:

Jupyter/Mathematica can do WYSIWYG text, code, math, data, and images all in one document. However, Mathematica is expensive, and Jupyter is non-trivial to get up and running. These tools are primarily geared towards creating a polished document, and are less good at documenting the evolution of ideas inherent in note-taking.

Personal Diary/Journal software is mostly underwhelming, most of these seem like cut-down note-taking apps sold to the non-tech-savvy

Re: The software engineering notebook

#54
post #50

I have a "notes" directory in dropbox. I use .md files, with a text editor that does some highlighting based upon the markdown. 95% of them go into what I call my "dev diary". Each day gets a new file. Any questions, answers, thoughts, etc. while programming or designing go in there. For searchability, I also add any reference Jira/Trello/etc ids. Beyond that, I have cheatsheets and checklists. Cheatsheets are short,…

Try my http://notes.sciter.com - I did it for exactly that purpose. The only thing it renders and edits notes as HTML/WYSIWYG.

I've found that for some reasons I simply cannot consume/read .md in source form.

After all having rendered in larger font means something, right?

Re: The software engineering notebook

#55
post #23
post #13

The commitment to taking good notes has been one of the best decisions of my life -- not just professionally. I use my standard text editor (Textmate 2), and have a "notes" project, with all manner of categories organized by folder. I take notes on articles I have read, take notes on any presentations I watch or educational courses I take, or books I read. Moreover, I now take much better in person notes -- I take th…

On the other hand, based on my personal experience, maintaining a constantly growing archive of things, be it notes, bookmarks, emails, etc. turns out to be not very useful. Also, it gradually becomes something that you spend more time on than on other things. I now prefer to be more spontaneous, try to minimize the number of things that drag me into the past, start things as if from scratch, "reset" myself, dismiss…

I like to separate notes from journaling for precisely this reason. I have hundreds of notes in Evernote that I will never see again. They're invisible, as light on me as a feather. Yet they're also searchable, so they're available in seconds if I ever need them.

I have system of using "top" tags to define my working view for a project. Say I'm working on project Foo. At any one time I'll have about half a dozen notes tagged "foo-top." I can take any note from my past and bring it front and center by tagging it "foo-top" and then delete the tag when I want the note to disappear again. Say, for example, I want to see if CouchDB will be useful for Foo. I used CouchDB for a personal project several years ago, so I can search for my note of CouchDB concepts and commands, tag it "foo-top", and then remove the tag if I decide it won't be useful. It's a beautiful way of carrying around a lot of baggage without feeling the weight. It's nice that if I want, I can write down notes and thoughts about something without worrying that I'll clutter up my journal and make it unreadable, or worrying that I'm mixing up the wheat and the chaff. It's not like I spend a bunch of time rummaging through a bunch of junk to find what I want, forcing me to think carefully about what I record. I can record anything that seems like it might be useful later.

A journal would be nice to have, too, though. One note in each project serves as a journal of sorts, in the form of a quick summary of what I've done each day and a quick summary of what I expect to accomplish next. (For work, I find it more convenient to keep a single note for this instead of breaking it out by project.) Evernote isn't great for keeping chronological notes. I only use it because I haven't seen an alternative that is compelling enough to make up for the convenience of using just one program.

One thing I really wish for is a program that could automatically present me with a diary of sorts based on my note-taking. Versioning would be nice, too, so I could see how my notes evolve over time.

Re: The software engineering notebook

#56
post #53

http://tiddlywiki.com/ Sits in a browser tab, insanely quick to use which is the most important thing. Consider it perfect for taking notes. I use seperate systems for todo and project management (the project management one I wrote myself)

Also have a very quick search, which beats any server based wiki.

Re: The software engineering notebook

#57
post #47

I have adopted this practice over the last year and have found immense value in the practice. I believe this practice is one of the cheapest ways to help leverage your previous experience on the job as you keep yourself from having to repeat previous learnings over and over again as you try to remember what those compiler flags you used 6 months ago actually were :). My system is quite simple. I have created a github…

A script might finesse things a little more, but you could get a naive implementation of the timestamp behavior with something like: alias journal='vim + "/Users/username/journal/$(date +%Y)/$(date +%Y%m%d).md" -c "execute \"normal! Go$(date +%T)\ ========\ \" | startinsert "'

This command (as presented) is giving me issues with saving the file on my machine, not sure if it's specific to only me but figured I'd give you a heads-up!

Re: The software engineering notebook

#58
post #23
post #13

The commitment to taking good notes has been one of the best decisions of my life -- not just professionally. I use my standard text editor (Textmate 2), and have a "notes" project, with all manner of categories organized by folder. I take notes on articles I have read, take notes on any presentations I watch or educational courses I take, or books I read. Moreover, I now take much better in person notes -- I take th…

On the other hand, based on my personal experience, maintaining a constantly growing archive of things, be it notes, bookmarks, emails, etc. turns out to be not very useful. Also, it gradually becomes something that you spend more time on than on other things. I now prefer to be more spontaneous, try to minimize the number of things that drag me into the past, start things as if from scratch, "reset" myself, dismiss…

I had the same problem as you, but my solution was separating "notes" from future actions.

My notes track knowledge, they are referenced as-needed so I store everything because there's low/no cost. I've also found that writing things down improves my recollection, so there's value even if I never reference the note again.

My calendar / omnifocus track future actions, I minimize these and keep them very well curated - no "todo", only "do". Externalizing some cognition takes time in exchange for efficiency... less overhead from context switching or remembering unrelated items.

The tradeoff is loosely analogous to scheduling in computing - inefficient for an isolated single thread of work, but beneficial when coordinating lots of concurrent work.

Re: The software engineering notebook

#59
post #23
post #13

The commitment to taking good notes has been one of the best decisions of my life -- not just professionally. I use my standard text editor (Textmate 2), and have a "notes" project, with all manner of categories organized by folder. I take notes on articles I have read, take notes on any presentations I watch or educational courses I take, or books I read. Moreover, I now take much better in person notes -- I take th…

On the other hand, based on my personal experience, maintaining a constantly growing archive of things, be it notes, bookmarks, emails, etc. turns out to be not very useful. Also, it gradually becomes something that you spend more time on than on other things. I now prefer to be more spontaneous, try to minimize the number of things that drag me into the past, start things as if from scratch, "reset" myself, dismiss…

A shudder went through me when I read the parent post you replied to. Based on my personality that wouldn't work for me, and over time I've had to learn to better understand and work better with people that work that way. I've had people comment on me as sloppy, uninterested etc. when they make the observation I'm not a detailed note-taker which is quite frustrating.

I've mentored enough colleagues that I've come across those who take extremely detailed notes, and are successful, and a fair number who do this and don't find success in their work. When I try to find ways to get them to question their approach they are often resistant to changing because the have an ingrained belief that detailed note-taking is of fundamental importance.

Re: The software engineering notebook

#60
Here is my software engineering notebook (still a work in progress): https://baron816.gitbooks.io/good-stuff-to-know/content/

Working on this has definitely helped me learn these concepts much better and deeper, plus it's easy to go back and find things when I need them. Just reading something is not a good way to absorb information. Actually having to regurgitate something in your own words makes a huge difference.

Gitbook is not the best place for all my notes. Will be using Evernote going forward.

Post reply on HN