WebPutty: CSS editing goes "boink" - <AUTHOR> http://blog.fogcreek.com/webputty-css-editing-goes-boink/ <comment><USER3> OK, I guess I'll be the wet blanket that goes thud here, but I really don't see this being very useful. In fact, I see it encouraging bad practices. Maybe it's because I'm approaching this from the standpoint of a company that has more than a few users coming to the site, probably (hopefully?) has an existing release process in place and has multiple stages of their environment to go through (sandbox/dev/qa/staging/live). If this is how you slap lipstick on your pigsite, then you're probably building a site that very few people go to and you don't even have a local version of your site to test against first (because if you had a sandbox environment this tool is pretty much moot), in which case I can see the usefulness of this tool.

Not sure how I feel about the inclusion of the link/script tags in order to make this work but it all seems geared to someone who maybe has their own blog or very low-trafficked site and this would be their alternative to editing the files on the live server.

<comment><USER4> So, these days this style of thing is not uncommon. For example, much of the Rails community uses Sass, a language which compiles to CSS. In development mode, it gets compiled anew on every page load. This doesn't happen in production: there are a few ways to make it happen, but basically, in production it looks like auto generated CSS sitting on the hard drive waiting to be served up quickly.

Doing the same thing with WebPutty would take maybe a dozen lines of code. I'm assuming anyone with multiple environments can make it happen in their language/framework of choice.

<comment><USER5> I'm curious if you used this already since you've been working w/ Fog Creek or if this is the first you're seeing it too.

<comment><USER4> I haven't used it. I will never answer questions about what knowledge I have/had regarding clients' upcoming product releases. You don't have to be Steve Jobs to get touchy about that one, and it's specifically enumerated in most NDAs I sign.

<comment><USER5> OK, thanks

</comment></comment></comment></comment></comment><comment><USER6> This looks nifty and all, and I agree that their two "options" (edit -> browser -> reload vs. Firebug cut-n-paste) are indeed two options that many people consider, but they seem to have left out two other options that solve this problem quite elegantly, at least for Mac users:

1) Coda has real-time CSS editing built-in, and you can relatively easily fire up multiple windows to edit in a "real" editor (if you consider Coda a real editor) and view changes in real-time as you type

2) CSSEdit does one better -- you can edit using their editor and see changes in key-by-key realtime in their preview window. OR, and this is how I've settled on working, you can edit files using the editor of your choice (MacVIM, for example) and still see changes instantly upon save in their preview. So it reduced the need to reload the browser (saving half the steps). Now it's just a matter of make changes, Cmd-S (or however you save in your editor of choice) and it's all updated in real-time.

<comment><USER7> Yeah, we know there are tools out there that do similar things (Backfire, live.js, etc.) but we do think the hosting will appeal to some people (with gzip and etags set up properly) and SCSS/Compass, which make working on CSS _much_ nicer, is a huge selling point, personally.

</comment></comment><comment><USER4> Fun stuff. I'd be tempted to either a) run a deployment step to freeze CSS locally or b) do some nginx reverse proxy magic to grab the latest CSS and cache it for a long time (I.e. only grabbing it from GAE once per revision).

That's a fairly consequential thingee to have on a server with availability independent of one's own.

If folks want I'll OSS code for this, although at a dozen lines in Rails it is barely worth typing git clone...

<comment><USER8> How would I make sure my off-domain images, that are referenced in css, are linked with http when the connection is non-ssl, and https, when the connection is ssl? Currently I make the server link to two separately cached css files (depending on secure or not), which are themselves dynamically generated with an ssl flag.

Does SASS offer a solution for this?

<comment><USER7> Instead of specifying <http://example.com/foo.png> or <https://example.com/foo.png>, you can just use //example.com/foo.png. AFAIK the only downside to that is older versions of IE (6 & 7 I think) will download the image twice for some reason.

<comment><USER9> It's actually IE7 and IE8, and only for CSS file URLs (as opposed to URLs _in_ CSS files). Details of protocol-relative URLs here:

[http://blog.httpwatch.com/2010/02/10/using-protocol- relative...](http://blog.httpwatch.com/2010/02/10/using-protocol-relative- urls-to-switch-between-http-and-https/)

...and the unfortunately double-loading bug for CSS files in IE7/8 here:

[http://www.stevesouders.com/blog/2010/02/10/5a-missing- schem...](http://www.stevesouders.com/blog/2010/02/10/5a-missing-schema- double-download/)

</comment></comment></comment></comment><comment><USER10> Here's the transmogrifier storyline: <http://members.shaw.ca/newsong/calvin.html>

The "scientific progress goes boink?" line is from the duplicator story (which I can't find). The duplicator is the cardboard box on its side, which is obviously completely different from the transmogrifier. And if you turn the opening to the top, it's a spaceship!

<comment><USER11> Minor quibble: the box with the opening on top is a time machine. I don't remember any space-shipping happening with the use of props, it seemed to be all internally imagined.

<comment><USER12> Didn't Calvin once go to Mars in his red trolley?

<comment><USER10> He went to several planets and other (imaginary) solar systems as Spaceman Spiff.

<comment><USER12> True, but did he ever use props as Spiff? Most of the time he was in the classroom with Mrs Wormwood

</comment></comment></comment></comment></comment><comment><USER13> I don't know. The SASS stuff seems awesome. Though, Firebug can handle a lot of stuff that it's making out it can't.

For example, the article says that you have to do a lot of tweakage with the element inspector. This isn't 100% the case and I think that paints Firebug in a less than positive light. The element inspector is a really useful tool but you're just not restricted to that.

There's a CSS tab next to the HTML tab. This presents the full stylesheets to you pretty printed, editable like you would an inspected element. I can often author a lot of CSS in this window in:

a) A much shorter space of time. b) Less amounts than I usually would.

Why point a? When you can see the CSS changing in real-time, you don't have to constantly refresh. Yes, there are ways to reload CSS and I use them often but it's not quite live like Firebug is. The second point is pretty much for the same reason: since you're making the changes in real time you can see exactly what changes what. This makes it less likely to over-step, in which you could be writing redundant CSS.

Firebug has it's downsides, such as it's clunky way of editing with pretty printing. There's also how it assumes the formatting of your CSS. You can use it in a similar way to an editor too but this removes pretty printing. Another big thing is the ability to lose work on refresh if you're not careful.

I can indeed live with the above. I don't think there are many instances where I would like to add in extra assets. I am quite a forgetful person.

Either way, the issues with Firebug can be patched over and I'm certain can be fixed. I don't think linking additional JS and CSS can easily be rectified with this.

What could be missed is the publish feature but not exactly ideal in a fair few number of situations.

This is from somebody who has to work on a lot of static websites and restrictions insist on pure CSS and HTML.

<comment><USER7> Don't get us wrong, we _love_ Firebug, but it is kind of a pain to then take the changes you made, copy them out, paste them somewhere else, and then deploy it. Backfire makes that easier, which is good, but you still don't have SASS and Compass, which I find makes working with CSS _much_ nicer.

In a static environment, you can just compile the SASS to CSS before you deploy, or you can use WebPutty and have us host it for you.

<comment><USER13> WebPutty is really cool, by the way. I'm currently having a play with it and it's funny but I have some suggestions:

A firebug inspired element inspector may be a good thing. I think jumping straight to the line of CSS rather than the separate, filtered window would be a great idea. I'd really love that.

Another thing, but less important, would be auto-complete. Either that or ways to expand ZenCSS abbreviations. This would push my productivity to the moon.

Another thing I was thinking of hacking on to Firebug (when I find out how) is selector hinting. The way this would work is, when you type a selector, the available ones are given to you, much like method hints in IDEs. This would be very useful to me at least. There have been many times when I've needed to know a particular hierarchy/id name/class name and found myself having to reference elsewhere.

To host CSS would be a social/pointy-haired-boss issue but I could make necessary recommendations. In any sense, I love the work that has been done.

This is my more constructive feedback :)

<comment><USER7> Thanks for the suggestions!

We've considered embedding Firebug Lite, since it gets you most of the inspect stuff you'd want for CSS editing. We may still add it.

Autocomplete is also high on the list of features, we just ran into some problems with CodeMirror 2.

</comment></comment></comment></comment><comment><USER14> I personally prefer a different approach. I open both the browser and my favourite editor on the same desktop. I edit my HTML/CSS stuff and as soon as I hit "save", it is shown immediately in the browser. All you need to do is:

1\. Add a <meta> refresh tag to refresh the page once per second. Alternatively, with one line of JavaScript you can refresh even more frequently, e.g. immediately after "on load".

2\. Bonus: Use a tiling window manager such as WMII, which automatically adjust the size of your editor window if you resize your browser window, and vice versa. That way, you get some kind of "split mode" and don't have to struggle with resizing multiple overlapping windows.

In summary, using auto-refresh + tiling window manager resulted a big increase in comfort for me. Not only during CSS development.

 _A bit off-topic, but related:_ If your target runs in the command line, the Unix command "watch" is a perfect auto-reloader:

        watch --interval=0 your-app

For instance, debugging some PHP code by auto-rerunning the test suite might look like this:

        watch --interval=0 php run-tests.php

This gives you immediate feedback after hitting "Save" in your editor, without even having to struggle with your browser.

<comment><USER14> Link to WMII, to get an impression: <http://wmii.suckless.org/>

</comment></comment><comment><USER15> Not to rain on WebPutty's parade (I think it's a great app, and it looks sweet), but I think the problem has been solved much more elegantly a long time ago by CSSEdit: [1]

<http://macrabbit.com/cssedit/>

It's a really great app. Forget about the GUI css editing view and switch to the code only view, and enjoy live updating, and x-ray inspection.

[1]: If you use a Mac.

<comment><USER16> From what I can tell looking at cssedit there is couple of differences here

1\. They also provide a hosted CSS service with minimizing 2\. They support scss

<comment><USER15> Both of these points are fair. To me, personally, neither matter, but if you're into SCSS then CSSEdit probably isn't the right choice for you.

</comment></comment></comment><comment><USER17> This is EXACTLY what I needed and wanted. I was literally about to code my own version of this today but decided to procrastinate and check hacker news, and I'm sure glad I did!

I even made a thread on reddit webdev about it yesterday: [http://www.reddit.com/r/webdev/comments/itqy1/is_there_a_fir...](http://www.reddit.com/r/webdev/comments/itqy1/is_there_a_firebuglike_wysiwyg_htmlcss_editoride/)

</comment><comment><USER18> Here's a bookmarklet that reloads CSS only: <http://david.dojotoolkit.org/recss.html>

</comment><comment><USER19> To avoid a new browser to worry about... how about LiveReload? <http://livereload.com/>

<comment><USER20> Thanks for the shootout. I'm actually the author of LiveReload, and I was just frightened to death upon seeing this news. But gosh, I guess I shouldn't worry too much upon closer inspection.

Besides, competing with Joel sounds like fun.

</comment></comment><comment><USER21> I'm surprised at how many people don't know about a feature they probably already have, found in the Web Developer plugin for Firefox. The Edit CSS lets you see your changes live as you type. I use it all the time.

<comment><USER22> Yes, but it doesn't save them.

You hit refresh and those changes are gone.

I see the value of this for alot of one-person development shops or front-end devs that do a lot of client design work.

Your client calls you, "Hey, this thingy here isn't lining up right"

"click. click. publish"

"refresh the page"

"ohhh....how did you do that?" (Client amazed)

<comment><USER21> If you push in the "Stick" button, changes are not lost if you refresh. It does also have a save button, but yes, you still need to upload the change. (Even though I tend to copy/paste instead of using this.)

But, this is---for me---a one time thing, after I've made all the changes I want and things look great. It makes the CTRL-S, Alt-Tab, Reload procedure that was originally described only need to happen once, instead of lots of times in rapid succession.

<comment><USER23> This is actually the only thing I keep the webdev tools addon around for now, everything else I used to use it for is either in firebug or I've found other implementations for (eg W3C checks I use unicorn first which I have a saved search "key" for).

</comment></comment></comment></comment><comment><USER24> It seems like the market for html/css tools is so vast, it doesn't seem hard to build yet another tool that can end up being profitable. I've been working on a grid-based rapid html prototyping tool <http://pageblox.com> and I was looking to incorporate live css editing similar to this into it. Of course Fog Creek put a twist on it I never would have considered (editing/modifying css of an already live site). I'm very curious to see how (and learn from) how this will evolve as I assume this is their feedback/iteration phase.

</comment><comment><USER25> Wow I honestly thought I was the only one stuck in the save -> alt tab -> upload -> refresh loop. I didn't know this was how some people were doing it. Great tool, trying it out right now

</comment><comment><USER26> am I the only one to clicked this thinking it was some sort of SSH client...;-)

<comment><USER7> Yeah, we didn't really make the connection at first (pun sorta intended...)

We were thinking more like modeling putty or spackle for the web. Oh well :)

</comment></comment><comment><USER23> I've a framebreaker on my blog which means I can't use this without disabling that first. Not saying this is a huge problem just something that might not have been thought of. I guess the user would spot it pretty quickly.

Slightly off-topic, why is there a 350k image file that's dynamically resized (smaller) and only there for decoration. Slowed page load considerably for me (I'm having problems with my connection mind you). Pretty but way off optimal IMO.

</comment><comment><USER27> I tested it and it works fairly well. Although, it is not exactly real time for me, there is a 5-second delay (could be my DSL connection) before the page updates.

It would be even more useful to use it with localhost, however, since I develop on my local computer and then upload the finished code to the server.

</comment><comment><USER28> I wrote LiveCSS for this purpose.

<https://github.com/ooyala/livecss>

It's far simpler in that it just reloads your CSS continually. We use it all the time at Ooyala to put our favorite text editor and a web browser side-by- side and hack away.

</comment><comment><USER29> Damn, was interested until I found out you need to include some external code at the top of the page.

Was looking forward to it just editing my css file I have stored locally on disk, so I could review the changes and commit to source control.

</comment><comment><USER30> For a second I thought it said it supported sccs... I figured that come on, at least go with csv...

<http://en.wikipedia.org/wiki/Source_Code_Control_System>

<comment><USER7> Haha. No, I think if we do anything like that, it'll probably be via Mercurial.

</comment></comment><comment><USER31> Couldn't the same effect be achieved through a bookmarklet that reloads the CSS for the page every 1/5/30 seconds? That would let you continue to use your preferred editor and browser, and the cost of reloading local CSS is slim to none.

<comment><USER7> Yes and no. Live.js will do that sort of reloading for you, but it won't host it for you. You'd also have to set up on the fly SCSS=>CSS compilation. Neither of those are hard, but the idea is that you don't have to do any of that sort of annoying work.

</comment></comment><comment><USER32> I suppose the alternative to solve this I really would to see is much harder to code: a text editor based on Chromium. But would it be snappy.

</comment><comment><USER33> I'd like to have something like this in a relational database. Probably just to try sharing styles across many different elements, sites, etc.

</comment><comment><USER34> Interesting, but I simply would never develop without a real editor. (Whatever a real editor is to you, it's not a text field on a web page.)

<comment><USER7> To be fair, nor is this. We use CodeMirror (<http://codemirror.net>), which at least gives you line numbers, syntax highlighting, braces matching, and (coming soon) autocomplete. Sure, it's no [vim|emacs|Visual Studio|Eclipse|nano], but it is better than just "a text field on a web page".

</comment></comment><comment><USER35> Please increase the font or bold or linespace with icons at the last line of the article; should increase clickthrough.

</comment><comment><USER36> <http://aboutcode.net/vogue/>

Vogue auto-reloads your css and you can still use your editor of choice (vim, emacs, textmate, notepad).

<http://incident57.com/less/>

less.app auto-compiles your less whenever it changes. Similar tools exist for sass, stylus, and whatever other superset of css you prefer.

</comment><comment><USER37> This looks cool, but what does this have over CSSEdit? Will this work with internal only pages? Stuff like that?

<comment><USER38> SCSS and Compass support is important to me. I avoid plain CSS whenever possible, and CSSEdit is pretty useless (certainly not worth paying for) without SCSS support.

</comment></comment><comment><USER39> Meh.

Doesn't seem to work as advertised in Chrome (dev channel).

Not bad, but I was never able to really get into CSSEdit, which is sort of what I imagine it to be similar to. A lot of missing editor features - <USER2> maybe it just not being vim.

My biggest gripe here is that I have to trust someone else to host my CSS. I just can't do that.

I guess I was hoping for a better CssEdit and it wasn't.

<comment><USER40> "You can always export a pretty-printed version of your website's CSS at any time (both the preview and published versions)."

Its extra work, but you can publish the exported CSS with your site.

<comment><USER39> I may just be slow, but I didn't see a way to actually start editing without embedding their link tag on my site. I imagine that'd be hard to do what they want without a bit of hackery to get around cross domain issues, but for casual poking around, it was more than I wanted to do.

I did read that quote, though.

</comment></comment></comment><comment><USER41> Sad to see alot of people thinking SCSS is the latest version of SASS, and not supporting the latter syntax.

</comment><comment><AUTHOR> Direct link: <http://www.webputty.net/>

</comment><comment><USER42> AMAZING!

</comment><comment><USER43> what if I need to add a div?

<comment><USER44> Yeah, I didn't see a way to change the HTML broilerplate without pointing to an actual webpage that has to have the webputty css and js links in it.

<comment><USER7> Yeah, at this point we're not doing HTML because that would mean we would be hosting your whole site. Fortunately, with CSS3, there are fewer extra elements you have to add for stylistic reasons, so it's getting to be less of a problem.</comment></comment></comment>


Ask HN: Do you keep a personal knowledge repository? - <AUTHOR> And if so, which software do you use? I'm fascinated by storing things that I learn outside of my own brain. Ideally I'd love to create my own mini intranet of information, basically a personal wiki, that I can go to first before having to Google things, especially for my field of study.
I've looked into various Wiki packages but none quite seem to offer what I'm looking for (Mac, no need for a webserver, cross device functionality, math markup, searchability, tags)
If you do keep a personal knowledge repository, can you please describe your workflow for using and maintaining  one for all the new knowledge you acquire? <comment><USER3> How long would you like to be able to access this content?

If it is for the long haul, plain text is the only way to go (org-mode, etc).

Any proprietary commercial solution will fade away in a handful of years. At best, you might be able to extract the content before they shut down but structure and metadata may be lost.

Open source self-hosted solutions will last much longer but even in that case it might get to a point the source has been abandoned so long that it becomes difficult to keep going.

Only plain text will survive. I have plenty of notes in a more or less organized directory tree, dating back to the late 80s.

<comment><USER4> I am wondering what information from 1988 might still be of help for you now, but I would suggest that xml and json or similar would still last about as well as plain text, but would enable you to do more interesting things and store more useful documents (say a complete contact list).

<comment><USER5> XML or JSON are also plain text. And Org has excellent support for storing contacts.

Furthermore, a personal knowledge repository may contain information that is pretty much timeless. Say you read Rudin to learn analysis in 1988 and took some notes. Why would that be outdated?

Some academics build huge perosnal knowledge repositories that they keep growing during their careers. These will often span longer periods than 1988-2019. See e.g. Luhmann's Zettelkasten.

The advantage of Org is that it is very readable, as it descends from an outliner, and has excellent tooling. There are options for including tables, equations, bibliographies, links to many datatypes, attachments, extensive date support, etc. Lots of export tools, interpreters to show views of your document, and many other things I have not touched upon.

Yet it is quite simple hierarchical plain text. So it will remain accessible in the future. Aside, Emacs has been around for very long, and will probably remain around much longer due to the Lindy Effect.

</comment></comment></comment><comment><USER6> You can check out Anki[1]. Apart from the initial setup, you won't have to worry about taking care of the web server.

I create separate decks for different fields and then only if necessary do I create subdecks. I also tag all the cards that I create and make sure to spend a lot of time to ensure that it's made and tagged properly. So, whenever I learn something new and I believe at that point of time that it's worth remembering, I create a card for that.

[1]: [http://ankiweb.net/](http://ankiweb.net/)

<comment><USER7> I love anki, and I love this use of it, but how do you quickly make cards? Especially on mobile?

<comment><USER8> I'm also a fan of Anki, I never create cards on mobile (though review them almost exclusively there), but from desktop you can check out [https://github.com/MFreidank/AnkiVim](https://github.com/MFreidank/AnkiVim) and [https://metacpan.org/pod/Anki::Import](https://metacpan.org/pod/Anki::Import). Raw cards are just text, and you can create them with any editor. [https://github.com/corollari/ankiTab](https://github.com/corollari/ankiTab) is also awesome for reviewing.

If you want more theory about Anki / Spaced repetition, [https://www.gwern.net/Spaced-repetition](https://www.gwern.net/Spaced- repetition) is the ultimate resource on topic

</comment></comment></comment><comment><USER9> Deft in Emacs. [1] I write my notes in Markdown or Org-mode, and Deft lets me search them all _really fast_. For cross-file references, I use Org's delightful file hyperlink scheme. For export, I use Pandoc. I've got a project that I haven't quite figured out how to get on home brew (I'm new at this) that takes a file in <format> and lets me read it like a Man page. [2]

[1]: [https://jblevins.org/projects/deft/](https://jblevins.org/projects/deft/) [2]: [https://github.com/ashton314/homebrew- mm](https://github.com/ashton314/homebrew-mm)

<comment><USER10> I also use Org to store data and I use org-rifle to search it:

[https://github.com/alphapapa/helm-org- rifle](https://github.com/alphapapa/helm-org-rifle)

I don't know if Deft recognizes org mode entries, but org-rifle provides entry-based search.

<comment><USER9> Wow. Rifle looks neat. Thanks for mentioning that!

Deft will scan any plain-text file, according to the set of file endings you give it, and it will put your cursor at the point in the buffer where one of the search words occurs, but it won't automatically extract the ending, AFAIK.

I should mention that deft does fuzzy matching, or at least words don't have to be contiguous.

<comment><USER10> Org rifle also does word (substring) search in any order in the title+description if you type multiple words separated with spaces.

</comment></comment></comment></comment><comment><USER11> I went through many software solutions and ended up with Org Mode as well. There may be some clunkiness at the beginning and it definitely lacks the glamour of proprietary solutions such as Notion. But once you get a grip on Org Mode, you will be amazed how deep the rabbit hole goes. ;)

There is a great Org Mode tutorial [1] on YouTube by Rainer König.

The only « problem » is that you need to learn Emacs. I recommend Emacs Doom [3]

Also, I'm experimenting with making my Org Mode notes public. Here's a humble beginning [2]. I only publish them once they are cleaned, so it's just a tiny bit for now.

[1]: [https://www.youtube.com/playlist?list=PLVtKhBrRV_ZkPnBtt_TD1...](https://www.youtube.com/playlist?list=PLVtKhBrRV_ZkPnBtt_TD1Cs9PJlU0IIdE) [2]: [https://zaiste.net/programming/](https://zaiste.net/programming/) [3]: [https://github.com/hlissner/doom-emacs/](https://github.com/hlissner/doom- emacs/)

</comment><comment><USER12> Yep. Txt on GitLab.

[https://gitlab.com/drummyfish/my_text_data](https://gitlab.com/drummyfish/my_text_data)

Most people that aren't me would probably be interested in

[https://gitlab.com/drummyfish/my_text_data/tree/master/cheat...](https://gitlab.com/drummyfish/my_text_data/tree/master/cheatsheets)

and

[https://gitlab.com/drummyfish/my_text_data/blob/master/links...](https://gitlab.com/drummyfish/my_text_data/blob/master/links.txt)

</comment><comment><USER13> I am beginning to use a zettelkasten. I think it's an excellent method for doing deep thinking, especially over a long period of time. See [https://www.seanlawson.net/2018/02/use-zettelkasten- method-s...](https://www.seanlawson.net/2018/02/use-zettelkasten-method- scientific-note-taking/) and [https://zoia.org/2018/11/13/zettelkasten/](https://zoia.org/2018/11/13/zettelkasten/) for good introductions.

Reading this will change your life: [https://www.amazon.com/How-Take-Smart- Notes-Nonfiction/dp/15...](https://www.amazon.com/How-Take-Smart-Notes- Nonfiction/dp/1542866502/ref=sr_1_3?keywords=how+to+take+smart+notes&qid=1559101000&s=books&sr=1-3)

I'm committed to text-only information. No matter how many notes I'm writing, I can always use grep or write my own programs to find what I want.

If you're on a Mac, The Archive is great ([https://zettelkasten.de/the- archive/](https://zettelkasten.de/the-archive/)). It's what I'm using

zettelkasten.de has lots of good reading (thanks, Sascha and Christian!), but look to the other sources I've listed to get a more thorough idea of what a zettelkasten is (I call mine a thinking-box) and how to use one.

</comment><comment><USER14> Last year, I went through this whole gamut of the usual suspects emacs(org- mode), plain text, markdown, tiddlywiki/ mediawiki/bunch of other wikis, google keep, one note, notational velocity, anki, evernote, LaTeX. One after the other, they all crumbled. I tried them all and failed. I got to a point of calm reflection based on my experience with each one. I realized what was most important for me. I eventually settled on a combination of email + git + google calendar. I use a separate email just for my notes. Every new thought, todo, bookmarks, quotes, images of doodles, event, information about people becomes a new email. Any update on the same one becomes a reply to the last email on that subject. Any topic or area that gathers enough content or insight that's worth remembering goes to my git repo's wiki page. If there's enough content/files/code, it gets a directory. Common patterns, get linked via their respective wiki pages. I create collections of related topics as separate wiki pages with links back to the source.

This setup has worked well for me for over 6 months now. I do not worry about email / git becoming obsolete. Or how I would move my email/git data when I need to switch vendors. I can access it via any device I own or through someone else's. Stuff I want to share with people are hosted via git pages or sent via email. I have a plethora of client applications to choose from. And above all... it just works.

I can give out more details but I feel anyone's personal information needs can be met/exceeded with a combination of email + git + calendar.

<comment><USER15> Hi. I also thought of email when I was thinking about this problem recently. How do you get information from your email thread to the wiki? And is this a github wiki?

<comment><USER14> Email is my todo/inbox. Its disposable. Wiki is gitlab wiki. It is my index for the information I've collected.

I do not move too much information from email to wiki. I'm quite mindful of it actually. Wiki gets written and re-written, cross linked and edited. I keep it consistent. Helps quick lookups. I very frequently use markdown files in topic specific directories. Helps store information gathered from deep dives on those topics. Markdown file names are also consistent - YYMMDD-topic- detail.md. Helps sorting by date.

I use the wiki mostly for the free hosting and the links. I could very well use a static site generator when there's enough content in a topic's directory to be shared as a mini website. A link to the wiki on the home screen comes quite handy.

</comment></comment></comment><comment><USER8> I have something called "Diensttagebuch", which is awkward to translate ("Duty diary"?), it's a Jekyll blog (currently at [https://www.pchr8.net/d/dtb/](https://www.pchr8.net/d/dtb/)) for things I know I'll have to google later. I have two bash scripts for creating-or- opening a new page and for deploying (upload to server + commit to git). I use [https://github.com/rking/ag.vim](https://github.com/rking/ag.vim) for searching though the Markdown files on my local machine.

For more general knowledge, Semantic Mediawiki ([http://pchr8.net/f/](http://pchr8.net/f/)), but it's basically a big link database now. I can sort it by rating / complexity / to read / domains / keywords and found it quite flexible.

Also, Anki for things I want to memorize. [https://www.gwern.net/Spaced- repetition](https://www.gwern.net/Spaced-repetition) describes the theory quite well.

</comment><comment><USER16> This is the most impressive example of the genre that I've seen: [https://wiki.xxiivv.com/](https://wiki.xxiivv.com/) (engine: [https://wiki.xxiivv.com/#oscean](https://wiki.xxiivv.com/#oscean))

For me, I use Orgmode, plus a mess of PDFs in folders on Google Drive. I've been looking into both Polar and Emacs as potential replacements for document organization.

Right now I have a single folder that I save new things to, and I have a recurring task to go back and file documents regularly. It's not perfect but it works. I don't often reference my pile of PDFs, though; I might use it more with tagging options, which is why I'm looking at replacements.

I used to use Evernote. There were some things I didn't like about it, although it's been so long that I couldn't tell you what they were anymore. It might be a good system now.

<comment><USER17> > This is the most impressive example of the genre that I've seen: > [https://wiki.xxiivv.com/](https://wiki.xxiivv.com/) (engine: > [https://wiki.xxiivv.com/#oscean](https://wiki.xxiivv.com/#oscean))

Yeah. I am currently using org-mode (plus org-wiki, some bespoke elisp and a few shell scripts) for my own knowledge base _, but Oscean /the Nataniev ecosystem in general has impressed me.

_ plus Zotero for papers/PDFs, plus a pile'o'files stashed using the Universal Decimal Classification for its folder tree, plus assorted odds and ends.

In fact, I spent this week messing around with some of its concepts - <USER2> plus Runic plus a lightweight markup language loosely based on txt2tags + sexps and which should be easy to render even outside the browser.

The idea is to move away from _documents_ (which org-mode is very good at), and towards smaller, rich chunks of information (which org-mode can't handle that well - I hacked things up with properties, but that namespace is flat).

<comment><USER16> > The idea is to move away from documents (which org-mode is very good at), > and towards smaller, rich chunks of information (which org-mode can't handle > that well - I hacked things up with properties, but that namespace is flat).

I've noticed this weakness in org-mode as well. It's really a fantastic tool, but it still has a few gaps here or there. I'm optimistic about its continued development though.

It's good to hear that you liked the Oscean/Nataniev tools; I haven't tried them and it could easily have been all style no substance. They certainly _sound_ impressive. From what I've read, I have a feeling there might be something worthwhile there. And XXIIVV itself looks amazing, although I know that's just one implementation.

<comment><USER17> > I'm optimistic about its continued development though.

Org is amazing, yes, but I'm not too optimistic about this - even if some of its more noticeable warts got fixed (a big one, for me, is the fact that you cannot nest quote blocks), it would still represent a _tree_ of nodes, and trees are somewhat limiting where it comes to knowledge representation.

You _can_ organize information in a tree, but it doesn't neatly fit that model, and just _deciding_ where to put each snippet you captured can be a huge hassle.

> It's good to hear that you liked the Oscean/Nataniev tools; I haven't tried > them and it could easily have been all style no substance. They certainly > sound impressive. From what I've read, I have a feeling there might be > something worthwhile there. And XXIIVV itself looks amazing, although I know > that's just one implementation.

I'm not too sure, either, but I'm going to take a stab at implementing something Oscean-like. I want to see where this approach can take me.

</comment></comment></comment></comment><comment><USER18> I use Evernote. I have multiple notebook stacks for different topics (like each company I work on, ideas, general life notes, learning, research, etc.) and within each stack have a notebook dedicated to notes addressing topics as well (for example in the company stack have a notebook for sales notes, in the learning stack have a notebook for JS).

Evernote has worked well so far and me trying to switch to OneNote didn't work out as well. I'm still open to alternatives, but Evernote has kept my mind organised without a doubt.

</comment><comment><USER19> I use BookStack ([https://www.bookstackapp.com](https://www.bookstackapp.com)). MIT licensed & easy to self host.

It's fast and has good search, a good editor, and uses simple hierarchical organization + tagging. I like that it gets out of my way and does a good job of handling everything from code snippets to freeform thoughts to recipes.

BookStack is best for things that 'look like' documents. Mobile editing could also be better - you have to click a maximize button to get a usable view of the editor and the editor UI still takes up a lot of space. It is web based, but it is very lightweight and I have found it very easy to host.

<comment><USER20> BookStack developer here. Thank you for sharing the project. If you have not yet updated to v0.26 it might be worth doing so as, upon many other UI changes, I focused on trying to improve the mobile UX [1]. Still some issues in iOS to resolve though.

[1] [https://www.bookstackapp.com/blog/beta- release-v0-26-0/#mobi...](https://www.bookstackapp.com/blog/beta- release-v0-26-0/#mobile-experience)

</comment></comment><comment><USER21> Both public and private. Public, a static site made from markdown files : [https://raymii.org](https://raymii.org). Almost 400 articles now.

private, a folder called "notes", with almost a thousand short text files. Workflow for it? Use grep to find what I want. I had a system of folders per topic but that became a mess. Grep is good enough. The notes folder is synced with synching to multiple systems and my phone. On the phone I have termux, which has grep and markor as text editor.

</comment><comment><USER22> I used to use FreeMind [0], a mind-mapping tool that I really like, to keep track of projects, ideas, and things to follow up on. I eventually noticed that the pretty pictures could be represented, without loss of information, by a simple outline in a text file. Reading 'Getting Things Done' [1] got me to think in terms of a 'Current Task' list, which I now keep as a text file, backed up on Dropbox. Anything I need to do, or want to follow up on, or want to dream about in a practical way, gets jotted down in the file, with the most urgent matters at the top, Some really interesting stuff drifts down in the file as time passes.

As I do stuff, things move from the Current Tasks file to a Logbook file. Beyond 'accomplished todo's, that file gets stuffed with, for example, interesting quotes I run into, command lines I think I'll need again, and a record of what I've been up to. When I need to put together a status report, or figure out for myself where my time went, or recall how to do something intricate that I haven't done in six months, I turn to my Logbook.

With these two pieces, I feel like I've got a handle on what I want to do, and a record of what I've done. Now, if I just could find the time to follow through...

[0] [http://freemind.sourceforge.net/wiki/index.php/Main_Page](http://freemind.sourceforge.net/wiki/index.php/Main_Page)

[1] [https://en.wikipedia.org/wiki/Getting_Things_Done](https://en.wikipedia.org/wiki/Getting_Things_Done)

</comment><comment><USER23> [https://workflowy.com/](https://workflowy.com/) This simple yet robust app totaly ruined mind maps for me.

<comment><USER24> This is so awesome I love it, I also love that they dogfeed their own app into the pricing page.

</comment></comment><comment><USER25> I started with the augmentingcognition.com spaced repetition model, and then decided to augment it with a catalog of everything I read(1). For my own original thoughts, I write them down in a few paragraphs and then treat them like any other reading material.

At some point, I ran across the idea that a library card catalog is really just a combined topical index for the entire collection, with each entry being a card. That seemed like a decent model, and I've been happy with it so far.

My system is currently a physical card index because I needed the flexibility of pen & paper to figure out how I wanted it to work, but I've been slowly computerizing it as I figure things out- you can certainly do something similar with flat text files, spreadsheets, or any other general purpose document software.

So now, I have three interacting systems: a citation list that records where I can find things to read them again, a combined topical index of everything I've read, and a flash card deck of things I want to remember without having to look them up.

When I run across an interesting article on the web, for instance, I save a PDF of it to Dropbox for safe keeping and print a copy to read away from my computer. As I read, I'll make margin notes and have two different colors of highlighter: one to note index headings and another to mark passages to be turned into flash cards.

After my morning flash card review, I go through the material I read the previous day and turn all of the notes and highlights into cards(2). Once everything has been moved into the indexing system, I have no further need for the physical copy, so it goes to the recycler.

(1) Of sufficient length; generally 3 or more printed pages.

(2) Initially by hand, now with the aid of a custom piece of software

</comment><comment><USER26> Yes I do but I wish I didn't keep it so haphazard.

By haphazard I mean to focus not only on acquisition but reflection / contemplation: Collecting thoughts is one thing, putting them together into a cohesive and coherent body of knowledge is another. So, that's what I'm working on.

pmwiki for now. Workflow is personal domain, putting browser or window on one side of the screen and what I'm reviewing, or what I'm thinking / text editor (sublime text) of the other side. Putting into a DIY solution based on flask simply because that's flask practice.

I also like pens and paper and whiteboards. So take pictures and use Powerpoint's 'remove background' feature to have a liberal amount of pictures.

A bit rambling, but you asked and asking is usually best! So.. :D !

</comment><comment><USER27> A bunch of markdown/text files in a git repo, hosted on github/gitlab/gitea (github in my case).

This way I can edit the files online on github.com, on my desktop and push/pull the changes. On my iOS device I use [http://workingcopyapp.com](http://workingcopyapp.com) \- I can edit and create files as well as push and pull changes.

On my Desktop I can use any tool I want to search and edit the files, on github I have full text search and working copy also features full text search.

Most importantly: I own my data and they don't up in some database I need to worry about.

</comment><comment><USER28> I use OneNote... just kidding, I actually use TiddlyWiki

</comment><comment><USER29> I use google colab ([https://colab.research.google.com/notebooks/)for](https://colab.research.google.com/notebooks/\)for) things like work notes on setting things up, any new tech I am learning. The best thing is it support code(python). Google keep([http://keep.google.com](http://keep.google.com)) for noting down any interesting thoughts/ideas/lesson I learn through out the day. I usually create a card per month to keep it organised.

<comment><USER30> Really interesting idea to use Colab. I assume that you occasionally download the notebooks for local backup? Also, are downloaded notebooks useable with Jupiter notebook?

<comment><USER29> Yes. Exactly. They can be used with local Jupiter notebook instance as well.

</comment></comment></comment><comment><USER31> Lately I've just been using a directory full of markdown files. I store my personal collection in Dropbox but it would be just as easy to use git or any other tool. I've created an alias to automatically open that directory in my favorite editing tool when I type "notes".

I also manually maintain an index.md file to categorize things, but it's not really necessary when you can just use grep or your editors search feature to find what you need.

<comment><USER32> I do the exact same, down to the "notes" alias. I find the downside to this approach is it doesn't work well on mobile - the Dropbox app can edit files but there's no search and it all feels a bit clunky.

</comment></comment><comment><USER33> Orgmode.

I have been using personal knowledge repositories for more than 20 years now, and if there is one lesson I have learned: never, never ever use any proprietary, platform specific - or worse, web-based - solution, no matter how good it is. Plain text is the only way to go.

My favorite tools in the past were Tinderbox from Eastgate and Curio from Zengobi, but both were Mac only and I had to leave them behind when I switched to Linux a couple of years ago. I collected some experience with Scrivener and used PMWiki a while, but the first is not really supported on Linux and the second wasn't somehow responsive enough for my needs. ZIM wiki on Linux is actually quite nice, but when I discovered orgmode it hit just right and I never looked back for other tools.

My org-file organisation: I have one super-big master org-file in which I collect just about everything regarding software development, technology in general, life lessons and stuff. For customer projects I generally create a dedicated file in which I not only collect knowledge regarding that project, but also do the project management with tasks, documentation and stuff. If one of the topics in the master org-file grows really big (this is for example the case, when I start to use a new programming language full scale for productive purposes) I will migrate that node to its own file. I also keep most of my bookmarks as links in org-files in a proper context, and I like to use links to files in the local filesystem (like PDF-manuals) within my org-files, although this requires some discipline in the organisation of the local folder hierarchy.

The only other tool that I started to use besides org-mode, just a couple of weeks ago is Anki, for stuff that I want to learn by heart.

</comment><comment><USER34> For years I used the FreeMind mind-mapping app, but wanted to move all of it to a server that I could use across devices once smart phones came along, and moved to flat text files in Dropbox that I can edit with any text editor. The other thing with FreeMind is that the UX for navigating mind-maps can get unwieldy when they get big. (maybe there are other apps that implement this UX better, not sure). I have also tried using wiki software ( like [https://tiddlywiki.com/](https://tiddlywiki.com/) ) and other tools that just didn't work as good for me as flat text files at the end of the day. I don't feel this is a solved problem and I would explore other solutions. I think something that has a timeline view and very good search tools as well as integrates with media libraries in the same search and timeline (like my lightroom and my phone's google photos libraries) would be a really cool way to see thoughts and images in the context of time going back to the day you wrote something, etc.

<comment><USER35> > The other thing with FreeMind is that the UX for navigating mind-maps can > get unwieldy when they get big.

In what way? I have some pretty enormous ones and they seem fine so far. I'd like it if FreeMind were more actively maintained, but at least it still works basically fine on the latest version of Java.

<comment><USER34> I just remember expanding and collapsing things a lot to keep what I wanted in view. Clicking and scrolling -- perhaps I never got proficient in the keybindings so that could explain it.

<comment><USER35> Spacebar expands and collapses nodes. I think part of the problem is just that the default settings are bad. Changing these couple things makes FreeMind 10x better:

 _Preferences - > appearance_

      1. Check "edges start from 1 point at root node"
      2. Uncheck "enter confirms by default"

_Preferences - > behavior_

      1. Set "use formatting for all nodes" to no

_Control-rightclick - > hide note window_

</comment></comment></comment></comment><comment><USER36> I use and recommend Notion ([https://notion.so](https://notion.so)) although I do work there, so there's some bias.

It's good for free-form notes, but also has databases and relations for more structured data. Also has top-of-the-like Markdown and HTML export to get your data out.

You can publish parts of your workspace publicly read-only, or share via email with guests.

<comment><USER37> Just searched to find the comment to upvote. Notion changed my life! It took over my life. It is my everything. My life is in Notion now. It is my repository of life. I am not exaggerating. I do not work there. It is SUCH a quality product in every way. You have features that I only even think about after using it every day for 8 months.

</comment></comment><comment><USER38> I used to commit to github repos with varying results:

[https://github.com/jhadjar/Notes](https://github.com/jhadjar/Notes)

[https://github.com/jhadjar/Language- Acquisition](https://github.com/jhadjar/Language-Acquisition)

I then experimented with Sphinx. Then a simple alias `kb` (for knowledge base) and `note` to save random notes to an markdown file synced in Dropbox.

Now I use MKdocs. An intern experimented with it and proposed it and that's what I use for now:

[https://jhadjar.gitlab.io/kbase/](https://jhadjar.gitlab.io/kbase/)

Original notes are here [https://jhadjar.gitlab.io/kbase/notes/](https://jhadjar.gitlab.io/kbase/notes/)

Original knowledge base: [https://jhadjar.gitlab.io/kbase/kb/](https://jhadjar.gitlab.io/kbase/kb/)

Notice the timestamps (the alias opened vi and put a timestamp).

I also use TaskWarrior and have an alias to commit and push the changes to the files to a private repo.

I should collect dispersed files on my disk that are the result of reading articles and books (I open a file in the same directory of a paper or a book and start writing thoughts at a coffee shop, which I send to coworkers, especially for papers).

Bottom line, now I use MKdocs with GitLab pages (for now). It works nicely. The alias is good for quickly jotting down to a file and saving, then it's cleaned and edited and incorporated in the proper file in the knowledge base.

</comment><comment><USER39> Yes, I built an open source tool called Dnote [0]. Basically, I can write down my microlessons as I learn them without leaving the terminal or browser. And it sends me a weekly digest to automate spaced repetition.

I used to use Evernote to write down my knowledge but I quickly found that I never look back at my notes, and quickly lost grasp of my knowledge. That's why I built the automated email digest.

My workflow is simple: when I learn something, I execute a command line program to write it down without leaving the terminal when I am coding. Every weekend, I receive a digest of what I learned in the past. This way, I can successfully maintain all the new knowledge I acquire.

Similarly to your requirements, I often search through my knowledge base in the terminal before doing a web search. Doing so saves me time because my knowledge base is already written in my own words that I understand well.

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

</comment><comment><USER40> I'm using a pen and an A5 notebook.

This helps me to focus on the content instead of thinking how to represent it in markdown/whatever syntax.

</comment><comment><USER41> Im using [https://thebrain.com](https://thebrain.com)

What really sold me was the video "Jerry Michalski: Lessons from 15 years using TheBrain" [0], haven't looked back.

[0] [https://www.youtube.com/watch?v=EzQkJ4lleKk](https://www.youtube.com/watch?v=EzQkJ4lleKk)

<comment><USER42> Looks like Tidlywiki with the map plugin. Cool.

</comment></comment><comment><USER43> Yes. I write things in Tree Notation using a simple file backed plain text database called Treebase. It allows me to easily jot information down using nearly any program and maintain a strongly typed, color highlighted, queryable database.

I have a few different databases now, the biggest in the millions of rows. A workflow for one of the databases, an ontology of human medical measurements, is as follows: 1) I come across a new term, 2) (if afk I first email it to myself) I simply do a "touch term.hipo" at the shell, or use vim, sublime, or another handy tool. Then I add data in a strongly typed but 0-syntax tree language I created called "hipo". If I'm in sublime or another editor I get live autocomplete and syntax highlighting 3) I use git to version everything 4) I have a simple DB server which reads the files and allows me to analyze using any tool, from R studio to Vega, etc.

<comment><USER44> What is Tree Notation? This is the first Google result: [https://en.wikipedia.org/wiki/Newick_format](https://en.wikipedia.org/wiki/Newick_format)

Also, what do you do if you want to put the same node in two different places in the tree? (i.e. you want a graph)

<comment><USER43> [http://treenotation.org/](http://treenotation.org/)

For graph nodes I use an id.

      organization Microsoft
       hq Redmond

      language C#
       corporateSponsor Microsoft

</comment></comment></comment><comment><USER45> I've had troubles coming to a good software solution or workflow either.

Software wise, I've tryed a few things and settled with MediaWiki and some extensions added. Most notably Semantic MediaWiki (adds structured data storage and querying), Semantic Forms (structured forms) and a Bootstrap based skin. But only the technical setup won't get you far in a wiki, so I've also created a lightweight, flexible "ontology" / structure for knowledge management that was fitting my own needs.

This was not too easy to set up (Finding a structure / ontology / data and query workflow, but also the implementation using the wiki itself), but now I'm quite happy with it as a platform. I really wish there would be a lower barrier to entry for people here. If you're interested, please PM me and I can show you some examples.

As for the workflow of personal knowledge management, I'd be really interested what works for other people as well and I'm still figuring this out.

My current approach is using different phases. It's OK for me to read a book and not note anything or only do kindle notes. When reading articles on the net, I usually bookmark more interesting articles using getpocket. I do notes on paper when I don't want to be distracted or influenced by a computer.

For this year, my resolution is to acquire less new knowledge, but to take some time and to rehearse, summarize and repeat what I've found interesting and worth my time before. What sticks here should go into the wiki.

I want to keep my knowledge base very concise and opinionated. There's no need to create a second wikipedia.org. I'll only add something in the wiki when: * Some idea is truly remarkable on the first spot * I go over my old notes see what was the essentials of it. Those are worth putting into a wiki. * When I'm doing some dedicated, structured research around a topic. Then I also try to get the ontology and structure right first. * Code Snippets that I repeatedly use

</comment><comment><USER44> I use the desktop version of Draw.io + some custom code to make the diagrams searchable: [https://github.com/JesseAldridge/draw.io- convert](https://github.com/JesseAldridge/draw.io-convert)

I do think a truly useful knowledge repository will fundamentally need to be a graph structure. This roughly reflects the neural connections in the human mind -- knowledge itself is a graph structure.

Draw.io is the best diagramming tool I've found, but it still kind of sucks in a lot of ways. I've started working on an alternative: [https://github.com/JesseAldridge/consideration](https://github.com/JesseAldridge/consideration)

The key features I'd like to add are multi-user collaboration and search across many diagrams.

</comment><comment><USER46> You would have to pry [https://workflowy.com](https://workflowy.com) from my cold, dead hands. It's the best outliner I've ever used and they actively resist adding features that would only please a subset of users. It offers excellent cross-device synchronization and works nearly as well on a phone as it does in a browser or desktop app context. You can attach notes and share at the node level, either via read-only link or collaboration invite which allows others to graft your shared hierarchy to theirs. It has well-considered keyboard shortcuts.

Most importantly, the search is intelligent and works instantly... even across my 100,000+ nodes.

My entire life is in Workflowy. I am thrilled to pay for my annual subscription, because the value I receive is outrageous.

<comment><AUTHOR> Workflowy looks quite interesting. Could it be used to store in-depth knowledge? My quick play with it on their site looks like it's more of an outline tool, but how would it go with say storing the information that you might find on a Wikipedia page?

<comment><USER47> Shift enter to add descriptions which you paste long form text in.

The issue I've always had is not being able to paste images into it

</comment></comment></comment><comment><USER48> I've had problems finding a note taking suite that I could really buy into. There are a few I've used, they all have some pros and cons, but nothing stands out right now as the clear winner:

* Tomoby:

\- pros: fast, good search, really liked local editing, integrates with quick launchers like Gnome DO and Albert which I found essential for quick references, especially programming and Linux commands which, when I want them, I want them NOW. type: "<ctrl>+<space>grep examples" and have a reference to my most frequently used patters in 1 sec is SO helpful.

\- cons: sync/mobile solutions are hacky, no longer maintained, Ubuntu 19.04 removed it, not encrypted, Copy & paste to/from other apps (Thunderbird) doesn't work like you'd expect, formatting is not preserved.

* Evernote: meh...used it for a couple years. Liked multi-device support. Their web client wasn't that great and they didn't have a Linux client. I paid for it and put maybe 100 notes in it, but eventually stopped using it and converted back to the free version.

* Dropbox Paper:

\- pros: nice editor, have the basics right, integrated with Dropbox which I already use, so no additional cost, good mobile client, really easy to share notes with groups of people (family) or one-offs to others with a link.

\- cons: some bugs and bad UX still, no encryption (but Dropbox already has most of my files so I've already sold out a bit to them I guess), loading a browser tab is just slower than the Tomboy UX described above...I find I like using Paper for longer docs or things I'll access on mobile, but it's just not a good replacement for those quick notes that when I want them, I want them NOW!

I've tried a number of other ones over the years, never really found a sweet spot. I actually think something like Tomboy is really the best note taking app, but for it to really thrive, it would need better options for mobile and note sync than Tomboy ever had. Adding end-to-end encryption and sharing would also be great.

</comment><comment><USER49> I think a public GitHub in markdown format is a wise choice. Firstly markdown can look nice but will always be readable using cat (not what cats for but leaving that to one side...), so there is the longevity factor. Using github means you'll probably have a local copy, and you can subject the repo to your normal backup procedures. But you also have another backup in Github itself. Finally making it public will encourage you to curate it and keep it up to date and not blasé delete old stuff (and git protects you from that too because a force push is required to really delete something). Most importantly it's easy - open any editor and start writing, then commit 'n' push when done.

</comment><comment><USER50> I'm usually in a terminal, so I use vimwiki ([https://vimwiki.github.io/](https://vimwiki.github.io/)) - it supports markdown, adding pages is trivial, and vim tags or CLI tools like grep makes it easily searchable.

It lives in a private NextCloud instance, so everything's available from my laptop or phone (although editing markdown on a phone is no fun).

Edit - this is great for detailed note-taking; I also use a custom command- line tool to capture ad hoc notes, ideas, and suggestions without opening vim. They go into a YAML file right now; tooling in process to pull them directly into the wiki, so everything's in one place.

<comment><USER51> > _It lives in a private NextCloud instance, so everything 's available from > my laptop or phone (although editing markdown on a phone is no fun)._

Have you tried Markor? [https://github.com/gsantner/markor#screenshots](https://github.com/gsantner/markor#screenshots) I have found that it's a pretty good Markdown editor for Android. It's available in F-Droid too.

<comment><USER50> Thanks for the suggestion - I'll give it a look!

</comment></comment></comment><comment><USER52> I keep a personal library (of physical books) for this reason. People often underestimate the value of spacializing knowledge. I write in the margins, mark them up, and leave scraps of paper with notes. Then I put them on shelves in broad categories - for me that's things like architecture, design, technical, photography, philosophy. The result is a system thats's easy to retrieve from, and importantly, easy to browse. The spines become symbols for collections of thought. I have yet to come across a piece of software that more effectively facilitates drawing inferences and connections from deep material. IMHO everything else can be found on Google.

</comment><comment><USER53> I wrote my wiki server [1], as I was missing a proper freeware at that time. I run one instance at home for my private stuff and one on my office computer for confidential infos related to work.

The wiki stores pages in simple text files that are easy to backup, it automatically calculates birthdays of my contacts (stored with semantic annotation in an XML style), and provides an Android App to synchronize all pages on a mobile phone. Many wiki pages are organized hiararchically, but most times I use the full text search.

Technically it runs with Java on any OS, and has a built-in web server.

[1] [https://moasdawiki.net/](https://moasdawiki.net/)

</comment><comment><USER54> I have a wiki I keep on GitHub rendered with GitBook.

Here is my workflow of editing and publishing it:

[https://wiki.nikitavoloboev.xyz/other/wiki- workflow](https://wiki.nikitavoloboev.xyz/other/wiki-workflow)

</comment><comment><USER10> The most important for me is quick storage and retrieval, so everything must be keyboard based. To make a note, I press a global hotkey, an editor window pops up, I write the note then close the editor with a hotkey.

It makes it very seamless to make new notes.

And for retrieval I press another global hotkey, a prompt pops up, I start typing and it immediately lists my matching notes (the search query can find the typed words in any order of course), I select from the list with enter and the note is displayed, and can be edited too if needed.

So finding something takes usually at most 5 seconds (pressing the hotkey, typing, selecting). A mouse-based system could not beat this efficency.

<comment><USER55> Would you please explain the components of this setup? Hotkey tool, window manager, search tool etc? Thanks

<comment><USER10> Above I only described the general concept which can be implemented with various tools.

I personally use Autohotkey on Windows for the global hotkeys which when pressed activate my running emacs for new note or search (I use orgmode in emacs for notes). And for searching I use the org-rifle package.

</comment></comment></comment><comment><USER56> Evernote. For KM, I keep notebooks labeled:

\- Excerpts (for summaries and excerpts from books and articles)

\- Snippets (for code snippets, formulas, etc)

\- Reports (for results of research on a subject, e.g. learning new API)

\- Papers (copies of research papers)

Dividing notes in such a way also helps to review them with varying frequency. For example, snippets get outdated often (e.g. workarounds for bugs or polyfills) so I have to go over them more often. Reports get updated as I learn new things about a particular subject that has its report. Excerpts are updated only if I decide to re-read the material they cover and extend them. Papers last as long as I'm interested in subject.

</comment><comment><USER57> Twitter Favs and Safari Reading List (iOS and Mac) • to quickly capture items I'll want to revisit in the future. For instance, I added this HN discussion to my Reading List, so that I can later review the other suggestions and try them out.

Drafts (iOS and Mac) • quick thoughts I want to bang out before they dissolve. Drafts is focussed on being the fastest zero-to-blank-page experience on iOS, which makes it very handy for rapid spur of the moment universal capture.

Quiver (Mac) • I periodically review the above two, and catalogue them here for long term storage. There's no structure to review, this is just my brain's external HD.

</comment><comment><USER58> I use NVAlt with a quite complex tagging method. All in all, I guess you could say that it is a Zettelkasten notebook. [1]

[1][https://zettelkasten.de/](https://zettelkasten.de/)

<comment><USER59> If anyone is interested in developing zettelkasten app based on keyboard shortcuts + vim hit me up at artur (at) qnsi.io

I want to open source it in the future. It is electron app soon to be written in typescript

</comment></comment><comment><USER60> Yes, I use checkvist. ANYTHING I find mildly interesting goes into this list. This is great for when I come to something that I need to research or want to start going deep into; when this happens I've already accumulated dozens of links and bits of data to follow up with. As of the time of writing this, I have over 6000 unique links or bits of info. It's all organized by fairly arbitrary naming that I sometimes change.

E.g. my top levels are: \- server administration \- networking \- programming \- telephony \- science \- mathematics \- culture \- management \- job search

</comment><comment><USER61> Yes, I write on little journals, I have almost 6 yrs doing it and I have a little box full of them, It isn't organized but it's always nice to look through when I'm searching something.

<comment><USER62> I do this too with the little journals. Started in 2011 and am on journal #72 at the moment. They still fit in a shoebox.

My secret is to transcribe the journals to text files. Then it's searchable, too!

A frequent (daily) transcription process also yields other benefits such as being an intrinsic reminder system.

</comment></comment><comment><USER63> I use adoc or markdown files in a personal git repo that I host on my own AWS instance. I use gitolite to manage access to the repo and even keep a version on my phone/tablet.

Works pretty well and is rather cheap.

</comment><comment><USER64> I stick everything into Notes on macOS in an unstructured way and just use the search function to go back and find stuff. I also use Trello for more complicated things, but use that way less.

<comment><AUTHOR> Notes would almost be perfect but the lack of being able to hyperlink between notes easily makes it a non starter for me unfortunately.

</comment></comment><comment><USER65> I have give a lot of thought to this. I bookmark a lot but its always hard to find information later on when you need it.

I came up with my own mental model "Make Knowledge Actionable". With that, I find it is important to align knowledge you are saving with your goals. This means that someday I might need it knowledge should be kept in a different spot.

If I have some time, I have thought to build a system that lets me find information via mind map and different categories of abstraction.

<comment><USER66> I partly misuse Zotero as a bookmarker that does offline copies, indexing and gives me the possibility to categorize and tag.

</comment></comment><comment><USER30> For years I used Evernote but give it up a few years ago.

Now I use a combination of org mode, PDFs and miscellaneous document types replicated in both Dropbox and Google Drive, and on macOS the system search finds things. Dropbox search only hits file names, Drive search is more useful.

In addition to my own notes, I collect PDFs of good papers, copies of books I have bought, etc.

EDIT: forgot about Google Keep and Apple Notes - sometimes use for specific things like vacation travel notes

</comment><comment><USER67> I use DevonThink. It's an incredible piece of software.

I have a database for 'research' where items are stored according to the Dewey Decimal categories (no particular reason for choosing this other than it's well organised and well documented).

I then have a separate 'memex' database which contains my journal and other miscellanies.

DevonThink has a rudimentary AI system which attempts to link documents by context. I find it quite useful.

</comment><comment><USER68> Notable is a great free markdown editor on GitHub. You can import regular markdown or Evernote files. All the files are stored in one directory and are grouped by tags. The tags can be hierarchical if you're looking for that. Most of the time though the regular file search does great.

I find myself making so many small notes of how I did things at work or with AWS, zsh etc.

It's a really powerful system while simple at the same time.

</comment><comment><USER69> A student of mine led me to an interesting note taking application:

Cherry Tree [https://www.giuspen.com/cherrytree/](https://www.giuspen.com/cherrytree/)

It was quite impressive on the variety of notes and document types it was able to organize.

Also seemed to have good support for outputting in various formats.

CherryTree is positioned as an open source alternative to OneNote.

</comment><comment><USER70> I've found markdown + VS Code/whatever editor perfect for it. You get full directory traversal with its system and get to view the files in a formatted way (even if the formatting marks are still there) while being able to edit on a whim. I'm considering git for it as well. You can also cloud sync your folder to other devices on any number of providers.

</comment><comment><USER71> I am using Joplin for all my knowledge articles and notes. Available for all main desktop and mobile OS's. Great Evernote replacement with good Webclipper. Notes can be edited in Markdown. Syncing to Nextcloud, Dropbox, Onedrive, Webdav. And fully open-source. Currently a few 1000 notes, searchable or browsable via notebooks or tags.

</comment><comment><USER72> I seem to be posting this every single day now...

[https://tiddlywiki.com](https://tiddlywiki.com)

</comment><comment><USER73> I have a public one: til.secretgeek.net where I've posted hundreds of little technical things I've learned. Uses gitbooks.

Plus a public wiki where I posted things I'm interested in: wiki.secretgeek.net

Also have private places where I store things I learn that are business confidential etc. As well as a password manager for the most protected things.

</comment><comment><USER74> I've been looking for something similar to a browser history, but it actually snapshots the text/images for each page so that I can search it. Ideally it would be OSS, self-hosted and cross platform so that it can feed a repo from desktop web and phone.

Seems like something as simple as a firefox add-in would be useful.

<comment><USER75> Memex by World Brain does this pretty well. Open source and stores all your browsing with great search. Can tag and highlight pages, as well as back up to cloud services

<comment><USER74> That's perfect thanks!

</comment></comment></comment><comment><USER76> I use books (writing by pencil) and also plain text files on computer. This works fine for me.

</comment><comment><USER77> LOL! Yeah, in my browser bookmarks! It...Is...A... MESS! I basically have it in typical outline form: I.A.1.a.i.,etc., without the I.A...headers, but rather, titles. I noticed the other day that I have 3 different Linux Main chapters, 4 Tutorials Main chapters...and suddenly, an epiphany. It reminded me of my brain: a lot of things in there, but a real pain to try and find. And those mind- mapping apps? Why? They don't have any semblance of order either! They looked like the web from a spider whose all 4 pairs of eyes are crossed. I am trying to brainstorm, but then my ears fill up with water from the storm, and those tiny lightning bolts are painful! I will figure something out. Oooh! Time to go play in traffic! Momma says it's good for building up my reflexes! K, bye! ~MJC

</comment><comment><USER78> Here is mine [https://github.com/kisswiki/kisswiki/tree/master/src](https://github.com/kisswiki/kisswiki/tree/master/src)

A lot od topics

</comment><comment><USER79> I use Notion.so and my second brain. I used to store all this info in markdown files spread across many folders. The most important tool that Notion has for me is a quick search over all this data.

</comment><comment><USER80> I use Google Keep and add all my personal learnings under a common label - <name> Wiki. Google Keep has excellent search capabilities too so easy to find what you're looking for.

</comment><comment><USER81> I really like Quiver ([https://github.com/HappenApps/Quiver/wiki](https://github.com/HappenApps/Quiver/wiki)).

</comment><comment><USER82> I am currently experimenting with Notion, really well done knowledge orgination, but not open-source and paid... so long term might be hard. Anyone has any experience with Notion?

<comment><USER83> yes. Actually I don't mind to pay if that's something that will help me to keep my mind organized so I can minimize brain mistakes

</comment></comment><comment><USER84> I actually do use onenote, and it's great.

Github would be better, actually....

</comment><comment><USER85> I saw somewhere that Woody Allen keeps a bin full of pieces of paper that have 1-2 sentences of a possible plot of a movie, just throws another one in when there's an idea.

</comment><comment><USER86> Yes, I started one a few months ago at [https://github.com/as1ndu/notes](https://github.com/as1ndu/notes)

</comment><comment><USER87> I use google keep [https://en.wikipedia.org/wiki/Google_Keep](https://en.wikipedia.org/wiki/Google_Keep)

</comment><comment><USER87> I use google keep [https://en.wikipedia.org/wiki/Google_Keep](https://en.wikipedia.org/wiki/Google_Keep)

</comment><comment><USER88> Try [https://scrapbox.io/](https://scrapbox.io/) This is a cloud service. A kind of wiki, but easy to edit.

</comment><comment><USER89> boxes of university notes losing their meaning year by year

and evernote, where I occasionally drop ideas, save snippets of code or commandline pipelines along with snipped articles from the web usually recipes or long form articles

I would benefit from doing more

More short term I write whatever is happening on especially long narrow ruled legal pads (8.5 x 14) which often still contain lots of information after a few years

<comment><USER90> It is comforting to find I am not alone in this.

</comment></comment><comment><USER91> Definitely i use [https://knowlocker.com/](https://knowlocker.com/)

</comment><comment><USER92> Notes for things I want to jot down. Things that are code end up in projects that I periodically refer back to.

</comment><comment><USER93> I'm using Selfhosted Atlassian Confluence - they have a $10 starter license which works nicely for this.

</comment><comment><USER94> It doesn't quite tick all your boxes but I've been really impressed with Typora for this purpose.

</comment><comment><USER95> yes. i do this every day on my personal blog. i highly recommend it. i've been doing it for 18+ years, every day. publishing something... anything.

[http://john.do/first/](http://john.do/first/)

</comment><comment><USER96> VoodooPad, with web export.

</comment><comment><USER97> I do. Primarely using Trello and Gitbook for my Encyclopædia Universalis

</comment><comment><USER42> Tiddlywiki</comment>


Ask HN: Email app: How to store emails for enterprise? - <AUTHOR>

I am planning to build an enterprise Email app similarly to Mailbox + Evernote. What is the best approach to store emails for enterprise customers?<p>Granted, on-premise solution is needed at the end. How do I build for that transition? And where do I start? (or I just have to demonstrate to the 1st client then execute an on-premise solution?) <comment><USER2> The most realistic solution is to start with basic functionalities on your own infrastructure. Store the emails on your (private) cloud. Of course try to maximize security. Then offer on-premise storage of emails as a premium functionality and build the functionality when your first customer wants to upgrade to this package.

</comment><comment><USER3> Its a little worrying that you plan to build to enterprise (I'm assuming you are in the UK), yet are asking one of fundamental questions about data security. Have you considered other security fundamentals that might be critical for an enterprise mail client?</comment>


Show HN: Bild – A collection of parallel image processing algorithms in Go - <AUTHOR> https://github.com/anthonynsimon/bild <comment><USER2> This looks nice! I especially appreciate the example images with simple code.

This looks like it could be used to re-implement a lot ImageMagick fairly easily. I love ImageMagick (well, except for hijacking really generic command names like 'convert' and 'identify'), but re-implementing those features in a memory managed language like Go is a real security bonus for servers processing images from untrusted sources. See ImageTragick.

<comment><USER3> On one hand yes, on the other how much performance do you lose to the memory management? Maybe Rust would be a better choice for maximal performance?

<comment><USER4> Memory management for a one-and-done image conversion isn't much of an issue. The program will pretty much allocate, run a few _very_ fast GCs since almost all memory usage is in a handful of big arrays (some people seem to have this idea that all GCs are multi-millisecond ordeals, which isn't the case), and then at program termination just throw everything away. A program like this could get away with an allocator implementation that allocated normally but whose "free" is a no-op [1].

What would slow something like this down is not using the relevant assembly code to accelerate working with these images. A very quick glance at the convolution package, chosen on the grounds that if anything is ASM it probably is, shows that this really is "pure Go", in the sense that it doesn't use Go's ASM support. The compiler will not optimize that to speak of, certainly there's no autovectorization, so it's going to be significantly slower than an optimized program that does make correct use of vectorized operations.

Though, in theory, this can be cleaned up over time. Go does have the support built-in for fixing that in a reasonably nice way, as long as you don't mind that it has its own assembler dialect.

[1]: Not 100% related, but close enough, the part towards the end: [http://www.drdobbs.com/cpp/increasing-compiler-speed-by- over...](http://www.drdobbs.com/cpp/increasing-compiler-speed-by- over-75/240158941)

</comment></comment></comment><comment><USER5> Any performance numbers?

When processing millions of pixels, and deciding to tradeoff handwritten vector assembly for nice Go, it's valuable to know exactly how much performance we are losing in return.

<comment><AUTHOR> Hey! I just added some basic benchmark numbers in case it's useful: [https://raw.githubusercontent.com/anthonynsimon/bild/master/...](https://raw.githubusercontent.com/anthonynsimon/bild/master/benchmarks.txt)

This will hopefully also make performance regressions over time a bit more visible.

<comment><USER6> maybe a good start, seems this compares rotation for 90 degree angles and resizes of natural multiples (2,3,4..) if so that's not enough to consider for production consideration.

Check out benchmark suite, seems more comprehensive: [https://github.com/jcupitt/libvips/wiki/Speed-and-memory- use](https://github.com/jcupitt/libvips/wiki/Speed-and-memory-use)

</comment></comment></comment><comment> enahs-sf Bild = picture in swedish. I see what you did there.

<comment><USER7> Same in german - greetings to Sweden! :)

Also the name of Germany's biggest tabloid, which is a pitty, though...

</comment></comment><comment><USER8> @amzans any reason you're doing a show HN now? Been following this for a while, and just noticed a new release... is there something in it that makes you feel it's ready for prime time?

</comment><comment><USER9> Question related to this topic, about video encoding: We are spending quite a bit of money on Amazon ElasticTranscoder for video encoding. Wondering if anyone had experience or advices to selfhost that kind of service? Any project I should consider for a proof of concept?

<comment><USER10> This article outlines how to run FFmpeg on AWS Lambda: [https://intoli.com/blog/transcoding-on-aws- lambda/](https://intoli.com/blog/transcoding-on-aws-lambda/) With favorable cost comparisons to Elastic Transcoder. Not self-hosted, but looks like significant cost improvement. Also, one could set up a 'transcode farm' with virtual/real machines using FFmpeg running parallel with some light scripting for automation. Looking up 'render farm' might yield some ideas for distributed image computation. Just some ideas...

<comment><USER11> I ended up building a transcoder within the past few months using Lambda that is handling, as of today, 500k+ videos per month and growing. This was replacing a set of EC2 instances similar to what you described.

A few caveats I ran into: 1) You are limited in how much /tmp on a Lambda instance can hold (512MB total). For the transcode I'm doing on these boxes, some of the videos are that size just to download. It will fail. I have a backup using the older method to handle these very large instances. 2) These, obviously, need a pretty decent amount of RAM to run.

But the benefits are really worth it for us. Elastic Transcoder, for our needs, was going to be >$15k/mo). Our current transcoder cost is around $400/mo. The previous, EC2-based iteration, was a step up for us, but it sometimes took a while to start. Doing it with Lambda has actually been less expensive, provided a faster experience for our customers, and was significantly easier to build than the EC2-based option.

Not bad for a project to see if I could write something in Go.

<comment><USER12> Couldn't you attach an EBS or EFS volume and use that for temporary storage?

Sure, even if it's on SSD, it's still likely to be more expensive than local storage on the lambda instance, but that might still be better than using ec2.

</comment></comment></comment></comment><comment><USER13> Totally going to use this in my world generation project. Thanks!

</comment><comment><USER14> How does this compare with libvips? [https://github.com/libvips/libvips](https://github.com/libvips/libvips)</comment>


You Are Your Own Worst Enemy - thoughts on ego protection and self-sabotage - <AUTHOR> http://zachobront.com/you-are-your-own-worst-enemy/

<comment><USER3> This is a very "classic psychology" view. As usual there are alternative views and in this case specifically: [http://en.m.wikipedia.org/wiki/Signalling_theory](http://en.m.wikipedia.org/wiki/Signalling_theory) [http://en.m.wikipedia.org/wiki/Handicap_principle](http://en.m.wikipedia.org/wiki/Handicap_principle)

A startup world interpretation, in a nutshell - the reason we value organic growth or the achievement of a small team is that they are "honest signals". They are "honest signals" because the were achieved while "handicapped" compared to achievement supported by more resources (ex. marketing budget, big teams etc.)

</comment><comment><USER4> I disagree with the author. Handicaps are real, very real, they are not mere excuses to protect our sense of self-worth. If anything, what the handicapped/troubled person desires is to lift and be free his burden - <USER2> not to use it to fail repeatedly.

Apart from that, yes subconscious fear of failing, of being not good enough, can paralyze you and demolish your productivity. You spend time searching for that perfect design, then you stumble upon someone's else work, feel inferior/get jealous - go back to the drawing board, and your project gets never completed, not even halfway done. You can never be perfect enough.

So, striving for perfection is not a good ally, striving for providing solutions is.

But please keep real problems/issues out of that, you don't have the right to insult troubled people and call them under performers, and diminish their burdens to "excuses for failure".

<comment><AUTHOR> This isn't meant to be a hippie, voodoo, "all you need to do is focus on success and it will come" message. There are real handicaps.

But there's also tons of people hurting their chances of success in order to protect their egos. It's not just about perfectionism (although that's one manifestation).

Which "real burdens" did you think were targeted that shouldn't have been?

</comment></comment><comment><USER5> That's why we on HN say: 'Build it and ship it'. Everything else is 'could have, should have' noise.

<comment><AUTHOR> This started off as a piece about Jobs' "Real Artists Ship" quote and slowly evolved. "Build it and Ship it" really is the entrepreneur's corollary to this whole line of thinking. Glad you picked up on that.

</comment></comment><comment><USER6> Hi, I just graduated in CS this summer. Coming into uni out of foster care I always felt that things were much more difficult for me than for other students because other students had their families for support and didn't have the same emotional baggage that I do.

There have been times though where I've wondered if I was self-handicapping, how do I know that things aren't as difficult for them? I guess I felt it would be more acceptable for someone with my background to fail or break the rules.

Like the students the author writes of, I once thought I was exceptional but I'm not and it's surprisingly difficult to be honest with yourself about that.

<comment><AUTHOR> Re: Are you self-handicapping? Probably not. You've got a real disadvantage. BUT that doesn't mean you should hold yourself to any lower of a standard. I find that a useful heuristic is to automatically answer "yes" to this question. In other words, if I told you authoritatively, "YES, YOU ARE SELF- HANDICAPPING - SNAP OUT OF IT" what would you do differently? Usually, whether it's true or not, those are the right decisions.

Re: Exceptional. I'm sure you are. Exceptional is a vague term and that can lead to big ego swings. We can all find evidence that we're "exceptional" and "non-exceptional" every day. The trick is to realize that assuming that your exceptional innate abilities will lead you to success without work is a myth. Just keep hustling. Excellence is a habit, not a trait.

</comment></comment><comment><USER7> Very interesting read. I have to admit that I have been guilty of this self handicaping on more than one occasion. The self illusion of being able to achieve great things if you just put in the time is very difficult to overcome. To me I believe that the difficulty comes from a mix of complacence & fear of discomfort.

One thing that still bugs me to this day, is why this types of issues seem to be more prevalent in the software industry than anywhere else. Has anyone have an idea as to why this is?

<comment><USER8> I would say it is due to the fact that computers are full of wondrous things that distract us. How many software people have fought game addictions to gloriously complex and involved game? There are more distractions being created than there is time in the day to enjoy and when you feel tired it's so easy to just access that push button entertainment.

</comment></comment><comment><USER9> Something something a smart man knows he knows nothing...

Perhaps part of it is a personal predisposition to be able to face a hard truth or accept that the chances of failure are high.

</comment><comment><USER10> "We all tend to overestimate the situational factors in our failures and overestimate the individual factors in our successes."

I recall reading somewhere that attribution of the factors differed by culture, with the people in the US generally blaming themselves for what happens in their life, and Europeans tending more toward external factors. Unfortunately I couldn't find the source, so take it with a grain of salt.

<comment><AUTHOR> There's a whole bunch of factors that affect it. It's actually Eastern cultures that tend towards external factors (relative to us North Americans). But, in general, everyone focuses more on the individual factors than they should: it's called the Fundamental Attribution Error.

I've learned a bit about this recently in a Coursera class on social psychology. I tried to attach the lecture video but you need to be in the class to watch it. I recommend joining though - it's fascinating (and free).

[https://class.coursera.org/socialpsychology-001/class](https://class.coursera.org/socialpsychology-001/class)

</comment></comment><comment><USER11> Not sure if I really want to take life advice from a blog with the title "meditations on winning".

<comment><AUTHOR> I usually ignore critical comments, but on deeper thought that tagline comes off a lot douchier than it did it my head. There's a better word for what I'm trying to convey than "winning" but I can't come up with it.

Now that the tagline's changed, you can go back and take some life advice ;)

</comment></comment><comment><USER12> Regarding eating seconds as a self-destructive act is short-sighted. The same man can both eat seconds and not be or look "like a pig", i.e. overweight, He just needs to exercise.

<comment><AUTHOR> In this case, eating seconds is not a self-destructive act but an example of cognitive dissonance. Maybe it's not true for everyone, but most have the feeling that they're doing something wrong/unhealthy when they indulge in too much dessert, but they have the temptation to do it anyways.

That's cognitive dissonance. Self-destructive behavior is just one example of a weird way we deal with that tension (in this example, maybe that's the person who says "I have bad genetics, so it doesn't even matter anyways!" before stuffing their face).</comment></comment>


Ask HN: am I doing back-end right? - <AUTHOR> Hi, I have done quite few projects both in front-end and back-end. I've tried different technologies for both, but I think only back-end tech are relevant here: bare-bones PHP, Symphony, Node.js with Express and Passport, Flask
The thing is, when I have to make a front-end prototype it takes me under 1 hour to have the first prototype and the pipeline ready to continue, be it Javascript or CSS. However, when I have to do a project with a User system there are way too many details to consider, even if I'm using helpers as Pasport.js
For instance, for each of the PUT/POST/DELETE methods where there is some data, I need to check (in Express with Passport.js):
- Authentication
- Authorization
- Is the data valid?

  - There is data at all

  - DB validation as a ReGex or similar
 - Build response (some times complex)
- Handle errors in EACH of the previous steps
I feel like I'm missing something as I'm repeating manually most of the steps. Is this the way it's supposed to be, that each POST method takes a large amount of checks? <comment><USER2> Yes, you are missing a framework. With a decent one you'll get all of that for free, _without doing anything at all_. Try Django, and you'll get user, validation, authentication and more out of the box.

<comment><AUTHOR> I am recently using Node.js with Express, which _is_ a framework. I'll try Sails.js as it seems more complete, thanks.</comment></comment>


Is it possible to bring down the Internet for the entire U.S. like in N. Korea - <AUTHOR>

With the recent news of the North Korean internet going down I have been wondering what would happen if the US were attacked in such a way. First of all is it possible (or likely) for a hacker or group of hackers to take down the Internet across the entire US? If so how? If not why not?
And secondly how would a group of white hat hackers bring it back up. For instance could local groups bring up regional networks and then eventually connect them up across the country?
I know this question is kind of vague but use your imagination. <comment><USER2> The conclusion of internet experts before about 2000 or so was that an attack to shut down the internet was impossible (you couldn't get enough bandwidth from an attack point) but the consensus changed around then as P2P came online and there were the massive virus infections.

If you could control a very large number of nodes (say all the Windows machines) then you could certainly disrupt the internet as a whole.</comment>


Early History of Unix: Unix Is Born and the Introduction of Pipes (1997) - <AUTHOR> http://people.fas.harvard.edu/~lib113/reference/unix/unix2.html <comment><USER2> _Design and build software, even operating systems, to be tried early, ideally within weeks. Don 't hesitate to throw away the clumsy parts and rebuild them._

It is interesting that early Unix tool builders in the 1970's recognized the value of what were later known as lean or agile software principles. This must have been quite radical for the time compared with waterfall development.

<comment> UK-AL I'd say its the default mode for developers.

Waterfall is what you get when business people try to apply traditional business principles to software.

<comment><USER2> > I'd say its the default mode for developers.

In my experience, seeking early feedback isn't a natural tendency for developers, whereas working with cool technologies on challenging technical problems is. This is why developers prefer the "big bang" style of development, which allows them to perfect their code and over-engineer the solution while delaying the inevitable confrontation with reality. They also fear the prospect of this reality check because it might require them to throw away large chunks of their code, which they often resist because, like most people, they get too attached to their own work. So they can't see its actual faults or else can't bear to recognize that there was something wrong with it, an unwelcome blow to their self-esteem.

</comment></comment></comment><comment><USER3> Where is Part 1? I tried replacing the '2' in the URL with a '1' (and also tried removing it) but got their 404.

<comment><USER4> The whole chapter is at [http://people.fas.harvard.edu/~lib113/reference/unix/unix9.t...](http://people.fas.harvard.edu/~lib113/reference/unix/unix9.txt)</comment></comment>


When to let go? - <AUTHOR>

Hi everyone I'm just kind of curious 'bout when is the right time to let go a project. I'm running this site for more than 16 months already and didn't really attract a lot of users. When do you think is the right time to close down shop? Do I need to shut down the site or I am just overreacting here? <comment><USER2> As soon as you have evidence that its not the right direction. Confirm your instincts with friends/advisors. Maybe there's obvious pieces your missing in the never ending value puzzle.

Contact me at messel at gmail dot com if you would like specific feedback. I can make time later this week.

</comment><comment><USER3> As long as it benefits you in one way or the other, I'd keep it going.

Once it becomes a burden, without any benefit (be that statisfaction from having a user base, or monetary gains or whatever else), then it's time to let go.</comment>


For effective career advancement - best practices for interview and search. - <AUTHOR> http://blog.mightyspring.com/post/72676490918/mighty-springs-guide-to-getting-the-right-job

<comment><USER2> Can anyone think of a better summary of 'next steps' advice/resources?</comment>