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.
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!
This worked! Just a couple of problems. Hashrocket needs dev version of Ruby and pg wouldn't build, but StackOverflow told me I needed to install libpq-dev. Then I had to install postgres, but wasn't hard.
I blame that I've been writing "SQL" all day and have unconsciously associated three letter non English words and "Is acronym". (Although I guess "git" is a word, although not typically part of my colloquial vocabulary... Maybe if I was a curmudgeon ~50 years ago as opposed to being a curmudgeon now)
> Hyperpedantically, "SQL" is an initialism, but not an
> acronym
I really wish people would stop posting this - I feel like I only ever see it posted here, too.
OED's first entry on "acronym, n":
> A group of initial letters used as an abbreviation for
> a name or expression, each letter or part being
> pronounced separately; an initialism (such as ATM, TLS)
OED's second entry on "acronym, n":
> A word formed from the initial letters of other words
> or (occas.) from the initial parts of syllables taken
> from other words, the whole being pronounced as a single
> word (such as NATO, RADA)
OED's entry on "initialism, n":
> The use of initials; a significative group of initial
> letters. Now spec. a group of initial letters used as
> an abbreviation for a name or expression, each letter
> or part being pronounced separately
SQL is both an acronym and an initialism. The Wikipedia article on "initialism" it is guilty of using very selective quotes in its "citation".
Perhaps even more pedantically, SQL is actually an abbreviation of an acronym. It was originally conceived as SEQUEL for Structured English QUEry Language[0], only being abbreviated to SQL for legal purposes (SEQUEL was already trademarked).
For this, and sheer convenience, I take the stance that it should always be pronounced as "sequel" rather than pronouncing each letter.
I skimmed the Wikipedia article and didn't notice any mention of removing the initialism. I did find a note that the original language standard did define the "es queue el" pronunciation, but since no one is standards compliant anyway, I think I'll still stick with "sequel" (:
Someone there also keeps saying that the second reference on the article explicitly says it's not an acronym, but the current second source explicitly says it is, so... ¯\_(ツ)_/¯
I'm forced to disagree with you here. I take the stance that it should always be pronounced as "squirrel", because seriously, who doesn't like squirrels? :)
Try turning on "Ask Google for Suggestions". That should do the trick.
Normal spellcheck is a dictionary. "Ask" is server-side magic that is context-aware and goes beyond dictionaries. After turning it on, try "icland is an icland" to be amused. Or "Brittaney Spears".
I normally don't go on about this, but since this thread is about TILs... :)
I'd suggest google dictionary plugin. Double click on anything on the page and you get the definition as a small popup/tool-tip.
That's how even I learned what Initialism is.
There are varied opinions about this topic. Several Sources of Truth and Righteousness advise against "sequel"[1][2], However it seems that in a certain building in WA "sequel" is preferred [3].
Redmond also colloquially refers to the product Microsoft SQL Server as just SQL (pronounced "sequel"), as in, "We're trying sell more SQL licenses," or, "Is the backing DB for your SAP installation Oracle or SQL?"
This has led to some confusion.
Additionally, as I pointed out in a sibling comment up the chain somewhere, SQL is an abbreviation of the original acronym, SEQUEL, for Structured English QUEry Language. It seems with this provenance that the "sequel" pronunciation is more historically correct.
FYI: The difference between an acronym and initialism is that the abbreviation formed with initialisms is not pronounced as a word, rather you say the individual letters, such as FBI (Federal Bureau of Investigation), CIA (Central Intelligence Agency), and DVD (Digital Video Disk*). Edit: Not a criticism, I just I didn't know.
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.
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.
I do this when learning a new language I know I want to know most of the STL of. Of course, most languages have similar functions for strings, lists, etc., but it helps a lot. Currently doing it for Elixir.
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?
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.
and also tagging it in such a way that it can be found. I have thought about this before too - would be a great supplement to something like wikipedia.
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!!
Cool idea! I'll definitely be stealing this. Have you thought of making it searchable or generating a site your posts? Anything you would have wished you had done differently since you started it?
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.
I've been using 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).
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.
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.
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.
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.
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.
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.
I'm learning Emacs and you are right, you need time and energy. They are powerful tools so that's expected. I'm enjoying the journey, but it's not for everybody.
If I'm not mistaken tpope, one of the most prolific members of the Vim community works at Hashrocket. I can imagine just being around him will result in an endless stream of Vim TILs.
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.
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 :)
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.
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. 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
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?
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.
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?
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.
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!
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.
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.
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.
I extracted a static site out of this and put it up at http://til.zammu.in/ . This kind of content is great for Static Sites as people can easily contribute to them using Github Pull Requests.
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!
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?
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?
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.
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.
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!
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.
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.
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.
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..., 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.
1. Usually you need to look through multiple posts to find your answer. It's still quick, but remembering you wrote up about it before and searching for it and seeing your more precise note about it is faster.
2. I've been using mine to also keep track of tools I encounter but don't have time to investigate, or for hotkeys or features in specific applications that I didn't realize were there before. I just took a quick glance at my old notes and was reminded about a feature in XCode that I had completely forgotten about since I wrote the note.
3. It's great for a refresher before diving back into a language you've had on the backburner for awhile, and/or before going in for interviews where you know you're going to be quizzed on random knowledge from past languages you've used before but maybe not recently.
I think the added value in this is that by doing it then you can get back to the learning process going on in your brain at the time you wrote about it and this could resonate with many other stored but half-forgotten memories (for example that project that you were working on when you wrote that note, bringing in additional information).
Moreover, nothing is more useful to the understanding of a subject than trying to explain it to someone else, including your future self (you can only say to have fully understand Relativity when you are able to explain it your grandparents? :) ) That's why I guess it's being seen as a good thing.
Sometimes it takes quite a bit of effort to get the results you need.
For example when you search for something specific that uses very common words. I'm not great at searching either, often I have to read through lots of results to get the answer I'm looking for.
Having a personal repository of curated results seems like a good resource to have.
You google for them, then you rephrase to be concise to what you wanted, and in doing so help commit them to memory, and commit them into a publicly visible resource -- where somebody else might find them by googling.
It's not REALLY useful, but at the same time it's really useful.
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.
Thanks for that. The HTML encoding is... interesting there - < is there, but > isn't replaced by >. How on earth is a feed reader meant to parse that?
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…)
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)
`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.
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?
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.