Why I can't stop using Vim - <AUTHOR> http://www.kornerstoane.com/2014/06/why-i-cant-stop-using-vim/ <comment><USER2> I spent this entire weekend setting up Evil mode for Emacs, in the Emacs Starter Kit package. It's been decent so far. Evil mode is surprisingly good, and I really don't think it could come any closer to vim emulation for Emacs. Took a lot of googling around to set up some basic plugins that I need - projectile for CtrlP etc. I think the only thing that I need atm is Magit integration with Evil and I'll be good to go.

What has been amazing so far is that even after using vim for almost 3 years, I'd been sort of afraid of diving deep into the config system (I made do with copy-pasting some popular vimrc files) and it was good enough, but in the short span of 2 days, I've actually gotten to know more about emacs configuration style than I ever did about vim. And I suspect it will only get better as I start to learn Emacs Lisp.

<comment><USER3> Do you happen to have some resources you can share? I've been playing with Tidal, a live-coding library and it wants me to use Emacs, and I just... can't. So any info on setting up evil-mode would be great, especially since it's fresh in your mind. I've found some resources but really don't know where to start.

<comment><USER4> What problems are you facing? Setting up evil mode takes just what the emacs wiki says.

1\. Install emacs. Start emacs. "Alt-x package-install" press enter "evil" press enter.

2\. Open your .emacs or .emacs.d/init.el.

      (require 'evil)
      (evil-mode 1)

Done.

<comment><USER5> Biggest problem for me when I first used evil was learning that C-g is what I need to press when I accidentally hit an emacs chord sequence and want to abort. I had to google a few times to find that out when Esc wouldn't get me out of the minibuffer.

</comment></comment></comment></comment><comment><USER6> I don't really understand the comment about etags; if you use ctags in Vim, you'll get the same kind of functionality. If you want something more advanced, Emacs has support for cscope and GNU Global which give you more features. Considering that he's interested in having something better than VimScript and wants org-mode, it seems that Emacs + Evil would really be the best fit for him.

<comment><USER7> I've never had any problems with etags, either. I've always gotten the same functionality as vim. Maybe we are missing something.

<comment><USER8> I had this same problem: they function differently in evil mode than Emacs mode; for some reason evil does its own word boundary definitions for etags lookups, and it breaks up words on underscores. I dug into it, and it was some problem with evil's word semantics (that only existed for etags lookups). I ran out of energy to debug it further, and just went back to Vim.

Regular etags called with the emacs bindings worked just fine, but switching contexts from evil mode was a pain.

<comment><USER9> Thanks for quantifying it for me. I never dug in deep enough to figure it out. It always just felt "wonky" when I used. (That's an opinion, of course.)

</comment></comment></comment></comment><comment><USER10> I use a text editor because using a text editor that you've mastered is pleasant. (I'm an Emacs user fwiw.)

I think we should stop trying to rationalize this choice.

Or rather, we should realize that we like text editors because we went through a long training and acquired complex skills which are fun to put in practice. Being a power user of Emacs or Vim is is satisfying, the same way mastering a video game is satisfying.

<comment><USER11> If that is so, why do people change text editors? (I agree with you, I just wonder this myself)

<comment><USER12> I'm only speaking for myself with the below. ymmv of course

I get the "grass is greener" feeling sometimes, so I go looking to see if anything better has come along.

Then there's just the practical switch. My main job is in .net right now, while my home computers are all linux distros. It's made me search through a lot of editors to find something that runs well and feels good with windows.

I also just like to explore software, you know? A for instance would be Sublime Text. I've said it in a few other threads, but I do dig some of the features in ST2. They really did multiple cursors right. It's a really simple, but intuitive and powerful way to edit things. Using that on ST2 me want it everywhere else, and also made me fall in love with how they set up the command palette. Using emacs for a bit made me really dig how elisp worked. Light Table showed me another take on the integration of a language into the editor itself. So it's a lot of curiosity with that, and to know what's out there.

As an aside, if Neovim delivers it's promises, it'll probably solidify vim even further as my only editor of choice, but I'll still go looking around to see what other people are coming up with.

<comment><USER13> Haven't installed this yet, but it looks promising for multiple cursor support for Vim: [http://vimawesome.com/plugin/vim-multiple- cursors](http://vimawesome.com/plugin/vim-multiple-cursors)

</comment></comment></comment></comment><comment><USER7> I suffer from the same thing. I've gone even futher: I've customized my tiling wm to work with the vim keybindings; my file manager also works with those keybindings; I use vimperator, a firefox plugin, that has those keybindings...

There's a lot of stuff that I wish were better in vim, but, at the end of the day, it gets my work done better than anything else out there, so I don't have any reason to move away from it. It works amazingly well with tmux (otherwise, I would be using emacs + evil -which I actually use for Clojure-). And I'm pretty excited about neovim :). They are doing an outstanding job.

<comment><USER14> Yep. Pretty much every piece of software that I write for myself or use I write or customize so that it has vim style modes and keybindings. Keyboard input is still the highest bandwidth human computer interface (voice can't quite make it because error rates mean that the bandwidth actually ends up being lower), and modality is an excellent way to reduce complexity and provide simple cues that make it easy to compartmentalize and remember lots and lots of useful commands.

</comment></comment><comment><USER15> "/ for searching (really, no other editor has made it this simple)" Well, it's really esc-/ which is no easier than ctrl-f. Or am I missing something?

Edit:

Same with "1G to go to the top of the file, G to go to the bottom" \- esc-1-shift-g vs ctrl-home. Same with ctrl-end.

<comment><USER16> I think you're using the editor's modality wrong.

ESC is not used to exit from Insert mode. ESC is used to switch from any mode back to Command mode. In fact Command mode is also called Normal mode. You should spend 95% of your time in Normal mode and use the other modes when you need them.

I suggest binding `kj` to ESC since it allows you to quickly make a change and continue browsing your code. Take the following session:

* Browse and spot something that needs to be changed

* Type `ci(messages, callbackkj`

* Keep browsing with `hjkl` as you're in Normal mode

While it may seem weird, I've yet to find an occurrence of `kj` in a program in years of using this binding and my hands haven't left the keyboard. The cognitive weight is zero as well (at least after building muscle memory).

Now, I believe it depends on the kind of programmers you are. My coworker is the kind who types in a lot of code and rewrites a lot of stuff. I'm the kind of rewires things and make subtle changes after spending a lot of time reading it. In other words it works well for me but probably wouldn't for him.

<comment><USER17> Interesting coincidence, I was pasting a production certificate into Vim the other day and it contained "kj", which escaped the editor and ate a few letters until it reached an "i" and continued pasting.

It took production down for 30 minutes until I noticed it. Remember, kids! ":set paste".

<comment><USER18> "+p will paste the system clipboard.

<comment><USER17> No way!

I just tried it, it doesn't work :( That's too bad.

<comment><USER19> That's for GUI Vim. If you're using Terminal VIM you can install this plugin: [https://github.com/kana/vim-fakeclip](https://github.com/kana/vim-fakeclip)

<comment><USER17> Thank you, I'll try it right away!

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> Funnily enough, I'm going to other way: long time Emacs users, getting closer to switching to evil-mode (Vi emulation in Emacs). Doubt I'll ever leave Emacs though.

As an aside, how does one keep up with Emacs package development? There is lots of stuff that's new to me (e.g. I just found out about company-mode). I'd like to have some way to have this information pushed to me, rather than having to go searching.

<comment><USER21> You may want to check r/emacs on reddit. People discuss about new packages there. If someone knows other resources, please let me know as well.

</comment></comment><comment><USER22> First you'll learn how to orientate around text quickly using normal mode, then you'll start playing with tabs, splits and buffers to search between multiple files, and then you'll start using registers to save phrases and regular expressions to search directories. At that point you'll never want to leave Vim again.

:wq

<comment><USER23> :x

(It's the same as :wq, but one character shorter.)

<comment><USER24> Even shorter:

        ZZ

"Shift z z" is one key shorter than "shift colon x enter"

<comment><USER25> Colon? That sounds painful, map it to some single keystroke. I use back slash on my tiny cherry keyboard.

        noremap \ :

<comment><USER24> Isn't backslash the default <leader> keystroke?

<comment><USER25> yep, have leader mapped to space ;-)

</comment></comment></comment></comment></comment></comment><comment><USER26> I've learned to love the modal nature of vim, or rather, the notion that text entry ('insert' mode) is merely one aspect of manipulating text. The combination of movement of commands is very powerful and these days I feel naked when I use editors without this ability.

My first dedicated text editor was BBedit (when it was still freeware), and for many years had extended experiments with other editors, always eventually returning to BBEdit. Something about it always clicked with me, and I felt like Siegel and co. fundamentally understood both the Mac and the needs of programmers.

These days I keep BBedit around for its excellent diff tool, syntax- highlighted multi-file grep search and replace, and its decent project browsing. But it's mostly a supplement to vim (MacVim), which I use all the time when I'm actually in there editing text.

</comment><comment><USER27> One feature he missed is its not as configurable, and in some situations that is awesome.

So you're doing something weird, manually, but I repeat myself because if it was BAU you'd automate the whole process in puppet or similar. The local vim will work more or less like every other vim out there. Can't really say that with emacs.

If you're traveling somewhere weird, vim is a great travel companion. Not because it can be compiled anywhere (lots of editors can be compiled anywhere) but because it works the same anywhere.

<comment><USER9> I think Vim is potentially as configurable as Emacs, but it is harder to do after you get past some basic key mappings and a few plugins.

In all my exploring of Emacs, I never saw a .emacs that wasn't completely tricked out with custom stuff that only works for that user.

Because of this, I believe you are correct - it's easier to work in a plain vi environment since we don't typically trick out Vim like our fellow Emacs users do with their environment.

</comment></comment><comment><USER28> Yay, I'm glad J got a shout-out even if it is one of the rejected editors. I've loved using J in the past and have even made a few releases of J on sourceforge [0]. I've attempted to move to github as well [1]. Sadly, I haven't found much time to work on it -- paid work and family take precedence. Oh, and I too love using vim as well.

      [0] http://armedbear-j.sourceforge.net/
      [1] https://github.com/kevinkrouse/j/tree/master/j

</comment><comment><USER29> > and 'Esc' to move around again.

For me personally this is the reason I stopped using Vi(m) except for occasional config file editing on unfamiliar servers, and started looking elsewhere (Emacs) for my goto text editor. I'm not looking to switch, but it genuinely interests me how Vi users put up with the constant need to strain their pinky to switch to command mode.

<comment><USER30> I remapped it to 'jk'. I don't think I've seen any vim users using 'esc' key to go to normal mode.

<comment><USER31> Then the single 'j' becomes slow...

</comment></comment></comment><comment><USER32> I can't stop using vi key bindings, whether that's Evil for Emacs, VsVim for Visual Studio, the Intellij one, Sublime, etc..

But my days of using straight Vim are over. For a straight text editor, I finally got over the hump with Emacs recently, and I'm not going back.

</comment><comment><USER33> I went back to Sublime after using Vim for a while but then realized I was going to have a terminal open 24/7 anyway so what's the point? Then I learned how to use a terminal multiplexer and now Sublime and other GUI editors just hinder my workflow. IMHO if you're a programmer you should know how to use a terminal to the point that you prefer it over most GUIs (of course, you should always use whatever has the feature you _need_ ).

Oh, and on a side note:

Vim and terminal usage _is not_ a "time sink" and it pains me whenever I hear people who consider them selves "programmers" claim it to be. If you haven't learned how to use the terminal yet (or haven't found a use for it) then you aren't a respectable programmer IMHO. I would not read a book on programming by someone who doesn't know how to use a terminal and I would not take a class on programming taught by a professor who doesn't know how to use a terminal.

<comment><USER34> I'm not a seasoned user or anything, but I prefer to use Emacs with a GUI rather than in the terminal. It has nothing do with there being more GUI-type things in there - I have things like save-icons etc. turned off. It just feels more like it's own application in GUI mode (if I run it in terminal mode, the Meta hotkey doesn't work as usual, which I suspect is because the terminal is using the alt-key (meta) for something else and so it overrides that hotkey). Why should I prefer to use Emacs in terminal mode? I am honestly open to changing my mind.

<comment><USER35> The only advantage I know for using emacs in terminal is that you can get used to it when you'll have to ssh into a remote server.

Anyway today we can just sshfs and use even a random ide for everything so... we can do as we like.

<comment><USER36> In my experience, any sort of filesystem remoting a la sshfs simply doesn't perform well enough to do real editing work in. One of the really nice things about vi is that it was originally designed for low-bandwidth situations, so using it over ssh is quite snappy even on a marginal network. If I had to use sshfs from home to edit files on my production servers I would probably have to kill myself.

<comment><USER37> I agree. I can comfortably get seconds ahead of what's displayed on my phone, when needing to fix something in an area of poor coverage. Knowing my ASCII chart can come in handy, on the limited phone keyboard, though...

</comment></comment></comment></comment></comment><comment><USER13> It's great that people are so inspired by Vim that they continue to create new plugins, tutorials and websites like Vim Awesome: [http://vimawesome.com](http://vimawesome.com)

<comment><USER9> Thanks for the link. I checked it out today and was finally able to convert from pathogen to Vundle. The site gives you the exact strings to configure the plugins in all the major plugin managers. IIRC, it scans github looking for .vimrc files and indexes them to gather usage data. Very cool.

</comment></comment><comment><USER38> Even now that I'm practically married to SublimeText, I can't stop using classic mode and I still sometimes end up in vim by force of habit.

</comment><comment><USER30> >q to record a macro; @ to execute it again

Is using macros' really common? I haven't yet figured out in when and where to use macros during my workflow.

<comment><USER9> I do a lot of work on multiple rows/sections/blocks of similar data. My workflow usually goes like this...

1\. Do the same thing 3 times, realize that I'll be done faster if I automate it. 2\. qz to record a macro into buffer z. 3\. Do the work, taking care to leave myself in a state where the next invocation of the macro will pick up right where I want it to. 4\. q to finish recording. 5\. :map <M-f12> @z to execute buffer z 6\. Hit Alt-f12 over and over until I'm done.

Seems like a lot of steps, but it has saved me tons of time.

Of course, as the other commenter said, some folks don't use the feature. That's ok. There's room for all kinds :)

<comment><USER4> > 5\. :map <M-f12> @z to execute buffer z 6. Hit Alt-f12 over and over until > I'm done

Why map? @z and @@ till your are done? Or if you have this in your vimrc:

          vnoremap @@ :normal! @@<CR>

@z, visual select, and @@.

</comment></comment></comment><comment><USER39> What I never heard explained in one sentence about vi is: why have multiple modes? Why not zero modes instead?

<comment><USER40> Multiple modes allows the same keys to do different things in different modes, there isn't much more to it than that.

Say, at a Bash shell prompt in a terminal window, pressing Ctrl+R starts "reverse command search" mode, so that pressing letter keys searches for commands entered in the past, rather than entering a new command. In this mode, up and down move through search results, rather than moving through the entire command history like in "normal" mode.

Lots of software has modes, the unusual thing about Vim is that they have names, and that there is a mode with a focus on navigation.

<comment><USER39> Why have a mode focused on navigation? Is there something this mode allows beyond navigating? What would be impossible to do if you didn't have this mode?

The keyboard allows you to navigate too, without the need for a mode.

<comment><USER39> I interpret it as a positive sign when someone downvotes without an explanation (live above). It's a sign they don't understand a topic well enough to refute its main point. I'm sorry if the comment above also caused you to grow indignant.

A better response would have been to zoom in at the main argument and say the most important thing there is about it.

If you aren't downvoted enough you are probably not revealing anything controversial.

<comment><USER41> Please don't post about being downvoted on HN. As the site guidelines say, it never helps and makes for boring reading.

Downvoting happens to everybody, and most unfair downvotes are corrected after a while by other users, rendering the complaint even more pointless.

<comment><USER39> _it never helps_

I'm not sure how true that is and I might be able to prove it.

(1) One way it could help is: if I could get feedback about where I went astray. That's what I want to know when I'm downvoted. I don't care about a karma point, I care about learning something new.

Which makes me wonder: would it help to ask people explain _why_ they downvoted something -- even if their username doesn't get attached to an explanation that becomes public?

(2) Here's an instance where it actually helped: [1]. Me explaining in [2] why [1] was downvoted (which was at something like -1 at the time) lead into [1] being voted again and [2] being upvoted too for clarifying the situation.

(3) This comment is aligned with HN's own request for providing feedback about what's good and bad for HN comments [3].

(4) You should be alarmed when you see a guilty word like "never" used. Particularly if you are the one using it. It's an alarm that indicates you are going to an extreme to justify a position. If what you say is evidently true, you wouldn't feel the need to try hard to qualify it. Or at least, when I made this argument in [4] people voted 20 points for it (which you dang can verify as an administrator).

(5) These arguments suggest reviewing the site guidelines and it's hard to dismiss them as useless. They could improve HN.

[1] - [https://news.ycombinator.com/item?id=7285865](https://news.ycombinator.com/item?id=7285865)

[2] - [https://news.ycombinator.com/item?id=7288741](https://news.ycombinator.com/item?id=7288741)

[3] - [https://news.ycombinator.com/item?id=7605973](https://news.ycombinator.com/item?id=7605973)

[4] - [https://news.ycombinator.com/item?id=7565441](https://news.ycombinator.com/item?id=7565441)

I fully understand if what you've discovered studying downvotes is that dealing with them differently leads into more problems than it does dealing with them with the advice of "don't post about being downvoted". I also understand if you are not willing to deal with those problems now. But saying "it never helps" sounds far fetched. You are claiming there's nothing that can be done about downvotes, ever. That's a strong claim to make, especially in a field that's only 50 years old.

</comment></comment></comment></comment></comment></comment><comment><USER42> I know this is a minor point but using 'gg' to move to the first line is easier than '1G'.

<comment><USER43> The author started in vi, which has no gig as far as I can tell.

<comment><USER44> And I use :0, which is consistent with :N to get to the Nth line, which I also use. (I know, :1 same, just my habit.) And I could use :% to get to the last line, for more consistency, but G is my habit there.

Many ways to edit a cat.

</comment></comment></comment><comment><USER45> It's unfortunate that, to me, the title implies there's something wrong with a person who still uses vim and nothing could be further from the truth.

<comment><USER46> Oh c'mon. Us vim users are seen as "those crazy people" by the majority of other programmers, and they have at least _some_ point :)

<comment><USER47> I am the only person in my office that uses Emacs. Everyone knows vim. Everyone loves vim. You think you're the crazy one?

<comment><USER46> Jokes aside, outside of certain areas which are fairly unusual, most programmers have never used vim OR emacs and I would guess that most don't even really know about them. It can be hard to imagine in the echo-chamber that is the online tech scene, but really most developers just use IDE's and get on with life.

<comment><USER13> What I've noticed in the Boston/Cambridge area is a resurgence of interest in Vim. I've been to companies where they are intentionally using Vim and not an IDE, even though they could. They have repos on GitHub (like [https://github.com/thoughtbot/dotfiles](https://github.com/thoughtbot/dotfiles)) where everyone pulls down the standard Vim and other dotfiles and goes from there.</comment></comment></comment></comment></comment>


HTTPS safe? Maybe not - <AUTHOR> https://blog.conformal.com/https-safe-maybe-not/

<comment><USER2> Interesting. However, the elephants in the room are, as usual, trusted root CAs - why bother with breaking the encryption when you can just MITM the connection?</comment>


Ask YC: is MVC the best solution? - <AUTHOR>

Somehow my intuition is always a little bit at odds with MVC (as found in current web frameworks). It feels more natural that the view would request the data it needs, especially if it is putting together a mosaic of different sources.
For example, I guess most web applications have some sort of layout view and include the content into it. But what if there are different kinds of things to include? For example there could be a list of logged in users to be displayed in the sidebar, or any number of widgets. It seems unnatural to have to gather the data for those in every controller call.
My experience is with Java frameworks, where usually the flow is through one controller - how does for example Rails deal with that sort of thing? For Java I guess the proposed solution is Portlets, but I haven't seen their wide adaption yet, and they seem to be another headache (those Java specs should be made shorter and more concise).
What is the best solution? <comment><USER2> I don't think the most tangible benefit of MVC is reuse, but rather code organization. In MVC, if you're looking for something, you know where to find it. That saves a lot of time. It's easy to write an application, but harder to maintain it.

Also, imagine an application with a Web view displaying a data set returned from a controller. Now the client/user wants an OS-native version of the app. That's simple, just build a native (OS-specific) window view and call the same controller for the data set (model). Or maybe an API is needed for external consumption. In that case a web service "view" can be built to return the same data set from the same controller. We're just swapping views here--it's plug- and-play.

It's a clear separation of responsibilities. I believe that used to be called "modular" programming. ;)

</comment><comment><USER3> It seems like you've run into limitations in the frameworks you've used, not in the MVC pattern itself. In ErlyWeb (which I created, so I'm biased -- but not too biased), components are implmeneted by a controller module and a view module. Any component can include any other component. The controller decides which subcomponents to include, and the view decides where to put them after they've been rendered. This design makes it natural to separate a page into different controllers + views that can be reused in other pages. It also maintains the MVC philosophy that the controller should decide what should be rendered, and the view should decide how to render it.

MVC is an elegant design pattern, but I think an MVC framework must provide a simple way for components to include other components. Otherwise, I can see why you would find it frustrating that your main controller has to do all the work.

</comment><comment><USER4> Many people accept the MVC dogma as the word of god. In truth, it is a design trade-off just like anything else. You should really look at SeaSide or UncommonWeb. In SeaSide the view and controller are combined into a component in the way you describe as intuitive. In Rails best practice is to create partials (partial views) that can be re-used across views, put code into the model instead of the controller, and use before_filter to trigger re-usable functions.

</comment><comment><USER5> "For example there could be a list of logged in users to be displayed in the sidebar, or any number of widgets. It seems unnatural to have to gather the data for those in every controller call."

Aren't these things conceptually separate views, each having its own controller?

However, mentioning MVC and web applications gives me an excuse to engage in nostalgia and once more mourn the passing[1] of WebObjects. It was simple in WebObjects to make any reusable part of a page into its own component. Also, MVC has a much bigger payoff when you have development tools designed to support it. WOBuilder allowed you to graphically build interface components, then just drag connections between properties in your controller object and the widget you wanted to display them in. And not just top level properties, but you could drill down through the relationships of any object (e.g. user.shoppingCart.numberOfItems, Google "key value coding" if interested). (And yes, this is just like Cocoa and Interface Builder, came out of the same technology base originally.)

I have yet to see any web development tools[2] that come anywhere close to the productivity enabled by WebObjects. And I didn't even get into the Enterprise Objects Framework...

[1] WebObjects is still very much alive inside Apple (iTunes store, Apple Store, pretty much everything Apple does on the web) but for outside developers it is quite dead. The only life support is ant + Eclipse plugins, but that defeats the whole purpose as the development tools were the whole point of WebObjects. [2] Tools as distinct from programming languages. WebObjects was Java, so nothing special there, but real old timers still miss the Objective C version.

</comment><comment><USER6> Rails has filters that can run before, after, or around some or all of your controller actions. This can be done on a per controller basis, or it can be application wide. In this case you'd probably define a "load_widgets" before_filter in your application controller, then set your view to display whichever widgets it had data for.

<comment><USER7> There are other pieces of this puzzle besides before_filter.

In Rails, you don't necessarily have to have a monolithic view. On more complex sites, you use fragments, called partials. Sidebars can be easily created by having a "shared" view directory full of partials. Further, there is a content_for helper in Rails views. Views render late; you can set an instance variable in the subviews that will affect what gets rendered in the layout. Trying to keep track of that can get hairy, so content_for abstracts that for you. Combined with the partials and the before_filter in the controllers, you can get a view to produce a number of things without having to resort to pulling DB info inside the views -- that reminds me too much of the bad old days of PHP.

In the logged-in users example, in what is normally in the sidebar, you use a render :partial => 'shared/users' if @users; then add a before_filter in the site-wide application layout to pull in the data if someone is logged in. A more complicated example is to render a "sidebar" partial, which renders more partials depending on some array of sidebars you want to display ... then use a before_filter to figure out what you want to populate the sidebars with. Any controller or actions can override or add to that sidebar array.

The main thing that sucks about this kind of organization is having the code scattered in a number of different files. This is where using an editor that knows the relationship between the files is important -- you can hit some key combination and jump between the different fragments without having to hunt them down in the file browser.

<comment><USER8> I think having that degree of modularity is a great thing (granted you have a good text editor). It makes it much easier to understand what's happening in the code and much easier to maintain it (and get someone new up to speed).

I was helping out on this one site built in PHP a while back where the code _wasn't_ organized this way. It took me about a week to figure out where things were, which was a huge productivity drag for the other guys.

<comment><USER7> I just found this out five minutes ago -- You can get a plugin called "embedded actions" for Rails (2.0, and probably 1.2.x). The README is here: [http://dev.notso.net/svn/rails/plugins/embedded_actions/trun...](http://dev.notso.net/svn/rails/plugins/embedded_actions/trunk/README)

A snippet from the README:

Unlike partials, embedded actions also let you define business logic to be performed before the partial is included. That logic is encapsulated in the already well understood metaphor of an action inside a controller.

So a simple call like

<%= embed_action :controller => "songs", :action => "top10" %>

lets you include an html fragment containing the top 10 songs into any of your pages, regardless of which controller, action or view wants to do the including.

\----

In other words, you call "embed_action" from within a view which will call the controller-action and embed whatever result is there. You still get the organizational benefit of MVC without the hassle of rolling your own partials.

As an additional note to what I was saying about partials, Rails 2.0 also has a concept of "partial layouts", allowing you to switch out the surrounding content of a partial.

</comment></comment></comment></comment><comment><USER9> Try Rails and see. It's pretty impressive. Django is supposed to be pretty good too if Python is more your thing.

</comment><comment><USER10> To answer your question in the title...MVC is a good solution. The way frameworks implement it also varies, but basically the idea is to setup a way to separate things into a few layers. I have found MVC-based systems easiest to implement and modify because of this separation.

Caveat: My MVC experiences have been mostly with Java (Struts) and Python (Django) Then to get into your actual points:

1) The view CAN do the work of determining what will be shown. To quote the Django site: "In our interpretation of MVC, the "view" describes the data that gets presented to the user. It's not necessarily how the data looks, but which data is presented."

2) Anything that is a common widget should be abstracted and included on the page in some sort of "include". Either have some sort of base page that does the work, or on the individual pages do some method of "include". This really doesn't relate to MVC, other than your point about adding the data to your context/session, which should again be done generically and non per-page.

3) The general idea for any MVC system is to have the flow go through one controller. This controller may delegate to sub-controllers, but the idea is everything goes to one spot.

4) What is the best solution? There are many good solutions for writing a web app.

<comment><USER11> "The view CAN do the work of determining what will be shown"

1) In Django the controller is called the view and the view is called the template, same principle but unless you want to get confused you should think of it as MTV == MVC (if you want to equate the two, Django seems to be perfectly happy making up its own interpretation of MVC for no apparent reason). Really the controller (in the MVC sense) is doing the work here.

<comment><USER10> Sorry I think its just the wording that is confusing here.

The controller is doing the work to determine what will be shown, yes. I meant once the controller determines which view should be used, the view then can manage the specific data being shown.

Django does separate the view into a 'view' and a 'template'. One does your work, and the other does the displaying.

</comment></comment></comment><comment><USER12> The trick with MVC is to realize that it's not some immutable magic spell, it gives results by enforcing a separation of concerns: data-modeling (and its manipulation and constraints) in the model, control-flow (and selecting and ordering the data to be presented) in the controller, and rendering it a certain way in the view.

If you, as you suggest, have the view (essentially a glorified HTML template) request the data it needs (e.g. from multiple sources), then your data- selection and visual-presentation become tightly coupled. (The point of a view is that you can have _multiple_ views of the same data). If the original view is handling things like data-selection and complex control flow, then when you want to create an alternate presentation of the same data, you'll end up copy- and-pasting code (c.f. "Don't Repeat Yourself").

So the best solution is to get a really good feel for separation of concerns, code-non-duplication, etc., and then organize your code accordingly. When using MVC, use every bit of it to keep your code simple and decoupled; if you just slap code into units called "models", "views", and "controllers" wherever you like, then you will receive NO BENEFIT (or negative benefit!) from using MVC. But, used properly, it can be a powerful tool.

</comment><comment><USER13> The Best Solution for what? Client side mashups? Greenfield development? Mixed-platform interop? Speed and threading? Flexibility with changing requirements?

Not trying to be a jerk, it's just a complicated question. I guess you mean greenfield web applications? Even then I'd have to ask things like how heavy you were client-side, what languages you knew -- most importantly, where's all the data? If you're delivering data basically from the server to the client and back, does most of the processing take place on the client or the server? Some MVC paradigms are crazy to push into Javascript. Some are crazy to use for simple projects.

Lately for Web 2.0 Applications, I'm using a framework that has a lightweight MVC (very lightweight!) in Javascript and pulls information using JSON from various sources. But I wrote it myself, so I'm biased.

MVC is a paradigm that can be applied a lot of ways, in a lot of situations. Most frameworks emphasize the controller, when the model is really what you're after. Your controller classes can "dumb down" in many scenarios to be so lightweight as to not require a separate class. Hard to do that with a pre- canned framework. I guess I would be extremely careful in confusing the framework with the architectural conceit it uses -- two different concepts.

</comment><comment><USER14> The biggest benefit of MVC, in my view, is the amount of reuse it encourages. When a view has no knowledge of what it has to do, you can reuse it an infinite amount of times. A table view is a table view, it shouldn't need to know what its displaying. A button shouldn't need to know anything about your app, because its just a button. This is what makes Cocoa/IB so powerful. In some instances, you don't even need to write a controller, you can just use a stock controller, like Cocoa's array controller.

I would also say that this is one of the biggest drawbacks of current client side web frameworks. Reusing views is much more difficult than it should be, especially if you want to do anything remotely custom or complex, since subclassing is essentially not possible and delegates are very infrequently used.

</comment><comment><USER15> I tried using Struts for a project a few years back and after I realised how much easier it was to maintain the codebase with a proper enfored separation, I never looked back.

Though I found myself, in many cases, writing more code than I would have without a framework, I found the maintenance benefit more than compensates.

Things have got more complex in recent years with more and more complex interaction logic embedded in webpages with Javascript and i'm not sure i've seen many frameworks address this.

Admittedly, there are now better frameworks out there than Struts (this was Struts 1) and I think i'll have to do a bit of exploring for my new project's website but we'll see.

</comment><comment><USER16> I think MVC suitability is dependent on the language used. MVC works well with imperative languages but isn't necessarily desirable if developing for example in a functional language.

</comment><comment><USER17> Java also has a good component oriented framework: Wicket. I think MVC it's a nice and simple solution, it does the job. However, IMHO component oriented frameworks are conceptually better and reuse is much easier.</comment>


Getting the Tech Community to Adopt Encryption - <AUTHOR>

Since most of the tech community disagrees with government surveillance, and tech community early adoption is often the catalyst for mainstream adoption, what do people think of getting the tech community to start using end-to-end encryption for basic internet services like email and instant messaging?<p>The first I've found is Silent Circle (https://silentcircle.com/web/home/), which provides end-to-end encryption for a variety of services. Does any have experience and knowledge of its reliability, or a suggestion for a better service? <comment><USER2> One tip: make it dead easy to set up. Look at the Text Secure app: you can first pair with just a click, and everything is handled automatically through SMS. Nothing to type. The verification part is a bit more involved, but easy to do with QR codes.

The real problem with end to end security and things like email is that you cannot automate it without a central authority. You will still need to exchange keys at one time, and making that secure is hard.

If you are ready to make compromises, you could set up email clients so that they always send their public key in a header somewhere (or a pointer to their public key). You would not be sure on the first exchange that it is really the person you are talking to, but you would get the assurance that future messages come from the same person.</comment>


A striking experiment shows how you can run on quicksand - <AUTHOR> http://arstechnica.com/science/2012/07/a-striking-experiment-shows-why-quicksand-solidifies/ <comment><USER2> I find it hard to believe that anyone ever thought containment was necessary for oobleck to harden. It basically bounces if you throw a glob of it at a hard surface.</comment>


I'm choosing euthanasia etd 1pm. I have no last words. - <AUTHOR> https://twitter.com/hintjens/status/783254242052206592 <comment><USER2> I have known Pieter since around 2002. We didn't meet or talk that often, but usually we would have a fun few hours every FOSDEM. On one of those occasions we defined "our" religion, stallmanism.com Pieter transferred the site and domain to me a few days ago.

In the past few months I have been almost obsessed with consuming everything he wrote and published. It is exactly my way of thinking. Of questioning reality and turning it upside down so it works even better.

I will miss him. And I will continue to learn from him. We all knew this was going to happen, he was most transparent in keeping us informed about it. So I am sad, yes. But I am also immensely grateful and positive.

Pieter, it was an honour and a privilege to have shared time with you. Peace for you.

<comment><USER3> I'm just discovering him, and reading through his blog.

His writing is just what I needed right now, at this time in my life. Particularly about how to be happy.

I think when you've lived such a prolific life, you don't need any last words. His life's work speaks for itself.

<comment><USER4> > His writing is just what I needed right now, at this time in my life. > Particularly about how to be happy.

This is the particular blog post in which he talks about 'how to be happy'

[http://hintjens.com/blog:99](http://hintjens.com/blog:99)

<comment> happy-go-lucky > 8\. Revalue your time

> Stop wasting your time on commuting, boring jobs, meetings, TV. Do only > things that you feel are worthwhile, with people you like. If this means a > cut in income, so be it. Be the person you really want to be. Don't take it > all too seriously, we all die.

Thank you.

<comment><USER5> Just spent 9 hours in a conference arguing about how we are going to implement 12 months worth of features which are slated release in 3 months.

Quote hits very close to home.

<comment><USER6> This is your fallback then:

> 10\. Want nothing, accept everything

> Above all, explore the world without desire or demand, and be tolerant of > whatever happens. Most people are nice, and even the others teach us. When > you want nothing, you cannot be disappointed. When you accept everything, > you will see beauty in every moment.

</comment></comment></comment></comment></comment></comment><comment><USER7> I have a degenerative spinal condition, 38 years old, no idea if/when the degeneration will reach the point where I need to use a ventilator or when my faculties will dip below a certain point on the [CGS][1].

But when these things start looking more imminent, I hope I have the courage to do what he has just done, I really do.

Incredibly brave decision.

[1]:[http://www.glasgowcomascale.org/](http://www.glasgowcomascale.org/)

Edited to Add: Added link to the Glasgow Coma Scale, shouldn't have assumed knowledge of it.

<comment><USER8> I don't think GCS is a terribly useful metric for evaluating your own quality of life... You may place more or less value on certain functions, so a '13' might be totally fine, or not worth carrying on, depending on which points were 'lost'.

</comment></comment><comment><USER9> This keeps me up at night. I hope the collective advancement in science makes it possible to defeat cancer some day. I believe/hope that my contribution as a insignificant CS-student helps somebody develop tools that help somebody researching etc.

I am really convinced that every advancement is connected somehow and the collective improvement in efficiency and livings standards makes it possible to commit more resources and train even more students to work on hard problems.

Even the work on something unrelated like React might somehow help if you observe humanity as a whole.

Also f*ck cancer (i read the guidelines and i found no statue against insulting cancer, if there is a user named cancer its a misunderstanding and you should really consider changing your username)

<comment><USER10> There is an immense amount of software work to be done in biotech. Molecular biology research is in need of better automation, analysis, visualization techniques, and on and on. We need folks at all levels. I entered biotech as a web developer and have been able to pick more challenging problems to approach on a monthly basis. We know next to nothing about the human body. Im optimistic that tech will help out us on a stable path towards more robust research practices.

<comment><USER11> My background is distributed computing/grid computing. How can I contribute?

<comment><USER12> At the UC Berkeley AMPLab we're working on scaling genomics [0], all open source under Apache 2 license. Or more generally, any of the Open Bioinformatics Foundation (OBF)[1] projects could use a hand, open source licenses vary.

[0] - [https://github.com/bigdatagenomics/adam](https://github.com/bigdatagenomics/adam)

[1] - [https://www.open-bio.org/wiki/Main_Page](https://www.open- bio.org/wiki/Main_Page)

<comment><USER10> Oh very cool.

</comment></comment></comment></comment></comment><comment><USER13> If I were going to die, I'd feel very sad but not because of me nor because of my wife or friends. They are adults and they must deal with this.

I'd feel that I let down my children and couldn't give them a happy and careless childhood without having to deal with the cruelty of reality.

So, may his kids have the strength to deal with it without losing their light- heartedness.

</comment><comment><USER14> Pieter: I don't know if you are reading Hacker News at this point or not. Most likely not. I respect your rights and understand the challenge you are faced with. We don't know each other but your work has touched me profoundly as a fellow technologist. All I have to say is I am crying at the moment. I'm crying because I feel very helpless. As a fellow human I am unable to do anything to help you. I am sorry.

<comment><USER15> >I'm crying because I feel very helpless. As a fellow human I am unable to do anything to help you. I am sorry.

Although this is a poor comparison for a million reasons, I just put my beloved dog down a week ago. Helpless is the word here. Its incredible how many game-enders we casually flirt with everyday, how powerful illness can be, how illness makes us make tough decisions, how poorly we handle end of life issues, and how badly grief hits us. We purposely avoid thinking about this stuff, consider it taboo, and engage in gallow's humor for a reason.

Death is difficult. It never gets easier.

<comment><USER16> Pets are no less an important member of your family than a spouse, children, parents, etc. We may obtain these companions knowing full well we expect to outlive them many times over, but that doesn't mean the eventual loss impacts us less than losing any other member of our family.

Never think your comparison isn't apt because it's "just a pet" :)

<comment><USER17> Actually yes, a pet is a much less important member of your family than a spouse, children or parent.

<comment> nommm-nommm That depends... Some family members are not good people... Unfortunately.

</comment></comment></comment></comment></comment><comment> happy-go-lucky From the article Confessions of a Necromancer:

if you have the trust of your client, and s/he has real power, you have done half the work already.

don't make stuff and then try to sell it unless you are growing an existing client base.

breaking into markets you don't know is probably impossible.

Build up trust with the client and sometimes they will reward you for it.

When you've paid for all the mistakes, you should know how to do it right the next time.

A good specification lets diverse people work together without confusion or conflict.

If you can test each piece alone, and you have reliable ways of putting them together, the whole should work.

Don't be afraid to charge the real cost.

be aware of your expenditure and manage your losses. You can survive a long time with less income if you are in tight control of what you spend.

What's good software? Good software is used by people to solve real problems. Good software saves people money, or makes them a profit. It can be buggy, incomplete, undocumented, slow. Yet it can also be good. You can always make good software better yet it's only worth doing when it's already good.

<comment><USER18> To expand a little on this comment, it is highlighting some of the main ideas from one of Pieter's most recent posts (and one of his very best, which is really saying something).

It's presumably the parent's tribute to him, which I can appreciate.

<comment> happy-go-lucky You may want to read his The Ultimate Lessons at:

[http://hintjens.com/blog:125](http://hintjens.com/blog:125)

</comment></comment></comment><comment><USER19> I've been completely blown away with Pieter's courage and willingness to share his journey. I hope I have 10% the dignity when my time comes!

<comment><USER20> I am as well, and I hope that his writing and sharing of the process can help euthanasia become more widespread.

I just hope that when it comes time for me or my loved ones to go, that they will be able to do it on their terms.

</comment></comment><comment><USER21> I don't know you, Just read [http://hintjens.com/blog:115](http://hintjens.com/blog:115)

Thanks for the your contributions and sharing the journey.

To fellow HN users: Please check out "Think of the Children" and donate if possible. thanks!

<comment><USER22> The "Think of the Children" is worth pasting it here :

Please use this article to add your stories. If you have them elsewhere, or you emailed me, copy/paste as a comment. Feel free to write in Dutch or French if that's your language. I'd really like a single place where my kids can come and read what other people say about their dad.

Many people have asked my PayPal address email@example.com, to send a donation for my children.

</comment></comment><comment><USER23> Having recently started using ZeroMQ at work, I must admit that Pieter gave the world a really elegant message queue solution.

The world is losing another great hacker.

Would a black bar be considered?

<comment><USER24> > Would a black bar be considered?

As on top of HN? I guess somone would have to e-mail admins for that.

<comment><USER25> You sound like you don't know so... black bar usually happens when someone prominent in the community dies. Pretty sure the HN admins are reading this thread and are fully aware.

<comment><USER24> Thanks, I actually didn't know that.

</comment></comment></comment></comment><comment><USER26> Context: [http://hintjens.com/blog:115](http://hintjens.com/blog:115) and other recent posts by Pieter.

<comment><USER27> >It can be horribly awkward to talk to a dying person (let's say "Bob"). Here are the main things the other person (let's say "Alice") should not say to Bob:

Same thing at funeral. I'm always trying to convince others to remember good things, not go into depression. You can't do much after it happened.

</comment></comment><comment><USER28> Few hours ago there were this discussion on HN: [https://news.ycombinator.com/item?id=12631488](https://news.ycombinator.com/item?id=12631488)

And now we have this tweet from someone I respect very much, someone who took part of his time too tell his feelings on how you could/should treat someone that is having his final moments.

</comment><comment><USER29> Just wanted to mention that in previous posts Pieter mentioned that donations (he was not soliciting them) for his kids and family could be sent via PayPal to firstname.lastname@example.com . I did not know him personally so I cannot speak for his situation, but in those posts it was apparent that he was not a wealthy man (my take on the conversation). I could not imagine leaving my children to fend for themselves in this world. It struck me that our children are so similar in ages.

</comment><comment><USER30> I find this post along with the comments unsettling, but I am unable to articulate why. (It is not the choice, nor the announcement of the choice. There is something about the dynamic here that doesn't sit right with me. Apologies for my failure to elaborate.) I wish him the best and deeply appreciate his sharing part of his journey.

<comment><USER31> Would it be the inevitability of death that disturbs you?

<comment><USER30> Nyah. I'm 51 years old and buried my parents. Death is real and probably closer than I imagine.

Perhaps it's the productization of death?

I received this news as a retweet in my Twitter feed. Next to it was a bit.ly link about Configuration Management tools, the announcement of a speaker at a conference, and a famous quote from Einstein.

Right now on HN it's #4. Next to it is a blog post about tools and frameworks and a post about a PostgreSQL extension. The response to Pieter's tweet is lengthy and very kind. It would be a privilege to hear those thoughts in my own life before I leave. But the thoughts will still keep coming, probably long after he's gone.

I met a nice lady three years ago. She was a "social media consultant" in the local area, which basically consisted of teaching small business owners how to navigate the web. We met for lunch several times when I was in town.

Soon, though, she learned she had stage 4 lung cancer. I had lunch with her one more time. I'll never forget how weary she looked.

She held on for almost a year, then she passed.

For many weeks after that, however, Facebook was full of her many friends offering their condolences. Facebook would remind me that she liked certain things as a way to sell me on things. Every so often people would think of her and post on her wall. These posts appeared in my feed.

Last week I finally had to unfriend her. She was dead. But it didn't stop the computerized social network that Facebook to stop trying to monetize as much of her presence as they could. Even if somebody had set her account to deceased, Facebook will always own some part of her existence.

It feels like turning a tender, emotional, precious thing into a bucket of bits. I find that repugnant.

<comment><USER32> I am in 2 minds about this. Part of me agrees with you but the other part of me doesn't.

Personally, I feel death (and afterlife) has played an important role in popularising (selling?) religion.It is still a difficult subject to talk about, in some cultures even joking about your own death is a big no-no. Maybe this is the best way to break this barrier and understand that death is "normal" and it's okay to talk about it along with other normal things. Maybe this "productization" will get us all to a point where we are all okay talking about it openly and frankly, without making a big deal about it?

<comment><USER30> I agree with what I think you're saying, but the right words can be very tricky here.

 _Maybe this "productization" will get us all to a point where we are all okay talking about it openly and frankly, without making a big deal about it?_

What's a "big deal"? For my friend, I knew her and she seemed like a nice person. I did not know her that well, though. The first couple of times somebody posted how sad they were on her wall, I was moved. The second couple of times, sad to say, not so much. By the time we got to 20 or 30, I was both annoyed -- and angry at myself for being annoyed.

How about her husband? He got to watch her die, bury her, and then watch all this come in, day-after-day. Two months later he was dead.

Social networks take everything and genericize it. What was a big deal to me was probably a huge deal to him. Assuming those little bits were somehow part of who she was, you can't just assume that they were the same kind of "big deal" to everyone involved. To me, to the husband, to the still living kid. [ed: and it's not right to try to force it into the same kind of deal for everybody. That's dehumanizing.]

I'm a transhumanist and I think the singularity is coming and I'm okay with that. But as we evolve, we _have_ to stop and take a freaking look at what we're doing. Software may be eating the world, but the world is not all the same stuff. The differences matter.

<comment><USER32> I am not great with words, please accept my apologies.

When I say "big deal", I meant it more like talking about homosexuality is now less of a "big deal" then it was back in the day. I am not saying that the loss itself is not a big deal, just talking about it shouldn't be.

Maybe, if we live in a society where it's easy to talk about death then maybe the grieving process would become easier too. Right now, people tend to act weird around people who has just lost someone (I have experienced that first hand), the people who are suffering the loss feel like they have to "stay strong" and not show their emotions to others because they don't want to be a burden. It's a vicious cycle which we can break by just talking about it.

<comment><USER30> I agree that it should be easier to talk about death. And tech really isn't the issue there -- unless the tech is keeping us in a cocoon.

Back when the U.S. Civil War happened, photography was still new. Some folks thought that the new tech would finally wake people up to the horrors of war.

Didn't work out like that. People already knew the horrors of war and dying. You could run a picture of ten thousand people dead on a battlefield and while people felt the severe pain of that loss -- it was not horrifying to them. They lived with it everyday. (In fact, some early uses of photography was taking pictures of the recently dead. So you could remember them.)

I don't know. I may feel completely different about all of this when it comes my turn. I am really glad that the voices of people about to be silenced forever can be heard. In fact I think it's such a special thing that it really shouldn't appear next to an ad for Spacely's Space Sprockets.

We should have open and honest dialogues about death, yes. That doesn't mean that we should think of death in the same way as we might think of buying a newspaper. There's a categorically different thing going on here, regardless of any extraneous baggage that anybody might carry into the discussion.

<comment><USER33> What you described above, the "productization" of someone's death, is part of a bigger problem, where people are isolated from each other by technology and by a dehumanizing (and uncoincidentally technophilic) culture that turns people into appointments or tasks or problems to be solved or opportunities to make money or anything and everything more convenient and less difficult than, well, _people_. I could go on and on naming examples, but I think HN itself does a well enough job by self-selecting perfect examples to the front page every day. You're 51, I'm only 31, so you obviously have a lot more life experience than me (almost twice as much). But I think the fact that I'm already weary and wary of pretty much everyone and everything around me, including everyone and everything at HN, probably says _something_ about modern suburban American culture.

<comment> K-Wall Not to derail the conversation but this whole discussion on "productization" reminded me of the plot line of a Black Mirror episode. When I originally watched it I found it mostly absurd but now in the context of this thread it makes a whole lot of sense.

Here is the episode I am referring to: [https://en.wikipedia.org/wiki/Be_Right_Back_(Black_Mirror)](https://en.wikipedia.org/wiki/Be_Right_Back_\(Black_Mirror\))

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER2> I'm a bit sad that so many here go on tangents instead of finding out what Pieter really is/was about. Trust me, when you go through his blog entries at hintjens.com and read his books, you will find yourself in a magic wonderland of better ways to program and be happy. This is not a sad day.

</comment><comment><USER34> Glad he was a citizen in a society humane enough to let people choose this final option.

</comment><comment><USER35> He has left us a lot of work. I knew about ZeroMQ, "The Psychopath Code" [1], "The Devil's Wiki" [2], could we make a summary here as a tribute?

[1] [https://github.com/hintjens/psychopathcode](https://github.com/hintjens/psychopathcode)

[2] [http://wiki.hintjens.com/](http://wiki.hintjens.com/)

<comment><USER36> Books by Pieter Hintjens [0].

[0] [http://hintjens.com/books](http://hintjens.com/books)

</comment></comment><comment><USER37> I don't know much about Pieter but when I first read ZeroMQ's documentation it became clear he's an exceptionally talented individual.

</comment><comment><USER38> Goodbye Pieter.

(This really hits me, since my brother in law may be about to do the same in a few weeks.. days perhaps.)

</comment><comment><USER39> Pieter,

Thank you. For everything. I'm sure the rest of the community shares my opinion that you've contributed so much to the field.

For all that it matters, I wish you a pleasant departure.

</comment><comment><USER40> When does a computer scientist stop being a computer scientist?

It's sad seeing Bob and Alice used in such a morbid context but at least we know we'll be thinking in terms of protocol, complexity, and CS even on our death beds. It's something that will never leave us.

I've read very little of his work. I think I'll change that.

</comment><comment><USER41> This is where we are all headed. Few of us will choose the time and place.

</comment><comment><USER42> Like many others, I've never met him, but he has touched my soul.

I enjoyed his writings on community building most. He himself being a very approachable person, taught me everything we do is about people, not software. I'll definitely miss him in the days to come.

Peace Peter.

</comment><comment><USER43> I don't know what to say. I just knew Pieter Hintjens when he wrote posts about his condition, fighting cancer that he has. By that time, I also just knew that you're a great man behind ZeroMQ. I used your works and it's such an amazing library.

Thank you for being transparent about your condition. It makes me to remind about death. I am sorry. Thank you for contributing everything what you have done for people in the world.

Peace Pieter. You will be missed.

</comment><comment><USER44> This should remind us that life can be short and will end one day anyway. So we should try to enjoy every bit of it and don't waste time with bullshit.

R.I.P. Pieter Hintjens. For more about Pieter Hintjens check out [https://en.wikipedia.org/wiki/Pieter_Hintjens](https://en.wikipedia.org/wiki/Pieter_Hintjens)

</comment><comment> happy-go-lucky Fighting Cancer [http://hintjens.com/blog:123](http://hintjens.com/blog:123)

Heart-wrenching.

</comment><comment><USER45> Sad to read this. And actually also a bit surprised, considering that 2 weeks ago he posted an article that mentioned "This is a short book more than an article. I'll continue to revise it over time, according to your comments."

[http://hintjens.com/blog:125](http://hintjens.com/blog:125)

<comment><USER46> Correctly predicting timing is hard with cancer.

<comment><USER47> Yes. I knew someone (about 30 years old) who had brain cancer.

When he had chemo, he looked like he was dying any second now. A week after he looked like a normal healthy person.

Last time I saw him was a few weeks before he died, we were partying like he wasn't even sick and suddendly he was dead.

But it's generally a strange feeling to lose people around you.

In the last two years I lost about 4 people. One to old age, two to cancer and one was even murdered. I still have the last moments with them in my memories. We were like "yeah lets go do XYZ together in a few weeks/months" and now they are simply gone and won't come back.

</comment></comment></comment><comment><USER48> I was kind of expecting a black bar on HN by now, but the comments here are more of a statement of how much people respected him than any symbol.

</comment><comment><USER49> ZeroMQ and his work are amazing. He will be missed.

</comment><comment><USER50> I've never met Pieter, but I have enormous respect for him. His writing is some of the most insightful there is, and it changed my thinking on a lot of things, especially outside of computer science.

He finished his book Confessions of a Necromancer recently. It's well worth a read:

[https://www.gitbook.com/book/hintjens/confessions-of-a- necro...](https://www.gitbook.com/book/hintjens/confessions-of-a- necromancer/details)

I don't really know what to say anymore. I will always admire him.

</comment><comment><USER51> Just watching Pieter's interview with Adam:

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

Thank you for the journey, Pieter.

</comment><comment><USER52> It makes me sad that I'm only becoming aware of this man and his work through the announcement of his chosen death.

Thank you HN for exposing me to worlds I would never otherwise discover.

On a personal note, I definitely will be using 0MQ in all my future projects. As a matter of fact, I'm glad I found it exactly this moment.

</comment><comment><USER53> If anyone here hasn't listened to his "protocol for dying" episode of The Changelog from several months ago, you really should: [https://changelog.com/205/](https://changelog.com/205/)

</comment><comment><USER54> Pieter, I always really appreciate the conversation here. It was a pleasure to have the back-and-forth with you on HN. Your username is one of the few that I routinely recognize and it will definitely be missed.

</comment><comment><USER55> I'm pretty astounded at how some pretty cool guy's decision to die has morphed into people talking about themselves.

I'm a geek, I sort of get it, but aren't the people talking about themselves and their choices and their views even slightly ashamed? Could we have a fucking moment to just honor this guy? I don't even know him, I'm just cringing.

<comment><USER56> People love to talk about themselves, it's what they know best.

Take your post as an example.

</comment></comment><comment><USER57> I got to know Pieter, as I was listening The ChangeLog's podcast and his sharing was amazing.

Thank you Pieter and rest in peace.

</comment><comment><USER58> I was moved by his blog post, few weeks back, on HN. As a token of my respect, I just bought his book, The psychopath code[1]

[1] [http://hintjens.com/blog:_psychopaths](http://hintjens.com/blog:_psychopaths)

</comment><comment><USER59> I discovered his writing only recently. What a great thinker and a brave person. This is sad news.

</comment><comment><USER60> Brilliant mind, exceptional work.

</comment><comment><USER61> [https://www.youtube.com/watch?v=-oXEsbnOJQI&list=PL58VN51OpN...](https://www.youtube.com/watch?v=-oXEsbnOJQI&list=PL58VN51OpN- QTo9nJoPjhVKVG6yNa5OJK)

</comment><comment><USER62> His post on living systems is absolutely great, just discovered thanks to his thread...

[http://hintjens.com/blog:74](http://hintjens.com/blog:74)

</comment><comment><USER63> Pieter,

I don't know you, and I don't even know who you are, but my heart goes out to you. Nobody should have to suffer in pain, and I deeply respect you for taking control of your last moments.

Fare thee well.

</comment><comment><USER64> [https://en.wikipedia.org/wiki/Pieter_Hintjens](https://en.wikipedia.org/wiki/Pieter_Hintjens) Updated already...

</comment><comment><USER65> Godspeed Pieter, thanks for everything! See you on the other side

</comment><comment><USER66> Very saddening to hear something like this. But after knowing his work in software it's even more hurting. Rest in peace sir. You have our deepest respects.

</comment><comment><USER67> With the greatest respect to Pieter and the situation, announcing it this way on social media to many people _is_ (was ?) last words.

</comment><comment><USER68> Well done, Pieter. Thank you for your excellent writings and ground-breaking open source work, and for sharing your humanity. Farewell.

</comment><comment><USER69> This is one of those occasions when I hope someone's account has been hacked.

Farewell Pieter and may you live on in our memories.

</comment><comment><USER59> I discovered his writing only recently. What a great thinker as well a brave person. This is sad news.

</comment><comment><USER70> Can someone explain me the python(3) reference from the end? I don't seem to get the pun

</comment><comment><USER71> A remarkable mind and a keen and joyful lad, I hope Peter finds rest at last.

</comment><comment><USER72> Goodbye, I enjoyed reading your work and comments here.

</comment><comment><USER73> I wish I lived in a country that gave someone this choice

<comment><USER74> Please take a look at this [1]. Very difficult topic but I think this comment maps out the concerns very helpfully.

[1]: [https://news.ycombinator.com/item?id=12631488](https://news.ycombinator.com/item?id=12631488)

</comment></comment><comment><USER75> An incredible pioneer that will be greatly missed.

</comment><comment><USER76> May flights of angels sing him to his rest.

</comment><comment><USER77> Very sad. RIP Pieter.

Black bar on Hacker News, please.

</comment><comment><USER78> RIP Pieter.

</comment><comment><USER79> Nice people dying and terrible people living like forever, this world sucks :(

</comment><comment><USER80> it was a honor knowing you.

</comment><comment><USER81> Baruch dayan emet.

</comment><comment><USER82> What is ETD?

<comment><USER83> Probably estimated time of death.

<comment><USER19> I think I prefer departure

<comment><USER84> There was a recent The Moth: Radio Hour [1] where an emergency room physician talked about dealing with death in the ER. I was struck by the deliberate decision to be blunt about what had happened. She specifically says that she cannot mince words and say that the patient "departed" or "moved on" because inevitably the concerned family and friends will assume that their loved one has been moved to another hospital or something.

This is not to argue your point of preference. It's just something that changed my perspective recently, and it may be interesting.

1\. [http://player.themoth.org/#/?actionType=ADD_AND_PLAY&storyId...](http://player.themoth.org/#/?actionType=ADD_AND_PLAY&storyId=11561)

<comment><USER85> They made this a serial joke on Arrested Development if you remember. Starting with the doctor saying, "We lost your father" and the whole family goes into shock and mourning. The doctor continues, "We can't find him anywhere, we have no idea where he is" and the Bluth family go beserk at the lexical ineptitude of his communication.

<comment><USER86> "He's going to be all right."

"Oh, thank god!" "Finally, some good news from this guy!"

"That's a great attitude. I gotta tell you, if I were getting this news I don't know that I'd take it this well."

"But, you said he was alright?"

"Yes. He's lost his left hand, so he's going to be all right"

</comment></comment></comment></comment></comment></comment><comment><USER87> Erm, why is he not frozen?

<comment><USER88> For some reason, in Europe, even less people seriously consider cryonics as an option, despite the population being generally less religious. Some view it with cynicism. Others just laugh.

<comment><USER89> Probably because it's quackery. [http://thebaffler.com/salvos/everybody- freeze-pein](http://thebaffler.com/salvos/everybody-freeze-pein)

<comment><USER90> What a garbage article. It goes on and on about how _weird_ cryonics is without discussing the science or whether or not it works. Of course cryonics is weird. That's not an argument.

Cryonics works. The connectome of your brain, what makes you, _you_ , is preserved. At −238 degrees almost anything organic can be preserved for a _long, long_ time. And with careful procedures done to prevent the formation of ice crystals, the damage done by the freezing process is minimal. It's by far the best chance you have of surviving.

<comment><USER89> Actually, it describes several ways in which it does not work.</comment></comment></comment></comment></comment>


Render React to Embedded LCD - <AUTHOR> https://github.com/doodlewind/react-ssd1306/blob/master/docs/tutorial.md <comment><AUTHOR> I successfully build a React renderer that displays text and pixels on a 0.96-inch OLED screen. The renderer is built on top of a C driver for I2C protocol, which is used as a C module for the embeddable QuickJS engine. The whole codebase, including JS engine, C modules and React Reconciler, are compiled into binary within 780KB on a Raspberry Pi. This encourages me to try out React for developing Linux GUI in the future, hope you like it!

</comment><comment><USER2> Producing 760k of code for a Raspberry Pi (running a full blown non-realtime linux distribution) hardly seems like embedded development though.</comment>


Good iOS tutorial to recommend for a 14 year old? - <AUTHOR> <comment><USER2> For an absolute beginner a good way to start is by following an online course in iOS development:

<http://www.hackrocket.com> Will soon launch an immersive three-month program to teach absolute beginners how to build iPhone and iPad apps

<http://teamtreehouse.com/>

[http://www.lynda.com/iOS-tutorials/iOS-SDK-Essential- Trainin...](http://www.lynda.com/iOS-tutorials/iOS-SDK-Essential- Training/92179-2C.html)

[http://itunes.apple.com/itunes-u/ipad-iphone-application- dev...](http://itunes.apple.com/itunes-u/ipad-iphone-application- development/id473757255)

<http://codelesson.com/courses/tag/Mobile>

You can also try to learn on your own. Here are some of the best books:

\- iPhone Programming : The Big Nerd Ranch Guide

\- Cocoa Design Patterns

\- iPhone App Development : The Missing Manual

\- The iOS Developer's Cookbook

\- Cocoa Design Patterns

\- Head First: iPhone Development

Once you start developing <http://www.stackoverflow.com> is an invaluable resource

<comment><AUTHOR> Cool, looks very good. I appreciate the help!

</comment></comment><comment><USER3> Ray Wenderlich's tutorials are really great:

<http://www.raywenderlich.com/tutorials>

Here's one specifically for High School students:

[http://www.raywenderlich.com/5600/ios-for-high-school- studen...](http://www.raywenderlich.com/5600/ios-for-high-school-students- getting-started)

And another, creating a text adventure game:

[http://www.raywenderlich.com/11079/ios-for-high-school- stude...](http://www.raywenderlich.com/11079/ios-for-high-school-students- text-adventure-game)

And here's Apple's:

[http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone...](http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhone101/Articles/00_Introduction.html)

There are bunches out there, though--would love it if you report back later on what your favorites were!

<comment><AUTHOR> Thankyou! I've sent it to my cousin, I'll try to find out which were his favorites.

</comment></comment><comment><USER4> I am busy working through the Big Nerd Ranch books and so far i am VERY impressed</comment>


When To Dump That Great Idea - <AUTHOR> http://www.forbes.com/2007/07/06/apple-amazon-myspace-ent-manage-cx_ws_0709dump.html?partner=yahootix

<comment><USER2> I had this great idea to create a website where the content is covered with hairsprayed MBA's telling my users things they don't care about. But I think I'm going to "dump it." Thanks Forbes!

</comment><comment><USER3> This article is great for filtering applications for Y Combinator.</comment>


Intel's new desktop CPUs aren't faster - <AUTHOR> https://www.cnet.com/news/intel-kaby-lake-7th-gen-7700-7600-7350/ <comment><USER2> ... which means the current generation of Macs could remain in place longer than i'd hoped!

<comment><AUTHOR> Exactly. That's why people still look for a 2012 MBP.</comment></comment>


42 Books That Will Make You a Better Person, Described in One Sentence - <AUTHOR> http://thoughtcatalog.com/ryan-holiday/2015/10/one-sentence-book-descriptions/ <comment><USER2> Site _repeatedly rescans_ its spam/metric sites every second; I quit ten seconds in.</comment>