Ask HN: Why do you keep a personal knowledge base? - <AUTHOR> Why do you keep a personal knowledge base? What are you trying to accomplish by saving content? What insights do you want to discover? What tasks do you want to achieve? <comment><USER3> [http://www.catb.org/jargon/html/personality.html](http://www.catb.org/jargon/html/personality.html)

 _Although high general intelligence is common among hackers, it is not the sine qua non one might expect. Another trait is probably even more important: the ability to mentally absorb, retain, and reference large amounts of 'meaningless' detail, trusting to later experience to give it context and meaning. A person of merely average analytical intelligence who has this trait can become an effective hacker, but a creative genius who lacks it will swiftly find himself outdistanced by people who routinely upload the contents of thick reference manuals into their brains._

I'm a researcher. Absorbing data in a "blue sky" kind of way ("no idea if i'll need this, this doesn't serve any explicit purpose, but hey it seems interesting") is a survival trait.

<comment><USER4> Spend half your time learning many things shallowly and half your time learning a few things deeply -- your resourcefulness will know no bound.

<comment><USER5> This. I take notes of concepts that I don't clearly understand/agree but have a gut feeling that is interesting, and as I read it repeteadly overtime I often get surprised by how the concept evolves on my mind.

</comment></comment></comment><comment><USER6> Uses of a personal knowledge base:

\- Recording and crystallizing ideas: most deep thoughts and informed opinions about things often don't materialize on first try. They are the result of many iterations, pivots and revisions. Writing them down helps one regain context quickly after leaving them for a while, which allows one to make incremental progress without being susceptible to the fallibility of memory searches. Writing is also frequently the best way to teach oneself something and to push oneself to identify gaps in knowledge and thinking.

\- Sleep aid: committing ideas to (virtual) paper helps unburden them from one's active memory. This has inadvertent therapeutic effects as well. I'm one of those people who has tons of ideas racing in my head all the time, so this helps me sleep at night. On a related note, Cognitive Behavioral Therapy or CBT (for managing emotions) can also be done through written therapy.

\- Business ideas/hobby ideas: list of stuff to do when the right combination of opportunities arises. You can have ideas but not all ideas are ripe for execution. Having them in a cache as one is constantly monitoring the environment helps one time their deployment better.

\- Latent solutions to problems: Richard Feynman had a trick where he'd be constantly thinking about 6 problems at any given time. When an attack presented itself due to sheer chance, he was able to execute on it quickly, and make himself look like a genius when in fact he had been thinking about about the problem for a long time and was merely lying in wait for the right piece of the puzzle to come along.

\- Jokes/good turns of phrases: not for the purpose of plagiarism, but sometimes one needs a bon mot or an apt phrase for a presentation or piece of writing. Having a store of such phrases to synthesize from is much more reliable than drawing from memory alone. Many good writers/presenters aren't Mozart-like geniuses who can produce polished work on-demand: many maintain disciplines like this to aid in producing quality work even when their memory fails them.

\- Travel destinations: sometimes we read about an interesting place and tell ourselves "we'll visit some day" but then never do because when the next long weekend comes up, we'd have forgotten all about it. Keeping a list helps one to quickly converge on a destination when a vacation opportunity arises.

<comment><AUTHOR> How do you retain/go back to those ideas? Or do you at all?

<comment><USER6> Yes I do. I keep everything in a single Google Docs document and re-read it from time to time. Maybe it's just me, but I always find it a rewarding experience. (ymmv)

</comment></comment></comment><comment><USER7> I've realized recently that I spend hours and hours a week reading and saving stuff to Evernote. Like I'm always in research mode. I think focused research is good for the career, but unfocused is just a distraction and waste of time. I save sooo much stuff and rarely go back to read it.

My one idea for recovering the lost/wasted time reading and saving this information is curating and publishing it online as blog posts for others to learn from. I've spent so much time categorizing an filtering through information out there, only to have it sitting in a private file, might as well make it public for humanity's benefit (and my own).

<comment><USER8> This is exactly my experience too. I almost never go back to my notes. Only value creating notes is actual act of creating notes, it doesn't really matter what you use for it.

<comment><USER9> You suggest your not going back to your notes. Is that because it's not convenient out because you don't have a good indexing system in place?

</comment></comment></comment><comment><USER10> For haven's sake!

Don't use the online services to store your personal information!

That is stupidest thing that can be.

First, sooner or later, your information may be stolen and distributed online just like apples: [https://raidforums.com/Announcement-Database-Index-CLICK- ME](https://raidforums.com/Announcement-Database-Index-CLICK-ME)

Second, find yourself a computer, device, where you can store your data offline, and not online.

I recommend reading the online article on SASS or Service As Software Substitute: [https://www.gnu.org/philosophy/who-does-that-server- really-s...](https://www.gnu.org/philosophy/who-does-that-server-really- serve.html)

and using free software, free as in freedom to do what you want with it to keep your personal knowledge.

Recommended software:

Cherrytree: [https://www.giuspen.com/cherrytree/](https://www.giuspen.com/cherrytree/) It works just fine for taking notes.

GNU Emacs: [http://www.gnu.org/s/emacs](http://www.gnu.org/s/emacs) It has notes, reminders, calenders, you name it. it has Org mode and note taking features that blow your mind.

Vym mind mapping tool [http://www.insilmaril.de/vym/](http://www.insilmaril.de/vym/)

and plethora of notes and ming mapping tools available that free software is offering. Search for packages: [https://www.hyperbola.info/](https://www.hyperbola.info/)

</comment><comment><USER11> My reason for keeping a knowledge base is to forget less of what I learn every day.

I used to use Evernote for this but it wasn't quite working because of constant context switching and lack of spaced repetition.

So I wrote open source program called Dnote [0] and have been use it every day for the last year to store my learning. To minimize distraction, it works as browser extensions, cli, and IDE plugin. And I automated the spaced repetition by writing a cron job to send me digests every Friday.

[0] - [https://github.com/dnote-io/cli](https://github.com/dnote-io/cli)

</comment><comment><USER12> I'm really into taking notes -- both written and typed. The tactile part of taking notes helps me register things better and the notes themselves greatly help with recall. For written notes, I use Peter Pauper notebooks ([https://www.peterpauper.com/](https://www.peterpauper.com/)) and Staedtler pens ([https://www.staedtler.com/intl/en/products/products-for- colo...](https://www.staedtler.com/intl/en/products/products-for- colouring/fineliners/triplus-fineliner-334-triangular-fineliner-334-sb10/)). I'm a sucker for good stationery. For typed notes, I use Google Keep on my phone and the Notes app on my Mac.

Lately I've been using screen recording to create video notes. I developed an app called Outclip ([https://checkoutclip.com](https://checkoutclip.com)) with my buddy. Although the app is meant for a different purpose (bug reporting) I use it to screen record as I'm doing things (like configuring an AWS service for instance) in case I have to repeat the steps later.

</comment><comment><USER13> Refreshing the context when I resume some project.

I get my mind back in the groove from sometimes years ago by just opening my orgmode section or file.

The brain finds the connections again and the thought train picks up and off I go.

As a side note, I use orgmode and I wouldn't consider any other program (that I know of) for a specific reason -

What other setup could I be GUARANTEED of being able to pickup in 5, 10 ,30 years and have it work just as it did?

A paper notebook for sure but orgmode gives me much more (and less in some areas).

orgmode and emacs lets me INVEST my time and effort and know I won't lose the data and time because some webservice thing went down/changed business models/lost interest.

<comment><USER14> You bring up a good point about longevity. I currently use OneNote which was easy to be effective immediately taking notes with rich content, but I know there's always the risk of it shutting down forcing me to deal with the process of recovering my notes onto a different platform.

<comment><USER13> I've been impressed that microsoft has actually managed to keep pushing on onenote without abandoning it.

It's taken a while but it seems to have built some community and happy users.

But, yeah, I don't think open standards or longevity probably factored too much into the storage implementation or features.

I would think something built on top of annontated pdfs would get some of the features and flavor of onenote but I haven't seen anything attempt it.

</comment></comment></comment><comment><USER15> The key question when reading any article/book/whatever is the following: "if anything, what is actually important enough to remember from this article?", or in the case of PKBs: "What should be in my PKB and what should be discarded?"

By asking yourself this question explicitly and then actually writing down the key points you practice your own judgment on what is worth remembering and what is not.

Now the added benefit of a PKB is that you can actually keep these key points in a central location and reference them in other contexts or share them with others. You are basically doing prework for later (research) questions you might have. However I would say the biggest benefit is the process; explicitly writing down what is important and discarding what is not.

For more on this subject I recommend following @fortelabs on Twitter. He does a lot of interesting writing on the subject.

</comment><comment><USER16> If anyone is interested, the term for this field is "personal knowledge management."

There are a few basic principles that can help keep the system organized and useful.

Personally I use Google Keep and OneNote: every weekend I funnel the unstructured thoughts, ideas and realizations into a structured format organized in OneNote. It takes a bit of time, but I can look back on any of my notes on programming or real estate or marketing or psychology and instantly find them useful.

<comment><USER17> Please, for the love of all that is open source, someone create an open alternative to OneNote. It's easily one of the best Microsoft tools ever, and there doesn't seem to be a good equivalent. It also seems like the perfect pinboard-style lifestyle business.

<comment><USER18> The problem is that thiy type of tool needs mobile apps for both iOS and Android before people will use it.

Doable, but much more effort than a first attempt on bookmarking.

<comment><USER19> For early adopters it would be enough to have a great import functionality. There are lots of mobile note taking apps that support cloud saves or exports/saves in open formats, so people could use one of them and save to a folder on Dropbox or Gdrive and have the main app source content from there.

</comment></comment></comment></comment><comment><USER20> I used to keep a tonne of stuff in Evernote, but have since moved to Standard Notes[1]. I generally have everything super organized, but allow the overall collection of knowledge to look messy. A bit like our brains, knowledge dumps can appear messy, but are actually organized.

[1] [https://standardnotes.org/](https://standardnotes.org/)

</comment><comment><USER21> Emacs noob here. I came to Emacs through learning [http://overtone.github.io/](http://overtone.github.io/) and see a lot of personal knowledge management tools that use Emacs (Org mode). Can anyone recommend some engaging Emacs tutorials to help me find my bearings?

</comment><comment><USER22> I journal to keep a health record. I know someone who had cancer and was able to prove with photos that their chemo wasn't working, the cancer was getting worse, and get their chemo changed sooner rather than later. A personal health database can be a powerful tool for health management. I also keep articles pertinent to my health, plus links to interesting HN comments, etc.

When trying to decide where to move next, I kept a lot of information on various places that were under consideration. This included not only US states and cities, but at least one other country as well.

I did a lot of therapy in my youth. I find that having stuff I wrote that I can refer back to is enormously helpful for my state of mind, for keeping my goals on track, for tracking progress, etc.

I see the world differently from most people. If I don't keep track of links to articles, comments and research, I get dismissed a lot as crazy, not knowing what the hell I am talking about, etc. and other people typically do not back me up, even if I am saying it in the same forum where I originally read the information.

So I try to keep track of certain kinds of info so that the next time I make a comment on that subject, I can back it up without having to put up with so much disrespectful crap off of people. They don't have to agree with me or see the world the way I do, but I don't care to wallow in their contempt either. Supporting links goes a long way towards preventing the worst of such behavior.

(There are probably other reasons. This answer not guaranteed to be comprehensive.)

</comment><comment><USER23> As a side note, there is an online course called "Building a Second Brain" that shows how to create an effective personal knowledge base: [https://www.buildingasecondbrain.com/](https://www.buildingasecondbrain.com/)

It's kinda pricey, and I'm taking the course right now. But I find it's pretty effective overall. It uses evernote as the default platform for your PKM.

<comment><USER24> Wow, that is pricey. $399 is pretty steep, it seems. How has it helped you? And do you think the price was worth it?

<comment><USER23> He's coming out with a book so you might want to wait on it. A proper notetaking system is important to me, so it was worth it for me, but I'd wait on the book because he tends to ramble on the podcast.

It's basically an organization system that serves as an adjunct to "getting things done". GTD's system relies on "filing non-actionable items", but it doesn't really explain how to do that. Traditionally, people would rely on filing cabinets or whatever. BASB relies on evernote to keep basically anything information in there that can quickly be retrieved (becuase you're going to forget years later). And when you later need to the information, you can criss-cross the data for more creative output.

If you are a fan of emacs org-mode (as I am), here's an article that shows how to use it with BASB: [https://medium.com/@mwfogleman/implementing-a-second- brain-i...](https://medium.com/@mwfogleman/implementing-a-second-brain-in- emacs-and-org-mode-ef0e44fb7ca5)

it goes into the process a little bit, so it can help you decide if the course is worth it for you or not.

<comment><USER25> I wrote that post, the post you linked is the second part of a two-part series. The first part is here: [https://praxis.fortelabs.co/building-a- second-brain-in-emacs...](https://praxis.fortelabs.co/building-a-second-brain- in-emacs-and-org-mode-faa20ae06fc)

</comment></comment></comment></comment><comment><USER26> About fifteen years ago I started to use a wiki as my personal knowledge base. Since then I've added several thousands pages. Last year I started using Evernote, primarily because it works on the phone syncs with my desktop, and since then I don't use the wiki much. The good thing about Evernote is that you can export the notes to xml, so if they ever stop, I still have access to my notes.

I started to use the wiki as a notebook for problems that were too complicated to solve in one day. Plus it was a good way to keep these notes together, searchable, from home and work. I started to use it for installation and configuration manuals for applications that I had to maintain. I did keep work related stuff in it, but only general things like how to setup a webserver.

</comment><comment><USER5> My notes are the base of my day to day. I use simple txt files synced with my phone, can't stand the lag of opening OneNote and Evernote and the bugs that always deleted my items on Wunderlist. I curate everything weekly at least, try to keep the content easy to read in 10 minutes or so for the main file (tactics and strategies is the name of this file, but I put a lot information on it, more about below). I have a lot of these txt, the main ones being tasks, tactics and strategy, accounting and a lot others for personal projects, hobbies and other subjects.

The task file is the one always opened, there are my pressing issues and there I'll note anything that later I'll pass to the other files. The most important though is the tactics/strategy one, where I write details, thoughts of my life, business strategies and general stuff that I like to read at least every week, the projects I want to do next, hobbies I want to try, advice that I like to read, and even if I have some of this etched on my mind sometimes it's a great north on a confusing day. It's great to read about this idea I had a week ago and now completely forgot about because I was focused at the current issue. Writing is also great to organize the thoughts, I had so many breakthroughs just by reading and writing on these files. It's an extension of my memory and my process.

<comment><AUTHOR> How do you go back to your tactics/strategy notes? For me, I never stumble across old ideas when they would actually be relevant, but systemic review of these ideas seems like a big hassle.

<comment><USER19> This is where you would add in other techniques to aid you.

I don't know how well it works but the zettelkasten method is a way to organise your notes contextually, with only a little manual overhead. You can also add in what they call "structural notes" (i.e. tables of content) to let you quickly find your way. This would aid you in building up a mental map if you will of what notes you have, and to let you quickly find whatever you can't remember.

Then you can do things like SRS flashcards to continually refresh your memory about topics. They're originally meant for just learning things in the first place but they could easily be adapted to keep throwing back your ideas at you at irregular intervals. That keeps the ideas floating around in your mind without you having to manually go and read them.

</comment></comment></comment><comment><USER27> I have three modes when it comes to my career and skill development.

\- learning what I need to know about my specific job (institutional knowledge). Even if my title is "Senior Developer", in reality I usually have a fair amount of architectural level responsibilities and meetings with C level of people working at small companies. For that, I ask a lot of questions and take notes with Evernote or if I take notes on paper, I take a picture. Evernote is surprisingly good translating my writing to text for searching.

I keep a personal knowledge base so I can prepare for a meeting and be ready to answer questions.

\- If I am introducing a new to the company technology, process or framework, I have a list of links that fellow developers or my manager (who is technical) to review.

\- getting "interview ready". About three months before I start seriously looking for a job,I freshen up on architectural subjects and make sure I can talk the talk. I keep a list of bookmarks and PDFs. Again, I am at a point in my career where no one asks me to do a whiteboard coding session but they do want to talk architecture. As an in the weeds developer, I know sound architecture but I don't talk about it every day.

\- I have a list of topic areas that I need to study to feel in the gaps to really consider myself a "full stack developer/architect". But I'm usually only focused on one thing at the time. But if I find an interesting "getting started" walk through about another topic that's on my radar, I bookmark under a folder "Things to Learn". Right now, that's getting deeper into AWS, Docker, NodeJS, and React.

</comment><comment><USER28> I keep a record of any info that I learn (organized by topic) in Workflowy. I even keep a note of everything I do.

Basically my goal is to decrease the chance of going through the same process of learning something, multiple times.

I also think of it as a cache for Google. I sometimes search my knowledge base before searching Google.

For example: how to delete duplicate lines in emacs? I just found it in my knowledge base in under 3 seconds but would have taken more time googling (also more distracting)

<comment><USER29> You hit the nail on the head. I run a personal instance of Dokuwiki, and find that this is my L1 cache for knowledge. Vim, Git, Linux... all the stuff I use the most often is there and organized in the way I find optimal.

It's also very convenient to have a reference on various devices that you own. Specs, links to manuals, common troubleshooting steps and an inbox of future work and enhancements.

</comment></comment><comment><USER30> I don't know about others but I actually don't. I found that I am wired to remember search terms exactly as is (not saying photographically) or at least sequences of searches and I let Google do the rest. I have been able to go back to topics I had researched years ago and almost retrace my search and find what I found earlier after many years. Must be why I am a "breadth" kind of person.

<comment><AUTHOR> Very interesting... what about more tacit knowledge (ideas, advice, etc)?

<comment><USER30> Same. Especially with ideas I have a mental map. For instance I find myself revisiting the topic of type systems every 3-4 years (don't me ask me why - <USER2> just am a sucker that way) and each time I find it a lot easier to revisit my last mental breadcrumbs rather falling back on books or notes I may have taken. I think laziness has honed me this way.

</comment></comment></comment><comment><USER31> Interesting that the question is why and not how. I do it because the same material (say calculus) can be presented in many different ways, but my brain learned the material by following the steps in logic that I used the first time.

I've found with several groups of material that reconnecting your brain's old steps in logic is way easier. The same material in a different way can feel interestingly very foreign.

</comment><comment><USER32> At work I maintain a running txt file that acts as a journal, a time tracker to help with timesheets, and a scratchpad for real-time notes (meeting notes, action items, email drafts, code/config). I start a new txt file each year. Each week starts with a header with some goals for the week. Each day follows a similar pattern of highlighting priorities for the day.

Since it's txt file it opens quickly, is easily scannable and searchable. I will sometimes tag entries with phrases that I know I'm more likely to use later when I'm looking for something. The txt file is stored in dropbox and is typically open all day on whatever device I happen to be on.

I've found that tools that organize by things by folder or tag (Notational Velocity, Evernote) don't work for me - I lose track of where something went. Organizing by calendar/time allows me to remember "oh, the thing I'm looking for occurred before this thing".

</comment><comment><USER33> I don't really have a KB, I store information in gmail, google docs, bookmarks, code repos, and txt files. I keep that information because it's useful for work and personal info I keep needing to come back to or could be useful in the future.

I have been saving most of mine as browser bookmarks, if I see something interesting or a solution on stack overflow I bookmark it. Then I export those bookmarks occasionally for safe keeping.

I usually just re-search google for a solution or item I'm looking for. But sometimes I search my bookmarks just to find exactly what I used before.

I also have a few snippets text file where I add interesting code related snippets. And some google docs files that are super easy to search too. Gmail is also a great tool, with boomerang so I can have something fly back in my inbox someday or a certain time of year.

All in all I rarely have a hard time finding anything I'm looking for by using google, bookmarks, code repos and snippets.

</comment><comment><USER34> I have a long term personal project that was well outside my capabilities when I first took it up. I've been using the same knowledge base app (Devon) that I used for my thesis and book. I find that it's much easier to recover stuff that I've "found out about" but didn't "learn".

</comment><comment><USER35> Diabetis runs in my family. So i tend to keep a diary where i track the Fasting and Post Prandial blood sugars of my parents. Over time (almost 8 years) it has given me an understanding to seasonal influences on diabetis and also how they are responding to a particular medicine.

</comment><comment><USER36> I recently read _How To Take Smart Notes_ and have been giving that approach a whirl. I'll re-evaluate after a month or so. The approach is pretty simple and didn't require an entire book to explain.

* Take notes throughout the day. I do this in a notebook.

* At the end of the day, collate those notes into long term storage with a link to the source material.

* When an idea or theme begins to arise, create a document to begin building on that idea, linking to the notes you've taken.

There's a little more regarding organization of notes and linking and so forth. I like the idea and in the short time that I've been practicing this approach I feel like I am getting a much deeper understanding of the texts that I read. Again, time will tell.

</comment><comment><USER37> I have been journaling since 13 years old. I starting my keeping a blog as a more permanent record when I was 17 years old. I then started systematically saving content to my computer that I'd come across, and finally moved it to the cloud. Most recently I've used the app/extension Pocket to archive and save content such as articles.

The best personal knowledge base is my blog.

The act of writing, of pasting work and thoughts and reflections and associations and tagging and organizing, allow me to really embed it in my own memory.

I really gotta process and write it in order for me to really get the most out of the knowledge base I'm saving.

Simply archiving and tagging is not enough.

</comment><comment><USER38> I keep a personal knowledge base with notes on people (SOs, colleges they're from, etc.), a todo list with notes for improvements to my process and workflows, passwords and logins, one liners and snippets (though the only one I use frequently these days are SQL snippets), notes on specific projects, ideas for blog posts in progress, various writing drafts, and old bios, CVs, and copy for personal promotion. It's al orgmode, so not much of a distinction between planning and creating, which I enjoy. You can as easily do literate coding in orgmode as write a blog post or keep notes.

</comment><comment><USER39> Most of the suggestions here involve organized, and perhaps structured, note taking. This is good and makes sense for personal knowledge/research.

That said when I saw 'personal knowledge base' my first thought was 'personal knowledge graph.' An advantage of knowledge graphs is the ability to start with public data sources and combine in your own information. Like, customizing DBPedia with your own scheme and data.

For organizations, ontology development, defined vocabularies, etc. make sense, but not for most individuals.

</comment><comment><USER40> To quote [https://www.jvt.me/posts/2017/06/25/blogumentation/](https://www.jvt.me/posts/2017/06/25/blogumentation/) I use blog posts as a way to write easily consumable howtos which I can refer back to when I have issues. I've also found it hugely popular with people finding my site via search engines as well as colleagues facing similar issues

</comment><comment><USER41> My question, what program would one use to start his/her own personal knowledge base? Or do I have to be a software developer and create my own?

<comment><USER42> This is what I am struggling with right now. Many people recommend org-mode but I don't like Emacs very much.

<comment><USER24> * A personal Wiki. * Evernote is a good choice and works across several devices. * Figure out a folder structure you like and just keep assorted .txt or .md files. * Google Sheets. * A commonplace book.

</comment></comment></comment><comment><USER43> I write my notes in a plain text file using Vim and just push them to my github repo for backup. I like this method because I can grep for keywords and find information quickly. The point of this personal knowledge is to record important information from books I've read, but so that I don't have to read through the whole book again to find information.

</comment><comment><USER44> I find it valuable to stay in control of the information that shapes me. Personal curation and modification of the used technology is part of this. Furthermore a personal archive can remain private or even give control over how private certain information remains.

Inside is mostly documentation, to-dos, recommendations of friends, notes, poems etc...

</comment><comment><USER45> I put project related information in Google Drive, organized in per project folders. I do this for both my personal and company projects; personal ones using my Google account, and company's using its G Suite account.

For technical notes, I use the blog[1].

\---

1\. [https://blog.budhajeewa.com/](https://blog.budhajeewa.com/)

</comment><comment><USER46> I like knowledge and learning, so I just used to bookmark articles that were interesting with the intention to read them in the future. I found that I have too much to read and not enough time. now I am working on a chrome extension bookmark that save a summarization of the article to a google drive and remind me to read it.

</comment><comment><USER47> There's this weird/ intersting program that was recommended to in a thread similar to this that maybe you should take a look at:

[https://github.com/synchrony/smsn](https://github.com/synchrony/smsn)

The explenation and thought process behind it seems a bit esoteric though.

</comment><comment><USER48> Writing is one of the best ways to learn. A knowledge base provides me with the material that I can use to produce my own thoughts. Unless you write fiction or you have already acquired some kind of deep knowledge about a subject, the process of research and collecting is essential for good writing.

</comment><comment><USER49> When I started in my current job, I was effectively the single administrator (servers, network(s), clients) at a small-ish company (~70 employees using PCs), and there was a landscape that already was the result of 10+ years of growth without any central planning.

TL;DR - I was thrown into a relatively complex environment with little help other than asking the two guys who had done this before me, both of which were rather busy (they had done the administration a side-business of sorts). (I still wonder how they managed to keep the IT infrastructure running, but in my first few months, many of our users told me how happy they were that I responded to their calls for help right away rather than "sometime next week".)

I used emacs' org-mode. I kept a file where I wrote down every little bit of information I could gather. After 12, maybe 15, months, I had memorized everything I needed to know and stopped taking notes. So my example might not fit your question all that well. But for the time I was getting to know this company's infrastructure, its servers, networks, and people, that .org file was a lifesaver.

</comment><comment><USER50> surprised that no one has mentioned TiddlyWiki ([https://tiddlywiki.com](https://tiddlywiki.com)) yet, its fairly popular for this sort of thing and very easy to get started.

</comment><comment><USER4> I keep notes of tasks, problems, solutions, caveats, and references. This makes for a highly searchable and understandable knowledge base. Anything beyond that proves to have little utility in the long-term.

</comment><comment><USER51> A mix of Google Docs for larger research projects and notes on my blog - I use Google search to recover them.

The blog entries let me save time if I return to a problem and tell me at what point I stopped.

</comment><comment><USER52> Quite simply so I can remember the stuff I need to. Or to be more clear, I know I'm going to forget so want to be able to find out what I've forgotten in a convenient way.

</comment><comment><USER53> I use a local wordpress to document and shape my business plans. I am prone to circular thinking so doing this helps me stay on course.

</comment><comment><USER54> For me it's just time. If I ever need to search how to do something more than three times, I put it in my notes.

</comment><comment><USER55> 80% of stuff is junk. I save content so I'll be able to re-find the good stuff I've found.

</comment><comment><USER56> The main reason is to save time and having an anchoring point to further develop ideas.

</comment><comment><USER57> Just keep something my brain can't store because it's not useful everyday.

</comment><comment><USER58> another benefit: writing something down burns it more into your brain, so u more likely will remember it without even looking it up

<comment><USER59> > writing something down burns it more into your brain

Yes, and the recall effect is much stronger if you use handwriting vs typing[0]

[0] see for example [https://redbooth.com/blog/handwriting-and- memory/amp](https://redbooth.com/blog/handwriting-and-memory/amp)

<comment><USER60> I'm really not a fan of these studies, even this article points out why: copying verbatim doesn't work.

Hand writing forces you to rephrase in your own words because you can't write fast enough to keep up—but there's no reason you can't apply this same method to typing, AND get all the benefits of legible, searchable, organisable, easily expandable text documents.

<comment><USER61> That's a good hypothesis, but it can be tested

</comment></comment></comment></comment><comment><USER62> > Ask HN: Why do you keep a personal knowledge base?

Why assume everyone here keeps a knowledge base? I personally don't.

</comment><comment><USER63> Another form of hoarding.</comment>


Oil is now so cheap even pirates aren't stealing it any more - <AUTHOR> http://qz.com/619281/oil-is-now-so-cheap-even-pirates-arent-stealing-it-any-more/ <comment><USER2> Maybe the movie and music industry can learn something here. Make your product available and affordable and people will buy.</comment>


How Ravelry makes money - <AUTHOR> http://blog.ravelry.com/2012/01/25/how-does-ravelry-make-money/

<comment><USER2> When writing your own ad serving system, how do advertisers know they're really getting the clicks/impressions?

<comment><USER3> That concern exists with 3rd-party ad networks as well: a publisher site could certainly cause ad impressions to happen without an eyeball actually seeing those ads. (e.g. text-indent: -5000px)

The answer is just that they don't, but they do know if they are getting conversions. So the market corrects itself, and after some amount of time advertisers will (probably) stop bidding for impressions or clicks that aren't doing them any good.

Also, falsely indicating to advertisers that you are showing their ads is fraud.</comment></comment>


Size Matters- Dell fits 15M pixels into this 27" 5K monitor - <AUTHOR> http://www.theregister.co.uk/2014/09/06/new_dell_5k_monitor_and_stuff/

<comment><USER2> No one needs this many pixels on a screen! This is just petty consumerism at play. Capitalists disgust me!!

...I'll take four.</comment>


Ask HN: Why is it so difficult to find pre-installed Linux on "top-end hardware" - <AUTHOR> If Linux is gaining mindshare and marketshare, why are manufacturers not providing Linux "out-of-the-box"? Some like Dell do but it is difficult, if not impossible to see it across geopgraphies. They all seem to "recommend" Microsoft Windows.<p>When will this hegemony end? <comment><USER2> My personal hypothesis is that Linux users love to sabotage themselves. If the Linux model doesn't have _exactly_ the specs they want at a cheaper price, they buy the Windows model and install Linux themselves. Since nothing will ever be good enough, manufacturers don't bother.</comment>


Ask HN: What formula do you use for calculating subscriber churn? - <AUTHOR>

It seems that everyone I ask uses a different formula for calculating Churn. Most people seem to use back of a napkin calculations like (total customers lost/average active customers during the month*100). Is this the SAAS industry standard? What do you use? <comment><USER2> I don't know the convention, but the most accurate would be the rate of decay on the installed base.

<comment><AUTHOR> what would be the formula for that?</comment></comment>


Ask HN: What unsolved frustrations do you experience daily? - <AUTHOR> For me:
- Taking the trash out (fills up most days)
- Loading the dishwasher
- Emptying the dishwasher
- Falling asleep quickly (mostly solved this now)
- Falling back asleep if I wake up earlier than I want to (mostly solved this now, but I include because while I was experiencing it I talked to others and realized it's semi-common)
There's certainly more.
Why am I posting this?
Fodder for people looking for problems to solve. Problems with high frequency are good because it means you have many opportunities to acquire a customer, and that customer will use you daily for a long time. <comment><USER2> My frustrations are mostly with people, frankly.

A huge problem is that people are not self-aware: they cause major problems just by being _in the way_ (whether it's car traffic on roads, or foot traffic on sidewalks, or traffic in shopping aisles, etc.). They desperately need a clue.

Maybe there is a technological solution: some sort of location-based system where you receive a message saying "MOVE; the people all around you have voted, and agree: you're IN THE WAY".

<comment><USER3> But then the people who wouldn't otherwise be on their phones have to then look at their phones to say "MOVE" which creates more people who don't have a clue. I have found that a nice honk of a horn or a firm "Let's go" does the job.

</comment></comment><comment><USER3> For me, it is remembering my keys. I have since attached them to my phone case (hackily) but on numerous occasions people have come up to me saying, "Whoa, what kind of phone case do you have? That's awesome" and they are disappointed when they found out I have literally just clipped my keys to one of the area where my headphone jack is located.

tl;dr a way to clip keys to a cell phone so that finally everything can be carried easily. (Credit/Debit cards, cash, and keys)

</comment><comment><USER4> One of my biggest frustrations is waking up. I have an amazing ability to sleep through things. Even with good sleeping habits, I occasionally sleep through alarms - volume doesn't seem to matter, though sometimes tone does. I'd love to have a cheap alarm that vibrates my pillow - the ones they sell for the hearing impared are often expensive.

Additionally, I snore. Loudly. It wakes my spouse. He was going to strap his phone to his ankle and sleep with earphones, but found there was no vibrate- only function on the phone. Such a function would be great, as well as an alarm-only sort of system that can do the same.

</comment><comment><USER5> Taking the trash out - If you own a house and can make improvements, an in- home trash compactor will generate about 3,000 pounds of force to compact your trash. If you do rent, try finding a trash can that is large and stable enough for one to step into. Use a step stool and add a plywood disk platform cut out to less than the inside diameter to stomp on the trash to compact it. Much of the trash we throw out can be compacted, even with just a simple stomp. Also, if you have a yard, you can potentially compost raw food scraps.

</comment><comment><USER6> None, I'm happy :-)</comment>


Implementing Font-Size in Servo: An Unexpectedly Complex CSS Property - <AUTHOR> https://manishearth.github.io/blog/2017/08/10/font-size-an-unexpectedly-complex-css-property/ <comment><USER2> What an amazing article. Thanks for sharing.

I've been wondering for some time now whether CSS should have a formal semantics to help implementations, and for posteriority (eg. not leaving behind a mess of specs making it infeasible to implement browsers from scratch/specs for generations to come).

For an example of what I'm after, see [1], which is using attribute grammars/logic grammars for a small fragment of CSS box layout, and is one of the precious few attempts of a formal semantics for CSS.

[1]: [https://lmeyerov.github.io/projects/pbrowser/pubfiles/extend...](https://lmeyerov.github.io/projects/pbrowser/pubfiles/extended.pdf)

<comment><USER3> The above, plus i did not know about 'rem'. And now i do, thanks for that.

<comment><USER4> There are a bunch more interesting ones that folks often haven't heard of, like ex (relative to the height of an x) or ch (relative to the width of a 0)

[https://developer.mozilla.org/en- US/docs/Web/CSS/length](https://developer.mozilla.org/en- US/docs/Web/CSS/length)

(not all of the ones in that page are implemented by browsers, e.g. I don't think anyone implements `cap` or `ic` since it's from a draft spec)

</comment></comment></comment><comment><USER5> These kind of complexities is why, as much as I would love it to, the web as it is cannot compete with the performance of native apps.

What is in native a simple number (maybe two) is dozens of pages of specifications - which result in insane amount of work to deduce the value of a simple variable.

Layout and rendering is probably even worse in this regard.

<comment><USER6> On the contrary, when native apps support styling (e.g. through React Native), it's invariably very slow compared to all the optimizations that have gone into browsers. They generally can't compete with the decades of optimization that have gone into the Web platform.

Sure, cascading of certain properties can be complex. But the compressed in- memory style representation, style sharing optimizations, parallel restyling, etc. more than make up for this. Each one of these is at least a 2x speedup on its own. Every single implementation of native app styling that I've seen hasn't even begun to implement _any_ of these optimizations.

<comment><USER7> I don't know if you're aware of this, but you're making a different comparison than GP:

GP: a simple way to set font size, say, in pixels vs CSS styling

You: native support for CSS styling vs browser CSS styling

Of course browsers are faster with the latter, due to the reasons you mentioned. But they cannot hope to be able to optimise as much and as easily as the former approach (in principle that is, I cannot say anything about whether or not they actually do).

So I'd say you're both right by virtue of not debating the same thing.

PS: When are the fast SVGs demo'd in Servo a long time ago coming to Firefox? :)

<comment><USER6> Setting font size in pixels on an inline style is as fast on the Web as, say, changing the font on an NSTextFieldCell. Why wouldn't it be?

<comment><USER7> You're again talking about current performance.

The full HTML and CSS spec is large, complicated, and full of corner cases, and thus a lot harder to optimise. The point GP is making is that a simpler framework is much easier to maintain and optimise because it has much less to worry about (again, _in principle_ ).

I think the key difference is this part of your earlier reply:

> _when native apps support styling_

.. when the implicit statement Illnyar was comparing CSS to a framework that _doesn 't support styling_, or at least much simpler styling.

I'm not hating on browsers, HTML or CSS here - they're amazing technologies. But these are two different points being made.

<comment><USER6> Can you explain, specifically, how the code path for setting a specific numeric font size via inline style is slower than, say, setting the same attribute on an NSMutableAttributedString? (I know of one way in which it is slower, but it has nothing to do with anything discussed in this article and is fixable via work-in-progress specs.)

With native apps, you can either use the raw style modification methods or a comparatively slow third-party style system of your choosing. With the Web, you can either use inline styles (akin to the raw style modification) or a slower, but still relatively fast style system. I don't see any advantage for native apps here.

<comment><USER7> Why do you keep arguing something that I'm not even disagreeing with? And why are you not even engaging with my earlier statement that you're arguing a different thing altogether. If I'm wrong about that, then just explain to me why instead of trying to convince me of something I'm already agreeing with.

I mean, you're the expert working on Servo here, so you're better equipped to answer the other claim that you're ignoring: is a simpler spec than HTML and CSS be easier to optimise, yes or no?

<comment><USER4> > If I'm wrong about that

You are wrong about that, and he did explain. He is talking about the same thing. That was the purpose of his comment about inline styles. (If it was unclear I can answer any more specific questions you have)

What native frameworks let you do is assign inline styling to mostly leaf nodes, plus some extremely generic overall theming functionality.

This is both possible and _fast_ in CSS. This is not where CSS is complicated.

Comparing apples to apples, they're simple specs.

You're saying "But they cannot hope to be able to optimise as much and as easily as the former approach (in principle that is, I cannot say anything about whether or not they actually do)." \-- this is incorrect. Setting inline style on leaf nodes is very fast and not a performance issue especially if you solely rely on inline style. The main reason I can think it would be a perf issue is that in CSS this will have to re-parse (whereas in native you can set these things without string ops), but that is fixable (typed CSSOM is probably going to happen). But aside from that, it's a simple computation followed by setting something on a struct. Not really a problem. You can't really optimize it further, aside from the typed CSSOM thing I mentioned (which has nothing to do with complexity).

CSS gets complicated when it attempts provides more power than these native frameworks, however the associated perf issues crop up _when you try to use these features_. If you use CSS restricted to the feature set of basic native frameworks, these complexities will not affect you much.

pcwalton made an additional point on top of that that if you want to compare apples to apples _here_ , you get frameworks with that level of power (e.g. React Native) on the other side, which don't have as many optimizations.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I'm always amazed by how performant complex CSS can be. Really complicated pages render in a few hundred ms, even though so much complicated computation is happening under the hood. Browser developers are true wizards.

</comment><comment><USER9> > A lot of the web platform has hidden complexities like this, and it's always > fun to encounter more of them.

"fun" is an odd choice of words here; (╯°□°)╯︵ ┻━┻ seems more apt.

also, what's the future of MathML? what's the point of continuing to support a standard that Chrome has decided not to implement? it means 50% of web users won't see MathML, so web authors will never bother writing it.

there was this a while ago: [https://news.ycombinator.com/item?id=11444830](https://news.ycombinator.com/item?id=11444830)

<comment><USER4> Well, from my point of view it's less work to implement it than it is to argue removal from Gecko (which could happen, but it would take a while). Stylo must have Gecko parity, whether it's by adding more features to stylo or unshipping features from Gecko. We've done the latter in some cases for nonstandard stuff folks no longer use.

I don't really know what the future of MathML is. Some folks seem to still use it, though less often on web pages.

<comment><USER9> Thanks. Also, does Servo incur any overhead from Stylo having to implement legacy or Gecko-parity features (eg -moz prefixes, etc)? Or does Servo not use Stylo directly? Same question for other Quantum components.

<comment><USER4> Stylo is the project name for taking Servo's CSS system and hooking it up to Gecko.

We conditionally compile out unsupported stuff. There is some complexity in shared code introduced but very little of it is anything but a complication of the abstractions (not an actual behavior-level change which can have a perf impact).

So for example the weird cascading behavior exists when you compile pure servo (because that's a core functionality of font-size, which servo does implement), but servo doesn't have to deal with the mathml stuff or text-zoom. Servo has some no-op _code_ for text-zoom that lets shared code be written cleaner, but it compiles out.

</comment></comment></comment></comment><comment><USER10> What an interesting and educational post! Thanks!

It's baffling just how complex CSS became over the years. I wonder, is the extra work involved for all the relative tracking something to consider for website performance?

<comment><USER11> _It 's baffling just how complex CSS became over the years_

Well, except for calc(), these cases seems to come all from CSS 1.

Interestingly, the font-size section mentioned how a font may be sized in a VR environment. I remember VRML, but didn't know there were plans to apply CSS to VR back then!

[https://www.w3.org/TR/1999/REC-CSS1-19990111#font- size](https://www.w3.org/TR/1999/REC-CSS1-19990111#font-size)

<comment><USER12> Even before CSS 1... Initially CSS tried to emulate what was available in "presentational HTML" available at the time. The absolute and relative font sizes were introduced by the FONT-element and BASEFONT-element, and the BIG and SMALL elements.

</comment></comment></comment><comment><USER13> I wrote a free responsive website editor (named "RocketCake"), and was surprised how complex CSS and these HTML rules are to implement, although I only needed not all of them. When I told my fellow programmers, they didn't believe me. I'll send them a link to this. Nice article!

</comment><comment><USER14> Would one really expect anything at all in CSS to be simple?

</comment><comment><USER15> > What this effectively means is that you need to keep track of two separate > computed font size values. There's one value that is used to actually > determine the font size used for the text, and one value that is used > whenever the style system needs to know the font-size (e.g. to compute an em > unit.)

As someone who actually sets minimum font size, and to a healthy 14px at that... Does anyone know the actual reason behind this? It would probably go a long way to helping layouts not break all the time with my minimum font.

<comment><USER4> I don't, and I'm pretty baffled that it _does_ affect em units for text-zoom (despite the two having very similar purposes).

Perhaps the difference is that with min font sizes everything gets clamped, which can make two objects of different sizes get the same size if they used em units (if em units affect things). Which is both good and bad, depending on the intent. (Whereas with text-zoom everything is nicely scaled so it's less of a problem).

<comment><USER15> Thanks for the response. Is this behavior something defined in the spec? Or is it just what Gecko does, and is being carried over to Servo?

<comment><USER4> text-zoom isn't a web feature, it's only a feature Firefox/Gecko has.

Servo doesn't implement it either, only Stylo (the confluence of Servo's style system and Gecko). In Servo mode all the code for text-zoom becomes a no-op.

<comment><USER15> Sorry, I meant the em sizing ignoring clamping, not the text zoom!

<comment><USER4> Clamping isn't exactly a web feature either, it's one that most browsers have.

Probably should be specced; one thing I intend to do is help spec this.

</comment></comment></comment></comment></comment></comment><comment><USER16> > Text zoom is also disabled within <svg:text> elements, which leads to some > trickiness here.

Not sure I understand this. Is the author saying that if the user tries to zoom in, svg text won't change size?

<comment><USER4> If the user tries to _text zoom_.

Yes, SVG text will not zoom if you text zoom. SVG is fundamentally a absolutely-position image, not a laid out document. The concept of text-only zoom makes sense for documents, but not for images, where the position of the text is far more important.

(This won't affect `<img>` embedded SVG anyway, however it is possible to embed SVG directly within HTML via `<svg>`, which is where this matters.)

<comment><USER16> > If the user tries to text zoom.

Ah, thanks for the clarification. I missed that part. That makes absolute sense. :)

> The concept of text-only zoom makes sense for documents, but not for images, > where the position of the text is far more important.

> SVG is fundamentally a absolutely-position image, not a laid out document.

svt text is a fundament of svg that is incompatible with absolute-positioning. The OS's font stack might render px-sized mono-spaced font text at width x, or it might render it at x+7.

Edit: typo

</comment></comment></comment><comment><USER17> > "monospace fonts tend to be wider, so the default font size (medium) is > scaled so that they have similar widths"

> "the base size depends on the font family and the language … Default system > fonts are often really ugly for non-Latin- using scripts."

'often', 'tend to be': I am worried. I think it's a really bad idea to deflect default behavior based on such assumptions, certainly when the deviations are a blind process triggered by proxies (like language tags and some vaguely statistical rules-of-thumb for dealing with generic font family names). That is: without even looking at the actual design and metrics of the actual font involved.¹

What happens if the monospaced font in case has a normal x-height and/or an advance-width equal to that of its serif counterpart? What if the CJK and Devanagari fonts have characters drawn already 'big on the body'?² Then such hard-coded default moonshot-fixes which try to cater for the lowest common denominator will make things needlessly hard to debug and force the designer still to ad-hoc size-adjust font per font, but now also trying to fix the browser's 'fixes'. (Too bad: any `normalize.css` wont help…³)

And yet, all of the needed data is available in the font file. There's even a dedicated CSS property for dealing with fonts' varying metrics: `font-size- adjust`.⁴ Not that browser makers care to implement⁵, but since the OP's post concerns Firefox (which does support `font-size-adjust`, but the article does not discuss it) I wonder: is it a matter of performance that retrieving the actual font metadata and metrics is left out of the equation? Surely, the fact that local font files, base64 data-URI embedded or externally hosted ones can be used, makes implementation all but trivial…

At Textus.io⁶ we're going great lengths to solve typographic issues such as these. Point in case: for each font we read out the `xHeight` value, then calculate the actual font-size relative to the font's UPM (unitsPerEm), so we have consistent apparent font-sizes, c.q. aspect ratios.

I think it all boils down to a separation of concerns: proportion and interrelated sizes (ascender, caps, descender, x heights, stem width, etc.) are up to the discretion of the font designer, overall aspect size is the business of the typesetter (css stylesheet author), and the browser ought always draw consistently, regardless of generic font family name, language and/or Unicode code range.

¹ [https://opentype.js.org/font-inspector.html](https://opentype.js.org/font- inspector.html) ² [https://medium.com/@xtianmiller/your-body-text-is-too- small-...](https://medium.com/@xtianmiller/your-body-text-is-too- small-5e02d36dc902) ³ [https://github.com/h5bp/html5-boilerplate/issues/724](https://github.com/h5bp/html5-boilerplate/issues/724) ⁴ [https://developer.mozilla.org/en/docs/Web/CSS/font-size- adju...](https://developer.mozilla.org/en/docs/Web/CSS/font-size-adjust) ⁵ [http://caniuse.com/#feat=font-size-adjust](http://caniuse.com/#feat=font- size-adjust) ⁶ [http://www.textus.io](http://www.textus.io)

<comment><USER18> > I am worried ... really bad idea ... will make things needlessly hard to > debug

It has worked this way since the days of Netscape Navigator[1], though, so it's not a change or a new idea. It's just keeping things the way they've always been. (Nowadays, in Firefox, the corresponding settings are under Preferences -> Content -> Fonts & Colors -> Advanced.)

[1] [http://www.alanwood.net/unicode/mac_net6.gif](http://www.alanwood.net/unicode/mac_net6.gif)

<comment><USER19> That screenshot is from Netscape 6—a Gecko-based Netscape release without "Navigator" in the name. The mechanism mostly survives in Gecko today except for the Latin unification (previously split to Western, Central European, etc.).

<comment><USER18> Oops! It was definitely there in Netscape 4, but I was a bit sloppy with the image search. Here is the Netscape 4 screenshot:

[http://www.alanwood.net/unicode/mac_net472.gif](http://www.alanwood.net/unicode/mac_net472.gif)

</comment></comment></comment></comment><comment><USER20> Fascinating read, thanks for sharing!

</comment><comment><USER21> Thanks, I had always wondered how font-size was implemented.

</comment><comment><USER22> he's missing out sizing in viewport dimensions, even if is probably reducible to the pixel dimensioning adjusted for zoom.

<comment><USER4> Yeah, since that's just another length unit and works for all length values I didn't go into it.

</comment></comment><comment><USER23> Interesting to see how complex it has become.</comment>


How to quit your job in 837 easy steps - <AUTHOR> https://onezero.medium.com/how-to-quit-your-job-in-837-easy-steps-af2b121f757b <comment><USER2> This resonates. I've got a job in tech I find fairly fulfilling and it pays super well. I work hard, which sometimes means long hours, but more often just means I'm constantly thinking about work at home. I'm able to take care of my family and put away money for the future. I want for basically nothing, and I totally recognize my privilege in that.

But I was a baker for a few years before getting into tech. And I'm a passionate gardener every summer. I love making games and building little technical systems and watching them go.

There's a part of me that wonders... maybe things would be nicer if I was to move out of the city and open a bakery. Or a brewery. Or take on some small contract work enough to fund my side projects and gardening habit. It would mean setting down my income, school options for my child, activities in the city, leaving my friends behind, etc.

It's difficult to reason about. There's a lot of emotional pulls in both directions. I totally understand the author spending a majority of their energy in switching jobs trying to even approach the problem of whether it's worth it. The easy part is quitting, the hard part is figuring out if one _should_ quit.

</comment><comment><USER3> Who flagged this? Why? This is a human story about relational context in the tech industry. The people who are saying "no content" are demonstrating a particularly skewed view of what gets to be considered content.

(How do I flag a flagging?)

<comment><USER4> If by "human story" you mean someone griping about how their job sucks (as does their industry, more broadly), then yeah, it's definitely a human- interest story. It's mostly interesting for the little tidbit at the beginning about _who_ 's doing the griping.

<comment><USER3> Disagree. I feel there's tons in there -- it's just not laid out in a bullet point list of "do this" statements (or at least the list given is a punchline). For example, her approach to interviewing: That a high-level person has a "don't bullshit" approach to the interview process that got them to be VP of Google. Or the social proof that people at the top can be just as miserable and unfulfilled as the people below. It's not just griping -- it's normalizing and humanizing. Stories are powerful.

Anyhow, I guess we can agree to disagree.

</comment></comment></comment><comment><USER5> Talk about crocodile tears. She was a VP at Google FFS! I could probably live work-free for 10 years on just a year of her compensation. Money may not buy happiness but it buys lots of time—time for hobbies, retirement, whatever else fulfills you. The source of fulfillment does not necessarily _have_ to come from your job!

I know this isn't popular here but "I'm making $500k a year in an air conditioned office but I'm sooooo sad" is a problem that 99.9% of the planet would trade places for in a heartbeat. Sorry, but some perspective is sorely needed.

<comment><USER6> I don't think it's for us to judge whether other people should be happy. You have to just take people on their own terms.

In any case, you ought to be pleased that she quit and made room for someone else to work that dream job.

</comment></comment><comment><USER7> This article made it to the top of HN because people resonate with the idea that quitting one's job is not so simple. As for the content of the article, which I tried my hardest to read, I found little nutrition therein.

</comment><comment><USER8> This resonated with me as well, but the unfortunate kernel of truth near the end is that the author had made enough money that she could afford to quit without knowing how she was going to make money.

</comment><comment><USER9> Well, at least they got a bit creative in the click-bait headline. The whole 837 steps but actually 15 steps is a fun little twist. I wonder if someone has some data on the optimal click through number for numbers in headlines, and does it vary from industry to industry?

</comment><comment><USER10> When did we became so creative to choose title for our blog posts. I liked it more old days when title was merely the shortest explanation of what you are going to read.

</comment><comment><USER11> I didn't click with this essay. I found it difficult to relate to someone who had such a position of power and privilege complaining about their job in the manner of a moody teenager. Also the repeated book self-promotion got on my nerves.

<comment><USER12> I'm not a fan of this line of thinking. Are those with high income and power not allowed to be unhappy? I'm sure there are plenty of people in a position similar to hers, and maybe her advice could help them advise their own decision making process.

</comment></comment><comment><USER13> The question is indeed why?.

<comment><USER14> quit + Google

</comment></comment><comment><USER15> WTF kind of candidate answers this in an interview:

"Why do you like [Car Company]"?

"To be honest, I hate cars. I find them really boring."

<comment><USER16> Probably when your resume has something spectacular to overlook it. Also, congrats to the author: it's inspiring to see someone make such critical changes at this time of life.</comment></comment>


Why Hypergraphs? (2013) - <AUTHOR> http://blog.opencog.org/2013/03/24/why-hypergraphs/ <comment><USER4> If we're talking AGI, here's my problem:

      [...] one also needs predicates or relations: things that have
      truth values, and order terms. Thus, 'greater then' is a relation,
      and 'a>b' is either true or false.  Relations can also be things like
      IsA, HasA, BelongsTo, LivesIn, EmployedAt.

In a biological system, these predicates are encoded in the graph itself. This is important for two reasons. First, this dynamic predicate encoding contains by necessity a representation of _what the predicate actually means_. Second, this allows a graph relationship between predicates themselves, and thus it's possible to learn new ones, abstract higher-level ones, or modify existing predicates.

Why do I think this is a problem? It's clearly not relevant for AI tasks, but AGIs have to be general and self-organizing. Of course I do agree with the research consensus that we probably have to "cheat" by hardcoding certain things (brains do it too, afterall), but maybe tags for node relationships should not be predefined like that if you want a system that can reason freely.

The problem is of course one of practicality. If you want a system you can explicitly program from the outside, there has to be a set of predicates which both the programmer and the AI understand to mean the same thing. However, in doing so you're putting a severe limit on the amount of self-organization a brain can perform. Natural systems are not like that.

<comment><USER5> The brain does not have unlimited self-organizational ability either though - it's why neurological development in the womb is so important, because if the proto-brain doesn't get initially structured just like, we don't wind up with something capable of general reasoning later in it's life.

So I don't really think this is a problem - or I'd contend we don't know enough to say it definitely would be.

<comment><USER4> I think I failed to get my point across, then. If you go back to my original comment, you'll find that priming the developing brain has in fact been addressed and that's not what I mean. I was referring to the concept of hard- coded relationship predicates which make the system easy to program from the outside, but which have the drawbacks I already talked about.

<comment><USER6> I agree, the way that the system reasons should be configurable by the system itself. Of course you have to give it some fundamental operation(ultimately we operate within the mappings of the universe), but this should be as low level as possible, allowing the system to build its own composite structure with which to reason.

</comment></comment></comment></comment><comment><USER7> Makes me think of "Artificial Addition" ( lesswrong.com/lw/l9/artificial_addition/ ):

> _A human could tell the AA device that "twenty-one plus sixteen equals > thirty-seven", and the AA devices could record this sentence and play it > back, or even pattern-match "twenty-one plus sixteen" to output "thirty- > seven!", but the AA devices couldn't generate such knowledge for > themselves._

Basically, concept graphs are better thought of as programming languages with a propensity for hardcoding than as solutions to the AGI problem.

</comment><comment><USER6> While I think the hypergraph is a great data structure, and I agree graph rewrite rules, written as graphs have a lovely symmetry, this approach feels too low level to me. Sure you can have graphs representing both data and process ala "To Dissect a Mockingbird", but it feels that this interesting interplay of data and process is sitting too high up in the hierarchy of structure, I think you want this happening at a very low level, giving more space for emergence (whatever that may be).

There is not enough symmetry, I think the correct solution to this problem is going to look obvious. I don't think this is an engineering problem, I think it is a radical re-imagining of what intelligence is. My hope is with reservoir computing.

I think what we need to do is a mashup of reward modulated hebbian learning and reservoir style techniques. We need to take a gigantic sledge hammer and smash apart the incoming stream of data, spray it as far across the space as possible and then linearly compose the pieces to construct something that looks right. Combine this with hebbian learning so that those mutated, fragmented, mutated pieces of the incoming object which are useful for the purpose of the device are made more likely to occur within the network.

So you need a structure where it is possible to enhance the probability of some perturbation of the data through some global learning rule. Then you need a way of bringing those pieces together to reconstruct either the object itself or an object of use. And you need lots of it, billions of active processing elements and trillions of sparse connections.

Just my rant, perhaps it will spark something in a mind elsewhere, just passing on the pieces of the puzzle that I have smashed apart in my head. Perhaps we need to flip this all around, the patterns come from the world, they take root in our head and use the substrate to evolve, before passing out into the world again. what an GAI needs to do is provide a place for these patterns to take root and evolve according to the GAI specific objective function...

</comment><comment><USER8> "So perhaps you'd think that all logic induction and reasoning engines have graph rewrite systems at their core, right? So you'd think. In fact, almost none of them do."

Hmm not sure about this sentence. The most popular knowledge representation format RDF is actually a graph representation. SPARQL is a query language based on subgraph matching. SPIN provides a framework for writing rules on top of that. Couldn't those be used as a starting point instead?

</comment><comment><USER6> I wonder if someday in the future, when AI is common place, people will implement these early attempts at GAI on better hardware.

Kind of like what we have done with the babbage difference engine.

</comment><comment><USER9> If you want to play with something similar, including the sourcecode, check out conceptnet: [http://conceptnet5.media.mit.edu/](http://conceptnet5.media.mit.edu/)

If you want to get an interesting introduction to the idea of concept graphs take a look here: [http://xnet.media.mit.edu/docs/conceptnet/install.html](http://xnet.media.mit.edu/docs/conceptnet/install.html) This works with conceptnet4, but I think it's a nice simple introduction that you can run easily. Conceptnet5 is very different from conceptnet4, but the examples for conceptnet4 are a good intro. I was never very successful with using conceptnet5.

Conceptnet data is considered noisy, ambiguous, redundant, etc. by researchers, but I think that describes our own knowledge as well. The problem that we found with conceptnet is that there's just too much knowledge in it and so relationships between concepts were washed out. It's almost like talking to an extremely knowledgable but boring person with no opinions - <USER2> were trying it out to look at relationships between concepts and emotions.

By relationship between an emotion and a concept, I mean the distance in the graph between the concept of the emotion and another concept. For example, 'cake' is closer to happiness in the graph than 'rain'.

And related to this, you get contradictory relationships between concepts. For example, some people from some cultures will have positive emotions close to 'dog', but other cultures have negative emotions associated with 'dog'. By trying to fill a concept graph with all information it can find (wikipedia, news articles, web crawling, etc) you just get a big mess.

Another problem with conceptnet 4 is that the data is culturally limited - <USER3> example it's obvious that it was filled by MIT students when you search for concepts related to happiness and the concept of getting a good grade on a test is higher than the happiness of kissing a girl.

What would be useful is to develop personal conceptnets by analyzing all communication of that person. If you can include voice communication you can get even better emotional data than you would from just analyzing text. Even better would be to keep a time series of personal conceptnets and blend them over time, and from that you can analyze what external factors changed a person's emotions/concepts. You could even do experiments - apply some external factor and see how they change.

<comment><USER10> I've been playing around with ConceptNet for a year now, it's extremely impressive but I haven't quite applied it to a domain yet.

I often wonder about the cultural aspect you mention as I worked with a group that was attempting to model space, time and opinion data: i.e. 'dog isA food' differs according to geographic location. The old joke goes: scientists create a super intelligent computer and ask it 'is there a God?', and the computer replies 'there is now'. If future AIs are trained primarily on the English speaking Internet then perhaps God really will be an Englishman. For that to really be the case though the computer's reply would have to actually be a joke.

Perhaps it's time, given people are claiming they've passed the Turing test on dubious grounds for media attention, that a new test is established based on whether the computer can tell a funny joke. Higher level comedy plays with meaning and context, thus to make a joke you have to display mastery over the possible meanings as well as building a mental model of how your interlocutor will process it. Thus a being that can tell a joke is displaying a distinct sophistication. Many humans might fail that one though.</comment></comment>


Show HN: Wesayhi.co – Wetransfer for online meetings - <AUTHOR> http://wesayhi.co

<comment><USER2> We're Wetransfer for online meetings. Simple, beautiful and reliable online meetings in your company style. Feel free to ask me anything or sign up for our FREE private Beta.</comment>


GitHub-first-commit - <AUTHOR> https://github.com/Wushaowei001/github-first-commit <comment><AUTHOR> I made a chrome extension to enable you to navigate to the first page of github commits page. Inspired by: [https://news.ycombinator.com/item?id=10610065](https://news.ycombinator.com/item?id=10610065)</comment>


I don't have an account and want to request all personal data stored by Facebook - <AUTHOR> https://www.facebook.com/help/103846099705922?helpref=faq_content <comment><AUTHOR> This came up during today's hearing. Apparently this page links to another page[1] that asks you to log into your Facebook account which you obviously don't have.

 _META_ : The original title is " _I don 't have a Facebook account and would like to request all personal data stored by Facebook._" which I reworded slightly to fit into the HN title char limit.

[1]: [https://www.facebook.com/help/contact/180237885820953](https://www.facebook.com/help/contact/180237885820953)

</comment><comment><USER2> To get to the actual form, you need to select "This does not answer my question" at the bottom, then more options will show up.</comment>


New MySpace Logo Unveiled - <AUTHOR> http://www.huffingtonpost.com/2010/10/09/new-myspace-logo-unveiled_n_756871.html

<comment><USER2> And you thought the new Gap logo was bad...</comment>


Ask HN: Not growing as a web developer, what to do? - <AUTHOR> Hi all!
I've worked in few web development companies in the past, and now I am a sole PHP developer in a place. I like the work, working on client sites and internal sites but I feel like I have come to a halt in growing as a developer.
I've learned everything by either myself, or more importantly from other developers from my previous workplaces - I've never had an education in this kind of stuff. So what I have been trying to look for is either books or videos in regards of what I think I am lacking: - Software architecture - Clean code / smart code - Testing (especially external apis) - DevOps/SysAdmin - Wrapping my head around logical issues
For example I have been struggling with something that is as a problem simple: Load data from Google Analytics, keeping it within the quotas, while having multiple batches that would go over the limit of 10 calls per second.
Basically how to in best way to automate the load with cron, split the batches to match the limits, and still store them in a smart way, without over-engineering everything. It is such a stupidly simple issue, but I hate the fact I have so much struggle with it.
Even when I'm sitting with this issue and trying to figure it out, I cannot grasp it properly in my mind. In the past I've had the possibility to go and ask someone, and at the same time learn a lot from that person, but I do not have that luxury anymore, thus try and find info from other sources.
I would also love to be able to read laravel and symfonys codebase and understand it! - but right now I can only use them, but they feel like they are built smartly, and I'd love to replicate that thought process in my code too!
So my question to you all is this: Have you ever been in a situation like this (not growing professionally), and what did you do about it to solve that issue? And I would appreciate if you had any suggestions what I could do to get out of this "blockage"!
If nothing else, thanks for reading! <comment><USER2> pluralsight has some good training videos. as for the bigger question, I'm in a pretty similar situation. Only developer working on a windows logistics program to interface with an accounting program. so no answers here.</comment>


Self-assembling nanodevices created that move and change shape on demand - <AUTHOR> http://hms.harvard.edu/public/news/2010/062110_ingber.html

<comment><USER2> Is this a big deal? I don't know enough about nanotech to tell.</comment>


GitHub Pages now runs Jekyll 2.2.0 - <AUTHOR> https://github.com/blog/1867-github-pages-now-runs-jekyll-2-2-0

<comment><USER2> I asked Github and Sass and CoffeeScript support will apparently also work for regular (non-Jekyll) pages on the `gh-pages` branch if you put dashes at the top of the file you want to be processed.

Source: [https://twitter.com/benbalter/status/494533173699543041](https://twitter.com/benbalter/status/494533173699543041)

Documentation: [http://jekyllrb.com/docs/assets/](http://jekyllrb.com/docs/assets/)

<comment><USER3> To be specific, all sites are processed through Jekyll, unless you add a `.nojekyll` file. Non-Jekyll files (like HTML or CSS) are passed transparently through Jekyll untouched. Adding the dashes to the file header simply tells Jekyll to work its magic.

<comment><USER2> Oh awesome, I didn't realize that everything was going through Jekyll under the hood. Is this new or has it always been like that?

<comment><USER4> It has always been like that. A file full of static files (no dashes at the top) is still a valid Jekyll site.

</comment></comment></comment></comment><comment><USER5> I was just yesterday wondering why Kramdown wasn't the default. Among other things, it supports Mathjax. Then I came across this in the announcement:

"Kramdown as the default Markdown engine - In addition to better error handling, Kramdown supports MathJax, fenced code blocks, nested lists, tables, and much more."

</comment><comment><USER6> Sorry if it's a dumb question. But how does this workflow work?

Are the html/js/css generated on my local pc, or on the github server? I don't get it.

(I have no experience with Jekyll. I have some static pages on github pages.)

<comment><USER7> As said, they are generated on Github. There are online content editors like [http://prose.io](http://prose.io) and [http://tinypress.co](http://tinypress.co) (for Github page blogging) though.

<comment><USER8> Thanks for the links, I've been looking for something a bit more editor GUI like rather than editing files.

</comment></comment></comment><comment><USER9> Awesome! Been looking forward to this to play with some of the new stuff like collections.</comment>


New in Chrome 69 - <AUTHOR> https://developers.google.com/web/updates/2018/09/nic69 <comment><USER2> Mac re-design sure looks like a 3rd party Firefox theme from 2014. I know it's subjective, so that's my personal opinion.

But is it in line with Material design? Or is Chrome not subject to these guidelines?

If you open settings, or downloads window in Chrome, you'll see it has blue bars, rounded edges, shadows.

Compare to this re-design, large radius rounded edges, entirely flat looking buttons and inputs.

I honestly though for a second I opened Firefox accidentally with another theme pre-installed.

</comment><comment> cris-ward They've removed `www.` from website url's in the address bar. Actually knowing if I'm on the www subdomain can be very useful, especially as a web developer checking if domains have been setup correctly.

Reminds me of when windows started to hide file extensions by default.

<comment><USER3> This design decision can in practice create trouble with "mis"configured domains where www.example.com is in fact not the same as example.com. This is especially popular in traditional university domains where "university.xyz" does not resolve to a host but only "{www,mail,ftp,...}.university.xyz" does.

</comment></comment><comment><USER4> And still no way to horizontally scroll the tab bar.

There are still some of us who end up with more than a screen's width of tabs, at times, especially on laptops.

So, the rounded rectangles maybe nice, for some, and all that. But, how about some actually useful functionality, there?

"Design" \-- meh.

<comment><USER5> This is so frustrating. I keep trying to use Safari just for this alone.

</comment></comment><comment><USER6> Mac full screen , the tabs nav menu is pushed down, when hovering on mac menu.

Weird behaviour. Is this intended

<comment><USER7> It's because on mac menu hover it also when it shows the application title bar (to close, minimize, etc).

Others apps do that too, e.g. ST3. iTerm, however, choses to still drop the title bar and overlap the tab bar.

<comment><USER6> Yes. That is the expected behavior.Hopefully they fix it

</comment></comment></comment><comment><USER8> > JavaScript arrays are getting two new methods: flat() and flatMap(). They > return a new array with all sub-array elements smooshed into it.

I appreciate the nod to smooshgate.</comment>


Recursively delete .git, .csv, .DS_Store in a folder and all it's sub folders. - <AUTHOR> https://nodevine.com/library/how-to-recursively-delete-git-csv-ds-store-in-a-folder-and-all-it-s-sub-folders

<comment><USER2> rm -rvf `find ...` ? Oh, please, no.

Think about spaces in paths (and worse).</comment>