
Show HN: I've been writing daily TILs for a year - jbranchaud
https://github.com/jbranchaud/til
======
existencebox
Just wanted to say, this is an excellent idea and I'll be blatantly stealing
it for myself from this point forward; thank you for putting this motivation
in my head by your successful implementation.

I've done a half-assed "important learnings from the last year" retrospective
for myself, but your method of keeping it going forward is both far less lossy
and more complete.

Putting it on GIT as well seems like a smart choice. Treat it as your
"Accessible anywhere" personal cheat-sheet.

~~~
jbranchaud
Everyone at my company really got behind the idea of TILs too, so we created a
little web app for it --
[https://til.hashrocket.com/](https://til.hashrocket.com/)

~~~
dchuk
Any chance this is open source? Would love to set this up for my office

~~~
jbranchaud
We recently open-sourced it. Let us know what you think!

[https://github.com/hashrocket/hr-til](https://github.com/hashrocket/hr-til)

~~~
michaelwww
I like it but upgrading ruby to the required 2.3 from 1.9 that comes with
Ubuntu 14.04 turned out to be a daunting process. The 2.3 build was at least
15 min with several errors, and then bundler wouldn't work. I wiped everything
ruby and will try again with RVM. It seems like over kill for such a simple
app. I am not a RoR guy and my first impression is not very good compared to
other server apps I've installed, or maybe I just need more patience!

~~~
poloniculmov
I thing everybody in the Ruby world uses either RVM or chruby/ruby-install.

~~~
nathell
Or rbenv.

------
ryanmarsh
When I was first learning UNIX many years ago a grey-beard told me to always
keep a spiral bound notebook and pen at my side. It was great advice. Jotting
down the arcane commands committed most of them to memory, for the rest my
black little spell book held the magical incantation for any situation. I've
since gotten away from that habit. Perhaps I should follow this fellow's lead.

~~~
jbranchaud
I love this technique! I take notes in a small notebook during the day and
then look back at in the evening to see if there is anything worth TIL'ing
about.

------
tfgg
This is great.

As an extension, I was discussing with a friend a while ago how great
Stackoverflow is at capturing the contents of expert's brains. Is there a way
to achieve that on a broader scale without requiring the question-asking side
of things? Say you're a lab scientist and you have a small trick or bit of
informal insight, how could you be prompted in the right way to share it?

~~~
OJFord
Stack Exchange sites would love you to ask the question and then answer it
yourself. It's not exactly primary use-case though so I suppose it's not
obviously acceptable behaviour.

~~~
yitchelle
Anyone here remember Faqomatic [0] ? Remember using it around 2001. Very
similar to Stack Exchange except without the karma points.

[0] - [http://faqomatic.sourceforge.net/fom-
serve/cache/1.html](http://faqomatic.sourceforge.net/fom-serve/cache/1.html)

------
jbranchaud
For me, this is all about tracking my personal learning. I reference old posts
several times a week. I hope others can learn from it as well!

~~~
mihok
Really well done and nicely organized. Did you find yourself noticing the
overhead of writing these after learning something new? Or did you write them
as an afterthought later on? Did you pick certain things to include rather
than others?

Defiantly thinking about doing something similar to this sometime soon!!

~~~
jbranchaud
I generally take about 5 minutes at some point each evening to write up
something that I learned that day or earlier that week.

I've always viewed them as being quick and easy to write up which has taken
away the intimidation that can come with trying to write a big blog post.

------
nodesocket
My favoriate, check if port is in use:

[https://github.com/jbranchaud/til/blob/master/unix/check-
if-...](https://github.com/jbranchaud/til/blob/master/unix/check-if-a-port-is-
in-use.md)

Would be cool, to be able to collaborate and comment on each article. Perhaps,
make this entire thing GitHub gists or Wiki?

~~~
voltagex_
Pull requests will work there.

------
ShaunFinglas
Didn't know what a TIL was until just now.

However I've been doing something very similar for over a year now. Its called
a Developer Diary. I can't give credit for the talk that gave me this idea but
it's without doubt one of the best changes I've made to further myself.

It's the same idea, except the content is not public. I've toyed with the idea
but the content is very rough plus includes some very specific details. That
said I host the content so it's always in my browser as plain text files, so
able to search and navigate easily. I've blogged about the idea before, but
however you do it, make notes. Your future self will thank you.

[http://blog.shaunfinglas.co.uk/2014/09/developer-
diaries.htm...](http://blog.shaunfinglas.co.uk/2014/09/developer-diaries.html)

~~~
roryokane
> Didn't know what a TIL was until just now.

You’re supposed to say “TIL what a TIL is” :-) .

~~~
ShaunFinglas
TIL how I should have said I learned what a TIL is :)

------
cableshaft
I've been using [http://www.devarist.com](http://www.devarist.com) (which was
posted on HN back in August last year) to record little tidbits on an almost
daily basis, and it's been working pretty well.

If it's something I have to look up I try to make a habit of putting it in
there. Then I can do a search for the search phrase I'd normally make and it
pops right up, saves me a lot of time looking through the top couple of
documents for the nth time.

Devarist has Markdown support also. I've been using it to include little 20x20
icons for each programming language or technology so I can scan through the
past pages to see at a glance which technology each note applies to.

That having been said, doing it in Github might actually be better for the
public tidbits. Some things you learn kind of need to be kept private though
(like your own projects, or pertaining to your job, or pointing out things you
have trouble remembering to do).

~~~
mahmud
I use a Google Drive directory full of markdown notes for this purpose. Edit
with Writeily, the amazing Android markdown editory, or Macdown on desktop.
Done.

~~~
Raphmedia
Take a look at Quiver, that's what I've been using. It's markdown + code cells
+ text... I find it amazing for what it does. The evernode of code snippets.

[http://happenapps.com/#quiver](http://happenapps.com/#quiver)

~~~
tra3
Or nvAlt
([http://brettterpstra.com/projects/nvalt/](http://brettterpstra.com/projects/nvalt/)).
Everything is plaintext and support Markdown.

~~~
Raphmedia
Looks like a nice alternative, but it don't seems to do language specific
color coding for code.

------
stygiansonic
Great job, and even better idea for putting it into a git repo!

I've been keeping a sort of "development log" for the past few years where,
each day, I write a small blurb about what I've done, but more importantly,
what I've learned.

It's a similar idea to this, but obviously a lot less structured. (The use of
Markdown was a great idea, btw!) This helps you get an idea for how much you
have done if you ever find yourself questioning what you've been doing for the
past little while.

~~~
jbranchaud
It is fun to see what technologies I've been writing about the most over the
long run -- Vim and PostgreSQL seem to be the big ones!

------
kriro
I wonder how efficient this would be for non technical stuff. I like to read
quite a bit (commute by train) and usually marker and scribble in the books.
It's typically business, pop-science, philosophy or history etc...might end up
with a list like:

\- Visiblity, Feedback, Constraints, Mapping, Consistency, Affordance from
Design of Everyday Things

\- Maven, Salesperson, Connector from Tipping Point

\- 7 years' war cliff notes

I feel like it would get too big soon but it's a nice way of keeping track of
the interesting things you have discovered.

I'm also considering putting my entire "Ideas" board and possibly other boards
from Trello on Github instead.

Edit: Related question: Is there any way to keep a bibtex file in Github and
use it for citations in markup? That would be wonderful.

------
olejorgenb
I recently found out about `git log -G REGEX` (and -S)

This will filter all commits (ie. lines changed by the commit) by the REGEX
and report back the log for those.

With -S, commits with equal number of matches in added and removed lines are
ignored.

------
methodover
Something I find really interesting is how VIM takes up a huge chunk of the
TILs.

One of my personal quirks is I feel like those terminal-based editors consume
an undue amount of time and energy to learn and maintain. This TIL seems to
give a bit of extra evidence for that suspicion. Simpler options have been
available for years now (e.g., Sublime). In those rare moments when you do
need to edit files on a remote server, nano is always available.

~~~
morninj
I agree that the Vim learning curve is steeper, but many of these TILs veer
towards higher-level Vim wizardry--the kind of things that most Vim users will
never both learning (and will never need to). Many of them are also way beyond
the capacity of Sublime or Nano.

~~~
morninj
*bother learning

------
melling
I keep my org notes in a private repo, which I often edit directly on Github.
I organize by topic. e.g. Cooking, Photoshop, Haskell, yoga, drawing, Go,
Emacs, vim, etc. I use my two README.org to organize the information. One is
for all topics and the second is a much smaller immediate README that I want
to view daily. I keep it pruned since the main README has all the references.

I'd like to breakout topics of general interest but I feel that I'd need to be
more organized. Last week, however, I did move my Ergonomic Notes (e.g. RSI,
keyboards, mice, programming by voice) to a public repo.

[https://github.com/melling/ErgonomicNotes](https://github.com/melling/ErgonomicNotes)

I also find it helpful to group topics and create menus in the org files:

Menu: Ergonomic Keyboards | Ergonomic Mice | Programming by Voice | RSI

------
jonalmeida
This is cool. For one of my internships, every time I learned something I
wrote it out with a 'TIL' prefixed and put it in our group chat.

At the end of the internship, I grepped the logs for all those lines but never
found anything useful worth re-visiting. :)

------
bittersweet
I love this! I started doing this years ago as well via a simple notes dir in
my dotfiles (example [1]), and actually wrote a small tool to help me with it
[2]. This way I can list all the note files I have (cli, zsh, vim etc) and
pretty print them a bit and have search if I can't remember the exact thing :)

[1]:
[https://github.com/bittersweet/dotfiles/blob/master/notes/gi...](https://github.com/bittersweet/dotfiles/blob/master/notes/git.txt)

[2]:
[https://github.com/bittersweet/notes](https://github.com/bittersweet/notes)

------
woodruffw
Great idea!

By the way, minor note on unix/copying-file-contents-to-system-paste-
buffer.md:

"pbcopy" is an OS X only utility, but X11 (Linux, BSD) has a rough analogue in
the form of "xclip". Just in case you ever switch over ;)

~~~
ladzoppelin
Thank you. I was so excited when I read this, it would of been such a letdown.

------
emp
I've been using Notational Velocity for a while in this way. It's wonderful.
Synced on Dropbox, my "little black book" is available on any device I have at
hand, and instantly searchable.

------
bewe42
I have been taking (plain text) notes for many years. My approach is to write
down immediately everything I figure out. The biggest issue I have is to
retrieve notes effectively. And to be faster creating them. I started
experimenting with how to make the whole process better and have built
[http://codingbrain.com](http://codingbrain.com). It's basically a better
search, copy-n-paste, history tool that works on local markdown files.

My other idea I'm currently working on is to provide a different kind of
bookmarking service that gives you an option to write down what you have
learned from that bookmark. I think one of the best way to get better is to
always try to repeat from memory what I have learned. The service is supposed
to compare my summary with the original content, maybe offer some Anki style
repetition training etc

------
TimJRobinson
I do this with my blog. Every time I discover something unexpected or google
something and don't get a good answer I like to write a blog post with that
search term as the title and the solution to the problem.

Helps both commit the information to memory and help others in the future. Who
said blogging had to be long form posts anyway?

------
Flimm
When I learn something, I ask a question on Stack Overflow and I answer it
myself, which is perfectly allowed and encouraged. The advantage with putting
it on Stack Overflow is that I get corrections or better answers over time.

------
eecks
I have done something previously in the past but never keep it up that long. I
like your layout. Was it all manual? That is - did you have to do the
index/readme manually?

~~~
jbranchaud
yes, I just placed each post alphabetically as I went.

~~~
0942v8653
Your commit messages are remarkably consistent :)

------
kamaal
Brilliant. This idea can be extended beyond tech.

Its common for a lot of musicians to keep practice log books. Trying to learn
something new every day is an amazing idea, in area of work.

------
voltagex_
I've had
[https://github.com/voltagex/junkcode/blob/master/Bash/comman...](https://github.com/voltagex/junkcode/blob/master/Bash/commands.md)
for a while but this is _much_ better.

I have to resist the urge to automate the ToC, though.

Edit: [https://github.com/voltagex/til](https://github.com/voltagex/til)

------
xgordon
Personally I have "knowlede base" document where are useful hints, commands
and step-by-step guides how to do something (like:
configure/code/export/filter etc.).

Other text file contains useful links with other's step-by-step guide founded
on internet.

Github is interesting idea since it's available from my personal and working
laptop. Till now i have used google docs/gmail draft messages.

------
tieubao
TIL is the cool concept for all people and topics, not just for developers or
engineering related stuffs.

I apply the simple way to organize them via Github Issue --
[https://github.com/tieubao/til/issues](https://github.com/tieubao/til/issues)

It's good for us in term of effortless and easy for reference ...

------
StavrosK
I just thought about doing this for learning hardware design a few hours ago.
I started dabbling a while ago, and writing down the things I learnt would
result in a concise document full of compressed knowledge. I'll probably use a
different format (a continuously updated page on my site), but it's the same
idea. Thanks for sharing!

------
schnika
[https://github.com/jbranchaud/til/blob/master/ruby/comparing...](https://github.com/jbranchaud/til/blob/master/ruby/comparing-
arrays-in-rspec.md#comparing-arrays-in-rspec)

I really like the .contain_exactly() matcher for this purpose as well :)

------
0xCMP
Ah yea this is awesome. I like this idea more than how I do my notes[0]
because I don't actually do most of my notes in github where this makes more
sense to actually commit and know when to commit/push.

[0]:[https://github.com/cmpis/notes](https://github.com/cmpis/notes)

------
antoaravinth
This is great idea. I always had other way to keep my learnings at a single
place, for which I have used Anki tool. At times, down the line I open my Anki
tool and see those flash cards on how much I really remember. This was very
fun to me and also at the same time very good learning.

Git looks to be an awesome idea. Thanks for your efforts.

------
donretag
The Pragmatic Programmer book talked about creating a solutions log, which can
be consulted at a later time.

------
dwaxe
I was hoping you were a Reddit bot who's been farming /r/todayilearned for the
last year.

------
oxplot
I've been doing this for years but sparingly and in my blog (in fact my blog's
heading reads "because I forget simple little things too soon"). Never
occurred to me to git it as that makes it effortless to record just about
everything. Thanks for the idea.

------
minhajuddin
I extracted a static site out of this and put it up at
[http://til.zammu.in/](http://til.zammu.in/) . This kind of content is great
for Static Sites as people can easily contribute to them using Github Pull
Requests.

------
deadcast
Wow cool idea! I've kind of already been doing something like this but posting
little code snippets to my twitter account for later reference. I like the
idea of creating a repo like the OP and not having to spam my followers with
my random, crappy code! :~) Cheers!

------
reacharavindh
I've been keeping my version of TILs on Quiver and Notes. You've inspired me
to organize them together into Github and share. I'm thinking of making Gists
for each categories instead of individual files though. Any reason why you
created individual files?

------
raddad
Great idea. As someone who suffers sometimers, as opposed to Alzheimer, I tend
to forget. I'll know I knew that at some point, and this list would be just
the ticket.

I tell people my memory is excellent but my retrieval tends to suck bad
sometimes. Random access memory?

------
cevaris
would be nice to auto generate these TIL readmes based off personal stack
overflow upvotes.

~~~
voltagex_
You'd have to capture the action with a browser extension - it doesn't look
like "who upvoted what" is exposed at all:
[http://data.stackexchange.com/stackoverflow/query/new](http://data.stackexchange.com/stackoverflow/query/new)

------
elwell
Smart to put it on GitHub. Works as a nice hack to appear super productive on
public profile. My day-to-day commits are all private, so I look slow/lazy to
the vagabond internet surfer or startup CTO hiring based on GitHub presence.

------
benatkin
This is awesome. It makes me want to do something like it. How about if
instead of putting it in a public repo, I put it in a private repo that I can
use as a draft for a blog, so I could use it to gradually build an audience.

------
topherjaynes
A great reminder that everyday we do learn something and should be thoughtful
about documenting it. We often move to fast to realize that what we
discovered, to get something down, is unique. Thanks for sharing and keep it
up!

------
dbailey5
Great Idea! started one too.. decided to hack together a quick script to build
my readme
[https://github.com/drewbailey/til](https://github.com/drewbailey/til)

------
autotune
You mean I could've scored upvotes by posting my wiki on here? Well better
late than never...

[https://github.com/autotune/wiki](https://github.com/autotune/wiki)

------
franzwong
This idea is awesome that it makes learning more effective by self-explaining
what we've learnt, and the result can be referenced by ourselves in the future
using the language of our own.

------
macromaniac
I've been putting each fact I learn as a line in a til.yaml file for the last
6 months. I grep through all my til.yaml files any time I need to remember
something. It's been useful.

------
__Joker
This, daily TIL, like dairy has for me is nice way of introspection. I find
whenever, if nothing else, I think for 5 mins about what I did everyday had
immense value for me personally.

------
destroyer998
That is an awesome idea.

------
dxhdr
I don't understand the enthusiasm for this or the rampant forking going on.

Most of these fall firmly under "let me google that for you."

    
    
      How do I check my Ubuntu version?
      How do I split a tmux window?
      How do I expand a clojure macro?

Repeat for 300 more easily google-able questions... Actually I just realized,
maybe I'm too old. If that's the case, here's a great tool:
[http://lmgtfy.com/?q=How+do+I+check+my+Ubuntu+version%3F](http://lmgtfy.com/?q=How+do+I+check+my+Ubuntu+version%3F)

~~~
salvadors
Before googling for something you need to actually realise first that there's
something that you don't know, but could.

Lots of useful things don't fit that pattern.

To take one example from here, I use 'pry' regularly, but before reading
[https://github.com/jbranchaud/til/blob/master/ruby/editing-c...](https://github.com/jbranchaud/til/blob/master/ruby/editing-
code-in-pry.md), I didn't even think to wonder whether there was a way to fire
up an editor from within it. It's not something I've ever actively _needed_ ,
but it's a very useful shortcut now that I know about it.

------
anttuofbodom
I keep writing things down everywhere: OSX Notes, org-mode, Evernote, paper.
Having it in one (public) GitHub repo is a great idea!

~~~
sbov
I used to use Evernote, now I use Microsoft OneNote. I can't imagine GitHub
would be any easier to use. Your problem is likely one of consistency rather
than the medium itself.

------
leonardinius
This is great.

BTW I've lurked that concept from you just recently and started doing the same
stuff on Sunday. Thanks for inspiration.

------
state
Would be nice to connect this to Twitter and get an update when a new one
appears. Have you thought of doing that?

~~~
kragniz
That's what newsfeeds are for. You can get an atom feed of the latest commits
to any repo via github:

    
    
        https://github.com/jbranchaud/til/commits/master.atom

~~~
voltagex_
Thanks for that. The HTML encoding is... interesting there - &lt; is there,
but > isn't replaced by &gt;. How on earth is a feed reader meant to parse
that?

~~~
deathanatos
In XML, you don't _need_ to escape >, IIRC. So, it would seem some programmer
is either lazy here, or trying to save bytes. You MUST escape <, as otherwise
it looks like the start of a tag. Note that the content of the tag you see
that in is serialized HTML, too, so at that point, there's HTML in the XML.
(and not very good HTML…)

------
ghjnut
I know this isn't intended to be stackoverflow, but it'd be cool to have a way
to get feedback on things.

------
theyCallMeSwift
This is one of the most interesting posts I've seen on HN in a while. Great
job, keep up the good work!

------
arvinsim
This just convinced to just don't bother with using github pages and use the
README.md file instead

------
ymse
Lots of good stuff here. I would appreciate a wiki-style site with short
answers like these instead of searching {Google,DDG} and trawling the
[stackoverflow] results.

Not all of them are necessarily good practice though. This made me chuckle:

 _What Is The Current [Git] Branch?_

    
    
        git rev-parse --abbrev-ref HEAD
    

(if you're reading this jbranchaud, try `git branch` :p)

~~~
lunixbochs
`git branch` also determines whether your working tree is modified. This can
be extremely slow on large repos.

`git rev-parse --abbrev-ref HEAD` is very inexpensive in comparison, and
doesn't print anything extra you might need to parse out if you're in a shell
script.

------
feed16
I wish technology was simple enough that writing these TILs would be
unnecessary.

------
jsgrahamus
I thought TIL stood for Threaded Interpretive Language, as per Forth or Factor

------
ngeek
Worthy personal cheat-sheet for own and others use. A good idea though.

------
dorfsmay
Are github issues indexed as well as blog entries by search engine?

------
ausjke
great idea, I use drupal to keep some notes myself, but this is concise and
easier to access, when this list grows you may want to add a search button to
it?

------
gansai
thanks for sharing. I remember seeing a reddit section for TIL which is
general. I too had some thoughts regarding the same to publish in my blog.

------
tarunkotia
Thank you for sharing this! Thank you!

------
jamesmccann
Really cool repo - nice work!

------
abrookewood
This is a fantastic idea!

------
vctsg3
What does TIL stand for?

~~~
krapp
Today I Learned - from a popular subreddit /r/todayilearned/

------
jeshan25
love it! great work keep it up!

