New instructions in Intel's Haswell microarchitecture - <AUTHOR> http://software.intel.com/en-us/forums/showthread.php?t=83399

<comment><AUTHOR> Overview of the new instructions (cutted and pasted from the PDF):

AVX2 promotes the vast majority of 128-bit integer SIMD instruction sets to operate with 256-bit wide YMM registers. AVX2 instructions are encoded using the VEX prefix and require the same operating system support as AVX. Generally, most of the promoted 256-bit vector integer instructions follow the 128-bit lane operation, similar to the promoted 256-bit floating-point SIMD instructions in AVX. Newer functionalities in AVX2 generally fall into the following categories:

• Fetching non-contiguous data elements from memory using vector-index memory addressing. These "gather" instructions introduce a new memory-addressing form, consisting of a base register and multiple indices specified by a vector register (either XMM or YMM). Data elements sizes of 32 and 64-bits are supported, and data types for floating-point and integer elements are also supported.

• Cross-lane functionalities are provided with several new instructions for broadcast and permute operations. Some of the 256-bit vector integer instruc- tions promoted from legacy SSE instruction sets also exhibit cross-lane behavior, e.g. VPMOVZ/VPMOVS family.

• AVX2 complements the AVX instructions that are typed for floating-point operation with a full compliment of equivalent set for operating with 32/64-bit integer data elements.

• Vector shift instructions with per-element shift count. Data elements sizes of 32 and 64-bits are supported.

<comment><USER2> I find the "gather" functionality especially intriguing.

APL and J have "transpose" instructions that let you rearrange the dimensions of a multidimensional array. I figured out awhile back how that could be done without having to move all the individual elements in memory; basically, keep track of the 'step size' between elements on each axis, and you can shuffle them around as much as you like. Of course, once you've done that, you're jumping back and forth all over the array to pull in each element when/where you want it.

Well, looky what those "gather" instructions do! Promising. _Very_ promising...

</comment></comment><comment><USER3> These are extremely interesting instructions. It's worth noting, however, that things like gather/scatter live and die by the quality of their implementation. I would hope that these are considered worth delivering high- quality implementations, but let's just say that Intel has occasionally been known to deliver complex instructions that are all but useless due to poor latency and reciprocal throughput. SSE4.2, I'm looking at you.

I suspect that for these ones, it's going to be good - this looks too fundamental to the sorts of changes first described in Larrabee programming guides. The hope is that many of these functions (conditional loads, scatter/gather, etc) will allow a much larger proportion of loops to be parallelized than is currently the case. Obviously not everything is amenable to parallelization due to serial dependencies, but having scatter/gather to do multiple load/store stuff makes it a lot easier.

I think it is interesting the extent that this seems to be converging on some of the stuff in Larrabee - is the game plan to converge type of cores with GPU functionality so the difference between CPU/GPU cores is provisioning and access to some GPU-specific canned functionality for traditional T&L operations?

Overall it's like a wet dream for bit-bashers. PDEP? PEXT? Byte field extract? Scatter? 256-bit integer SIMD? I was almost too excited to speak when I first skimmed this (moderated somewhat by the 2013 release date and lingering concerns that some of the better insns will have latency 8 and reciprocal throughput 5 or something disappointing like that).

</comment><comment><USER4> Wow, I can't wait to play around with PDEP and PEXT instructions.

<comment><USER5> What do they do that's so exciting?

<comment><USER4> I want to use them for speeding up some critical code for compression/decompresison, the current code is not straightforward.

How to implement the instructions in software is covered in Hacker's delight, and has some additions in the latest revisions (<http://www.hackersdelight.org/revisions.pdf>).

There's also a chapter in Matters Computational (<http://www.jjj.de/fxt/#fxtbook>) "CPU instructions often missed" that mentions them:

> Primitives for permutations of bits, see section 1.29.2 on page 81. A bit- > gather and a bit-scatter instruction for sub-words of all sizes a power of 2 > would allow for arbitrary permutations (see [FXT: bits/bitgather.h] and > [FXT: bits/bitseparate.h] for versions working on complete words).

</comment></comment></comment><comment><USER6> These days it's the ARM instruction set I care about. Strange how fast x86 dropped off my radar.

<comment><USER7> What about servers?

<comment><USER6> Downmodders are really out of control here lately. Obviously I'm not saying that _nobody_ cares about x86 anymore. It just very quickly went from the years of being only game in town to a sideshow _for me_ when I started doing mobile.

What server software I do write is in very HLL like Ruby but I actually find myself looking at ARM disassembly sometimes now for apps.

<comment><USER8> Maybe the feeling is that your personal statement of discontent with x86 is not really relevant to the story that new instructions have been added to x86. This is probably why you were downvoted. If you want to leave a comment with a similar essence, perhaps you should try commenting on one or two new instructions that are [interesting|upsetting|repetitive] to you ahead of your statement that you don't care about ARM anymore.

Would HN be a good place if everyone who didn't care about something posted on the story and said, "Ha, I don't care about this, ha ha"?

<comment><USER6> Since I started writing software professionally over ten years ago x86 was the only instruction set that mattered outside of a few niche domains. Now it's all but irrelevant in the fastest growing market. For those of us that have lived in the shadow of Wintel our entire professional lives the last few years have seen some dizzying changes.

So the big picture for me is that developments in x86 are now minor news.

<comment><USER9> PowerPC used to be pretty popular. So was SPARC.</comment></comment></comment></comment></comment></comment>


Canonical Contributes Only 1% To GNOME; Red Hat Contributes 16% - <AUTHOR> http://digitizor.com/2010/07/30/canonical-contributes-only-1-to-gnome-while-red-hat-contributes-16/

<comment><USER2> to be fair, Canonical is contributing a lot of the right things making opensource code usable by the masses.

there is always the quote about an engineer removing 2000 lines of code. it's not about code contribution or dollars its about the right changes, and Canonical is clearly doing a great job with ubuntu.

hence the reason that cloud computing is moving in that direction with eucalyptus, and appscale.

Keep up the good work.</comment>


Library of Congress holds conference on origins of portolan charts - <AUTHOR> http://www.washingtonpost.com/wp-dyn/content/article/2010/05/21/AR2010052104713.html

<comment><USER3> John Hessler's blog, where he actually discusses methods for the cartographic analysis mentioned in the article, can be found here: <http://warpinghistory.blogspot.com/>

Here's a sample map made by the mapmaker Mateo Prunes (3200x1800): <http://fglorente.org/zen/albums/mapas/Mateo%20Prunes.gif>

<comment><USER4> Thanks for this. It's really quite astounding how good ancient cartography was, given the limitations. For all that we live in very exciting times today - and can communicate in almost real time to discuss such subjects - <USER2> thrilling, and slightly scary, it must have been to live in those times and be among the few to have a firm grasp on the fundamentals of science and the natural world.

</comment></comment><comment><AUTHOR> My title was originally "Accurate map from 1275." Thankfully, some truly meddlesome mod took all meaning from the title and instead used the hackneyed print headline that was no doubt written to fill a certain space in a broadsheet.

I don't know about the rest of HN, but I had no clue what a Portolan Chart was until I read this article. My re-titling was intentional and I would imagine helped get the article to the front page.

Stop meddling or I am going to stop contributing. I understand there are times when a title is misleading or goes against guidelines, but this change is just a mod on a power trip.

</comment><comment><USER5> The article speculates about Roman or Phoenician maps that might have been lost, but makes no mention of the more probable Arab influence. This is just my naive guess, but wasn't Arab mathematics and astronomy the state-of-the-art of the time and also probably Arabs had the most detailed information about the mediteranean region at that time.

<comment><USER6> The Arabs at the time had preserved a good portion of the scientific researches of the Ptolemaic Greeks, who were able to determine latitude (and I think longitude somewhat with many astronomical observations over time), so the relative locations of some key ports may have filtered out to some European cartographers at the time. The ability to observe latitude was possibly seeing limited re-discovery in Europe through Arab sources. For sure by the early 15th century Portuguese navigators could easily observe latitude.

But I believe these maps were created through dead reckoning. <http://en.wikipedia.org/wiki/Dead_reckoning> William Clark created a meticulously detailed highly accurate map of the Missouri, Snake, and Columbia rivers through dead reckoning, with the aid only of compass and sextant for latitude. (Lewis & Clark made some detailed observations for longitude, but the calculations were not performed until after the expedition was over and had nothing to do with Clark's map.)

I'll bet these maps originally had nothing to do with normal navigation (i.e. for commerce) accurate maps were for a long time military intelligence assets.

Great Britain employed a network of spies employing dead reckoning techniques to map out areas of south central Asia the British did not have access to (for military/intelligence purposes). Rudyard Kipling's novel Kim deals with this historical episode.

</comment></comment><comment><USER7> The map most discussed in the submitted article was about contemporaneous with Marco Polo, who was preceded as a traveler to China by John of Plano Carpini

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

(ca. 1180 - August 1, 1252). Early Chinese cartography

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

was sufficiently good to serve as models for the maps mentioned in the submitted article, although the time sequence of interchange between China and the West alone does not prove any Chinese influence on the European maps.

<comment><USER8> Byzantine Empire sends several ambassadors to Tang China, what map did they use?

<comment><USER9> They would have likely used a collection of East-is-Up maps to get from destination to destination. The medieval maps _were_ maps, however they were designed to allow you to navigate from natural markings as there was no such thing as a compass, you only had the sun to tell you was going in the right direction. Similarly many of these maps were point A to point B maps, with the destination at the top, you found the path it was describing and simply followed the route.

Notable objects were used to navigate, for instance the Tree of Ténéré is still frequently drawn on maps as it was the only tree for 200km (now it's simply a statue to where the tree once was). It was a key marker for trade caravans.

They would also have likely used a great many of local navigators, as explorers still do today. Our great explorers were merely bumbling idiots who got incredibly lucky in finding amazing local explorers who had lived the land for decades.

</comment></comment></comment><comment><USER10> Way cool.</comment>


Emacs: The Editor for the Next Forty Years [video] - <AUTHOR> https://media.emacsconf.org/2019/26.html <comment><USER2> There are lines in my Emacs config files that are older than some of the programmers I work with, so I can relate.

Contrary to what some people think, Emacs does not require constant tweaking and wasting time on configuration. I revisit my setup every couple of years or so, and I always find it is time well spent, as my productivity goes up as a result.

I do not know of a better environment for multi-language programming, and I often look around and try different things to see if they match up.

<comment><USER3> And it will only get better once it understands LSP, better than it does now. It's a pale copy of VSCode's incredible LSP implementation: for a user, simply clicking the button to install the extension automagically configures a fully functional language environment; even for C++. Most of the time.

When last I tried to get decent C++ support working with Emacs, about a year ago, it was still a mess of compiling rtags/cquery, installing global, configuring per-project variants, sacrificing ungulats, hail baphomet.

<comment><USER4> I've been using Emacs' lsp-mode ([https://github.com/emacs-lsp/lsp- mode](https://github.com/emacs-lsp/lsp-mode)) for professional Python development for months now and it's been a great experience. It requires a little more work than I'd like to get it working with virtual environments (making sure the LSP server process is running in your venv, mainly), but I would argue that's a problem with the Python ecosystem, not lsp-mode itself.

And for statically typed languages (I've tried Rust and Go) the lsp-mode experience is flawless and works out of the box.

<comment><USER5> I switched from emacs to Pycharm for python development, out of frustration with what most packaged tools was getting me, relative to what PyCharm did with no effort and little frustration at all. Too many half-maintained packages, put together, fighting incompatibilities.

However, LSP really may change that.

<comment><USER6> LSP will definitely change that.

</comment></comment></comment></comment></comment><comment><USER7> Emacs turns disjoint environments, languages, and activities into a (mostly) streamlined system of workflows and idioms.

Explaining just how powerful that is to people who don't use Emacs is difficult. People need to sit with you for an hour or so and watch you work to truly appreciate just what that means.

<comment><USER8> There's a certain class of programmers tool that requires constant tweaking, like a road bike used in the city - and typically the users suffer from OCD or stockholm syndrome, because they won't stop evangelizing.

I thought emacs was one of THOSE types of tools and the initial experience does nothing to disabuse that. On my 4th or 5th attempt to start using emacs I finally decided to get over the hump even if it took weeks of being slow.

I'm sure it's the same story for every emacs user - I literally never turned back. And I don't think I've touched my dotfiles in 2 years. But I get why it looks so esoteric from the outside.

<comment><USER9> The more I use Clojure at work, the more I tolerate the elisp side of things. I've written a couple little major modes (though not to any great standard of quality) and elisp is indeed pretty crap, but usually adequate. I think the ideal Emacs lisp successor would be a Clojure derivative, with the buffer represented as a persistent trie datastructure like other things are in Clojure. Maybe the buffers could be disjointed from the presentation a bit, and we could have strictly AST-driven major modes, rather than the (admittedly quite usable) hack that is paredit.

<comment><USER10> > Maybe the buffers could be disjointed from the presentation a bit, and we > could have strictly AST-driven major modes

Yes, good point, agree that would be a very positive direction.

> elisp is indeed pretty crap

Ah, I've been enjoying it a lot recently :) But I don't have an excuse to write clojure and I certainly recognize that that's a much more sophisticated thing.

What are your biggest criticisms of elisp? Mine is basically that the naming of functions in the standard library is terrible.

Also: I'm still a bit confused about whether I should be using lexical binding (probably my fault for not thinking about it hard enough); the situation with threading is a little obscure; on the face of it threads in now exist in the elisp API, but are they not fully featured in some aspect?

<comment><USER9> My main gripe with elisp is the default to dynamic binding, which is in most systems almost never what you want. In Emacs, the dynamic bindings are used for more productive reasons than in generalized programs, but they should still be a conscious choice.

When it comes to threads, the elisp datastructures are inadequate because they are mutable. It is possible to write functioning threaded programs with shared mutable state, but for the most part, it is going to introduce the kinds of bugs that people solve one of per week on a six figure salary.

<comment><USER11> Use dash/s/f/ . seq is fine too but dash is pretty much clojure port.

<comment><USER9> Dash is a very cool library! Though it only really does seq. The Clojure persistent vectors, hash maps, and hash sets are all very powerful. CHAMP is often an improvement on HAMT.

I think the text buffer as a persistent vector of extended grapheme clusters is an interesting thought.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> Emacs has really undergone a renaissance in the past decade - magit, LSP, ivy, spacemacs, doom emacs - there have been so many novel new packages and frameworks written by elisp hackers.

For such an old editor, the development scene feels incredibly alive.

<comment><USER13> There may be much going on with emacs, but so far it fails to move ahead. The project is just improving the old strenghts, but not fixing the old fails. And as time moves, they start to hurt more and more and more until they break.

<comment><USER14> What are some old fails that need fixed?

<comment><USER15> One thing I notice: too many things cause unresponsiveness. 8 cores in my laptop and I can't install a package in the background, and semantic parsing interrupts typing. There doesn't seem to be any concurrency at all, things I do every day like eval'ing forms to REPL cause stutters.

I love that it allows makers to explore new ui paradigms (magit, lispy), but performance is its biggest downside.

<comment><USER16> [https://github.com/Malabarba/paradox](https://github.com/Malabarba/paradox) lets you install packages async, by the way.

<comment><USER15> That looks like an interactive ui--I can't declare use-package forms in my init.el, and have the initial install and any updates be async and concurrent.

</comment></comment></comment></comment></comment></comment><comment><USER17> (from the slides)

>I learned Emacs in September, 1983

>It is now November, 2019

>...that's over thirty six years!

>An amazingly long time.

Hmm, I think I learned Emacs around the same time. Yes, sometimes I think it is weird that I'm still using it.

I get a lot of pushback when I say that the developer environment hasn't advanced amazingly in all those years. Devs will point to one or more rather small incremental improvement. I'm sorry but I think we are still in the Bronze Age of programming.

<comment><USER18> The main reason I quit Emacs was the lack of context and semantically aware code completion and re-factoring tools. Such tools are invaluable productivity boosts for me. I have never gotten that to work in Emacs to a satisfactory degree.

<comment><USER19> OTOH hlmost many modern IDEs can't even open two copies of the same file and display it side by side or record arbitrarily complex macros and play them back any number of times.

<comment><USER20> Completion and refactoring are much more important than these.

When working with code it's very powerful to work on a higher abstraction level. E.g. move this method to an other class and update all references to it automatically keeping the code correct. It takes a few seconds in a modern IDE while in a text editor you have to do most of it manually.

When you get used to the power of refactoring, you start to use it more and more, like a sculptor getting a more powerful tool.

Open source editors should pool their resources to create such powerful refactoring tools which can be accessible in any editor via LSP or something.

<comment><USER21> The sad part is that text based representations of programs are holding back programmer productivity by raising the bar for these refactoring tools unreasonably. If programs were represented and edited directly as syntax trees, 80 to 90 percent of the complexity of refactoring tools would go away.

<comment><USER20> On the other hand, when writing new code it is quite efficient to simply type, supported with proper completion.

It would be much less efficient to create a program in a point and click gui, dragging visual elements onto the syntax tree.

So both is necessary. Efficient text editing is required to work quickly with the code, edit things locally efficiently. And refactoring is also needed if you want to perform bigger operations which span methods or classes.

An efficient text editor with completion + powerful refactoring. This is the winning combination.

<comment><USER21> You're jumping to conclusions when you're associating a syntax tree based program representation with the forced use of a mouse or cumbersome navigation for editing. Nothing could be further from the truth. A completely usable and fast keyboard based editing method for such a program representation is entirely possible. The only downside is that it's harder to create a minimal working version of such a tool compared to a text editor.

<comment><USER20> It may be possible, but I haven't seen such a tool. I have seen tools where you edited the syntax tree via a GUI and it was terrible for writing code. It may work better for tree modifications.

Text programs are pretty efficent when writing, editing code, because you can access a large number of elements quickly with the syntax.

E.g. writing let a = 3 can be much quicker than starting some command palette from the keyboard, choosing the "declare variable" action and then fill some dialog with the name and value of the variable.

I have doubts it can be made as efficient as typing, otherwise we would have seen such prototypes already. Have you?

<comment><USER21> I am working on one.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> I'm new to Emacs, but enjoying it very much. Just got mu4e working with Gmail XOAUTH2 (for a G Suite account that the administrators have implemented their own "delightful login experience"). Would there be any interest in reading a writeup?

<comment><USER23> Definitely. I approached the set up mu4e + offlineimap over multiple accounts (including a GMail one) many times, and I've never been fully satisfied with it. I'd really want to get it to work flawlessly, so I'd love to be able to learn from your experience.

<comment><USER22> What doesn't not fully satisfied mean for you? I might just have lower standards...

<comment><USER24> I think you should offlineimap; Use mbsync ( iSync )

<comment><USER22> Offlineimap and mbsync are two separate tools that do the same thing. I've had a good experience with offlineimap. In both cases, however, the hard part is not picking the tool but configuring it.

</comment></comment></comment></comment></comment><comment><USER25> I hope you excuse me for a shameless plug, but it seems like a relevant enough thread to share my podcast about Emacs: [https://emacscast.org/](https://emacscast.org/)

While it might seem strange to discuss a text editor in the audio format, I've been getting positive feedback on this project as I try to talk more about underlying philosophy and mindset, not specific details or settings.

<comment><USER26> My feedback for you is you need to give listeners a reason to keep listening to your podcast right away, you simply can not go on a meandering personal discussion about yourself for the first 10 minutes of a podcast and expect to retain my attention.

<comment><USER27> Well, that wouldn't be much different from the pervasive habit of many authors of YouTube videos to stick their own faces in the frame in one or the other ridiculous fashion. This is unsurprising, because it is self-advertisement that is the true goal of such podcasts and videos.

<comment><USER10> I routinely follow one podcast (Software Engineering Daily) and one You Tube channel (3blue1brown). Neither fit your characterisation. Perhaps you should consider being a little more selective in your consumption of YouTube :)

</comment></comment></comment></comment><comment><USER28> So the slides say...

> Concurrency safety isn't an accident. So far,only Rust has a good story on > concurrency thanks to its type system.

Is that really true? I've really enjoyed concurrency in D.

[http://jordi.inversethought.com/blog/advent- of-d/#day18](http://jordi.inversethought.com/blog/advent-of-d/#day18)

How much better can it be? And yes, D's concurrency is also based around types.

<comment><USER29> > How much better can it be?

Rust guarantees that a data-race is a compilation error.

D.. does not guarantee anything.. a data-race won't even give you a run-time error..

So... since going from D to Rust is going from zero to all guarantees, I think it is fair to say that Rust is technically infinitely better.

FWIW this is not D's fault, most safe mainstream languages do not guarantee the absence of data-races (e.g. Java doesn't guarantee that either).

<comment><USER30> There's a lot more to correct concurrency than data races, although they are a big factor. I think it's more fare to say that going from D to Rust is going from zero to some guarantees. Still technically infinitely better.

</comment></comment></comment><comment><USER31> There is an amazing project of converting Emacs into the more modern language - Rust (the C parts of it). It is called REmacs[1]. It is sad that the port of Emacs to Guile[2] didn't work out. And for the people who want to convert their C code to Rust, I quite recommend trying c2rust[3] transpiler and refactoring tool.

[1] [https://github.com/remacs/remacs](https://github.com/remacs/remacs)

[2] [https://www.emacswiki.org/emacs/GuileEmacs](https://www.emacswiki.org/emacs/GuileEmacs)

[3] [https://github.com/immunant/c2rust/](https://github.com/immunant/c2rust/)

<comment><USER32> reading the GuileEmacs thing it sounds like the project was a success? Is there pushback against using this upstream?

<comment><USER33> Guile is supposed to be the GNU extension language, which meant there was a political incentive for guile Emacs, but it was never asked for by the Emacs people. Considering the amount of bikeshedding going on for faaaar less intrusive changes to Emacs, I have doubted guile Emacs success for a long time.

Guile now runs elisp, although there is a lot of low hanging fruit left when it comes to optimization. Guile is shaping up to become a very neat little VM, with proper threading, JIT compilation, and delimited continuations.

I think the idea of elisp running outside of Emacs, with access to all of the gory glory of Emacs libraries sounds fantastic. Imagine org-mode and a (emacs PKG org-mode) library you can use outside of Emacs with a sub 0.1s startup :)

</comment></comment></comment><comment><USER34> I've been writing Clojure lately but I'm a greybeard (literally) Vi/Vim user. vim-fireplace is nice but I can't help wonder if I'm losing something by not using Emacs. At the same time, Clojure is so wonderfully different from the other languages I know that I don't feel like I have the cycles to learn a new editor at the same time I'm learning a new language. Then again, maybe that's the best time to learn Emacs?

<comment><USER4> I've never used Fireplace, so I can't speak to the comparison. But CIDER (the Emacs Clojure IDE) is an utter joy to use - I can't recommend it enough. If you do try it out, I would be interested to hear how it compares to Fireplace.

</comment></comment><comment><USER35> If Emacs is to be "the" editor for the next forty years, I really hope it can better combat random hangs. As someone who uses Emacs as a daily driver and loves it to death for its extensibility paradigm it's painful when it maxes out the CPU, I have to restart and have no idea what it could have been.

But then again scripting languages don't really have these interruption features by design. I'm developing something with a scripting layer and occasionally come across accidental infinite loops myself. I wonder what e.g. Factorio or Minecraft do if a mod enters an infinite loop. If the answer is "program more carefully" and "don't use badly coded mods" then I guess it can't be helped.

Proper concurrency in elisp can't come fast enough. At least then we could have a task manager to kill hung threads with.

<comment> michael-ax (setq-default garbage-collection-messages t) ??

<comment><USER27> Right - that's what I need from my text editor!

<comment><USER36> *OS

</comment></comment></comment></comment><comment><USER37> I've noticed that (almost?) any talk about any editor in the last few years: emacs, vim, sublime, atom etc always brings up how good VS Code is.

It's a huge endorsement of VS code.

<comment><USER38> I think users of VI or emacs has different ways of defining "good" here. Personally, I would never use VS Code, or any other chromium editor.

<comment><USER39> Is this due to some notion of it being slow? VSCode is fast, native-fast. With a fantastic plugin ecosystem

I've been a full-time Vim user for the past decade (now NeoVim) but I've seriously considered switching, VSCode with vim mode turned on is truly fantastic, it's just not portable enough for my needs.

<comment><USER40> > VSCode is fast, native-fast.

Not when starting up…

<comment><USER39> I'd consider startup time the least important metric for measuring speed of a text editor - as long as it's not ridiculous.

Important speed metrics for me are: Switching between buffers

Scrolling up/down a page (vim used to be terrible for me before i switched terminals to Kitty)

Substitutions

Search

</comment></comment></comment></comment></comment><comment><USER41> Oh Emacs. A graybeard I respect got me to try it about 5 years ago. I used to walk by his machine and think "wow, in a movie about a hacker, this is what their computer screen would look like". I also thought Magit was pretty damn cool because it made interacting with Git extremely intuitive (once you're comfortable with Emacs).

In the years since first picking up Emacs, I have probably spent 100 hours or more configuring it, reconfiguring it, refactoring my configuration, and other things that wasted my time I'm not going to make the world a better place by configuring my editor. I'm going to do it by shipping code.

I'm a recovering terminal junkie. I had a problem. I was bored with my work so I wanted to challenge myself. Maybe I even enjoyed procrastinating a little.

<comment><USER42> So if you're not making the world a better place you're wasting your time?

Play is supremely important in almost any activity. Not only is there incredible work insight to be found in activity without goals, but play is fun and good for you.

<comment><USER43> On the importance of "play"—

From one of the books I'm currently reading ( _Blueprint, The evolutionary Origins of a Good Society_ , by Nicholas Christakis — itself a great read), I learnt of an interesting book reference: _Homo Ludens: A Study of the Play- Element in Culture_ (1938).

The abstract sounds promising:

 _" [...] With cross-cultural examples from the humanities, business, and politics, Huizinga examines play in all its diverse guises—as it relates to language, law, war, knowledge, poetry, myth, philosophy, art, and much more. As he writes, "Civilization is, in its earliest phases, played. It does not come from play like a baby detaching itself from the womb: it arises in and as play, and never leaves it." [...] Starting with Plato, Huizinga traces the contribution of "man the player" through the Middle Ages, the Renaissance, and early modern world. [...]"_

[*] [https://www.amazon.com/Homo-Ludens-Study-Play-Element- Cultur...](https://www.amazon.com/Homo-Ludens-Study-Play-Element- Culture/dp/1621389995)

</comment></comment></comment><comment><USER44> I have been using Emacs for about 20 years, and I love that you can use it on Windows and Linux and character mode and GUI. Love the programmability and the keyboard shortcuts.

Where it sucks though is programming language smarts such as "intellisense" completion. Even something basic such as syntax coloring doesn't work reliably --depends on the mode implementation and most of them are buggy.

I get by in other editors such as Visual Studio and VSCode by downloading emacs emulators.

<comment><USER14> Intellisense was something I was missing for years. I contribute to a large C#/netcore project and it was a pain to use emacs until I discovered OmniSharp-Roslyn[0].

Auto code completion works pretty much flawlessly for me now.

[0] - [https://github.com/OmniSharp/omnisharp- emacs](https://github.com/OmniSharp/omnisharp-emacs)

<comment><USER45> I have never got omnisharp to work reliably- spent quite a bit of time on it, too. I'm wondering if I should try again or just give up...

</comment></comment></comment><comment><USER46> The reason I use emacs over vscode is due to the reason, that it does not waste cycle in rendering html, use irc instead of slack and discord, and does one thing very well which is processing and rendering text.

Emacs inspired me to take on and understand functional language. Rust still feels an incremental improvement with memory safety over C.

I believe C is unfairly criticised. C has it's own drawbacks but it is one of the language which really gave me power to tinker with hardware directly and it was refreshing. Rust may be a great language in design but didn't generate that feeling of directly able to work with hardware as I had when I used basic peek and poke and later C.

If org-mode, text processing and lisp stays with emacs it will continue to survive for next 40 years. Yes it needs constant evolution but I do not agree with the list like renedering html, working with slack.

</comment><comment><USER47> Fabric Bellard's ema s port (QEmacs): [https://bellard.org/qemacs/](https://bellard.org/qemacs/) It's amazing how fast it is. Unfortunately it is not fully compatible and missing many features.

<comment><USER10> It doesn't have an emacs lisp interpreter right? It's funny, for me, emacs is emacs lisp. I sort of don't understand why one would emulate emacs without a lisp interpreter (given it's Bellard I'll probably find out I'm wrong and it does have a complete emacs lisp interpreter).

</comment></comment><comment><USER48> People who use Racket on Emacs might appreciate Racket Mode, which I only recently discovered:

[https://github.com/greghendershott/racket- mode](https://github.com/greghendershott/racket-mode)

</comment><comment><USER49> As an emacs user I like the little rant about keyboards towards the end (54:27). It's stupid hard to find a laptop with good keys, good layout, good internals, and good battery.

<comment><USER50> I'm partial to the Emacs keybindings, but you you're so right about the laptop keyboards. Mine doesn't have an End key (Home, PgDn, PgUp, Power).

<comment><USER7> The benefit of Emacs's keybindings is that they're the default keys used by GNU readline (though it also supports Vi-style keys.)

That means when you know that Ctrl+E and Ctrl+A (`C-e' / `C-a') goes to the end or beginnings of a line in Emacs, you know it'll also work in your bash shell (or indeed any tool that uses GNU readline.)

<comment><USER50> That's what I'm using while coding, but it's not friendly to all software (e.g. browsers or other programs that don't have configurable keyboard shortcuts).

<comment><USER51> This is one of the things I like about Mac OS: text fields, by default, have the readline keybindings. In the box where I'm typing this comment in Firefox, I can use control-{a,e,n,p,f,b,d,h,k} just like I can in the shell. This is one of the reasons I haven't tried harder to use a Linux desktop.

</comment></comment></comment></comment></comment><comment><USER52> Emacs (and may be Vim) - Not sure, but seems like it got support for all the programming languages under sun.

Thanks to all those awesome people who put effort over the years.

<comment><USER36> My killer feature is when you want to streamline your workflow. Adding a new test runner on VSCode for your favourite language? Possible but takes a lot of effort to get right. Adding one in emacs? I can inspect the source code or my language bindings and add/change the command it's running. In a few dozen lines of elisp I can add shortcuts to all my daily tasks and even combine them. Search for an error message I get in my tests on Honeybadger? Check. Run code snippets in org mode against my local machine and export the whole document as PDF or markdown to our wiki? Saves me a few minutes here and there

</comment></comment><comment><USER53> Could TeXmacs solve some of the problems mentioned in the slides?

[http://www.texmacs.org](http://www.texmacs.org)

TeXmacs is based on Guile and there is apparently already a Guile-based implementation of Emacs that is near feature complete.

Perhaps a Guile-based Emacs could somehow be embedded as an elisp-compatible interpreter "back-end" inside TeXmacs, much like how Mathematica is separated into a kernel (for computation) and a front-end (for input and rendering) that communicate with each other over a protocol called MathLink.

There is also DomTerm from Per Bothner, who perhaps coincidentally has also worked hard to produce his own Scheme-based version of Emacs (by way of the JVM).

[https://domterm.org](https://domterm.org)

One of the downsides of TeXmacs is the significant keystroke input latency caused by the extensive amount of page redrawing that is often required when editing "rich text." It's one of the main reasons that many still prefer latex-preview mode inside Emacs instead. Maybe latency would be less of an issue inside a graphics-aware terminal emulator like DomTerm.

</comment><comment><USER54> I really started to get lost when he started talking about never wanting to leave his text editor, wanting to read his emails in Emacs, browse the web in Emacs, have slack and discord in Emacs, etc.

Serious question: Why? Is it that hard to alt+tab? Especially, why would you want such distracting features inside your editor, while you are trying to focus and work?

<comment><USER55> > Is it that hard to alt+tab?

incidentally, alt+tab is broken on MacOs. It cycles between programs, not windows - so if you have mutiple terminal windows open, you're screwed. You can use the alternative alt+` to cycle between windows of the same app, but that doesn't go to the least recently used window, but cycles through them in order - which is also useless when having many terminals open. Then you can pay like 15$ to get a tool like witch (just to get basic OS functionality), but that tool is slow and broken.

So on a Mac it can be pretty hard to alt+tab.

<comment><USER56> I don't get where that is broken.

<comment><USER55> On other operating systems, alt+tab goes to through the list of least recently used windows. So when working between two windows, one hotkey switches between them. On Mac, that's not possible if the two windows are part of the same app (or also when windows are distributed across multiple work spaces).

<comment><USER15> Being able to switch between apps, windows, and tabs is different from just windows and tabs. I prefer the former because the hierarchy allows you to find arbitrary things with fewer keypresses overall (as opposed to mashing alt-tab through a long flat list).

<comment><USER55> Except there's no such capability.

</comment></comment></comment></comment></comment></comment><comment><USER10> I've been using Emacs for 15 years or so.

I recommend Emacs to anyone who thinks it would be fun to use Lisp to configure a text editor, even if just a bit. However, that is an "if and only if".

If you choose to go beyond using emacs lisp for configuration, then I would say that emacs-lisp is an extremely fun and productive environment to work in: many programming languages give you a good standard library and package ecosystem, but with Emacs lisp you not only get that, but from the outset your project will be born into a mature and extremely fully-featured text editing environment. It's possible to create useful projects with a very good feel, with relatively few lines of code. If you don't have another excuse to use a lisp in your life, this is a very good one.

I would like it if Emacs would stop distributing itself with the ridiculous splash screen and 1990s menu icons.

</comment><comment><USER57> I struggled a lot with my Emacs setup, and developing for clients and languages. But I was able to puzzle my pieces together with [https://emacs.zeef.com](https://emacs.zeef.com) , it is your friend

</comment><comment><USER58> A question for Emacs user: Do you use the GUI version or the terminal version? I found the terminal version next to unworkable because I couldn't find any terminal that didn't capture some keystrokes that were meant for Emacs.

<comment><USER20> GUI. Why should I use the terminal version if I work at a GUI. If you have SSH then you do not even have to log in to sites, to run emacs. Just use Tramp.

</comment></comment><comment><USER59> On the note in the video about irc, I think there is room to update irc but keep it going. Right now as an in between I'm leaning towards a mumble/irc setup. The only other two things that really catch my eye are matrix and mattermost (which has a jitsi integration).

I hate the trend to proprietary chat apps so much. After years of ventrillo and teamspeak, around 2009 I discovered mumble and was using it for years, but in the last ~1year or so everyone started switching to freaking Discord and it drives me crazy.

</comment><comment><USER60> Emacs is an extensible editor ... It just need to be adaptive now to programming language evolution.

If Lisp have make the job from a while it should be nice to keep that solution, but, to had more flexibility for next generations.

A simple example, I works with it every days, IRC, mail, web, source code ... but on Ycombinator, I need to load an html browser to vote ... But yes I works out of Xorg ... and that is an important value that most of editor just don't understand.

Thanks for GNU Emacs, I really love it.

</comment><comment><USER61> I've never seen the need to use anything other than vim.

<comment><USER62> Same here. I've tried getting into Emacs for a couple days but gave up. It would mean a lot of effort just to achieve a similar proficiency, for little gain(better syntax highlighting, a few small features).

I think the deeper you're already in one of the ecosystems the harder it becomes to switch and the returns diminish further. In my case I'm very comfortable with Vim combined with a tiling window manager and terminal buffers, and I can't stand Emacs' control scheme. So at this point it's simply not worth it.

<comment><USER26> Emacs has recently been seeing a lot of growth from vim users who are migrating to emacs "distros" (like spacemacs and doom) that are pre-configured with emacs' vim-emulation.

I found this video[0] a pretty interesting perspective from a die-hard vim user who switched.

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

<comment><USER62> I've tried those already. Evil, Spacemacs, Doom. All except Doom have a misbehaving Escape key, Spacemacs needs as long to start up as one of the Electron-based editors.

In the end it comes down to this: I don't need Emacs. I've tried to find a feature that I really want and that's worth it to switch for(yes, I also tried org mode). But I'm comfortable with my Vim setup, I don't need an email client or web browser in the text editor.

</comment></comment></comment></comment><comment><USER63> I'm on 20 years now, can easily see it going 40 more.

</comment><comment><USER64> I am considering buying Intellij IDEA ultimate. Been testing pycharm Pro, and docker integration for specific OS settings, remote debugging, refactoring tools such as method extraction, package conversion, and terraform integration is a breeze.

Any way I could set such an environment up in emacs?

<comment><USER6> JetBrains editors are superbly good at refactoring, IMO that's their one only advantage.

Consider working primarily in an editor with LSP support (such as Emacs) and use JetBrains on the side solely for refactoring. Wean yourself off of JetBrains, as LSP improves.

</comment></comment><comment><USER65> > Emacs support is on by default in MacOS.

Given that the author is siding with the usability of macOS with something like Emacs over using it in a GNU/Linux distro is somewhat a surprising discovery and perhaps an insight into the falsehood of having a 'consistent' Linux Desktop; even for power-users like the author.

If one has to go through a maze of settings and config files to configure Emacs shortcuts to work 'consistently' on either a GNOME or KDE desktop even for a typical developer, then I would at first question myself if such an endeavour is 'worth it' for something as arcane as Emacs.

While it was a great spectacle to watch the Vi/Emacs wars, I'm afraid that I would favour getting my work done on my MacBook, thank you very much rather than messing around with something that could be easily mistaken as the editor for the prehistoric years.

<comment><USER14> I use the railwaycat port of emacs, which is frankly what any macos-based emacs user should use. I provides smooth scrolling, an interface with applescript, touch bar support, and lets you use os-native hotkeys including Command-as-Meta.

<comment><USER26> I agree that the Mitsuharu version of emacs is pretty great on the Mac, but the lack[0] of multi-tty[1] support is a deal breaker for me. I like emacs- plus[2], which while not quite as nice as the railwaycat/mitsuharu version, allows me to run text frames and GUI frames on the same server process.

[0]: [https://bitbucket.org/mituharu/emacs-mac/pull- requests/2/add...](https://bitbucket.org/mituharu/emacs-mac/pull- requests/2/add-multi-tty-support-to-be-on-par-with/diff)

[1]: [https://www.emacswiki.org/emacs/MultiTTYSupport](https://www.emacswiki.org/emacs/MultiTTYSupport)

[2]: [https://github.com/d12frosted/homebrew-emacs- plus](https://github.com/d12frosted/homebrew-emacs-plus)

</comment></comment></comment><comment><USER66> I changed Emacs for Sublime and now VScode - my main reason to change IIRC was that my fingers/wrist hurt from using chords so much :(

<comment><USER20> You should have simply switched to sticky keys, so you don't have to press keys simultaneously: [https://en.wikipedia.org/wiki/Sticky_keys](https://en.wikipedia.org/wiki/Sticky_keys)

Also, you can change the keybindings.

<comment><USER66> I tried a few times, but could not go from "pressing at the same time" to "presssing in a sequence". I just "chorded"...

</comment></comment></comment><comment><USER67> The idea of Emacs will survive, that's quite sure. The editor, I wouldn't bet on this one.

</comment><comment><USER68> authors seems to not know melpa and is away from emacs news.

eglot is about to ship into emacs core, emasc has pdf reader for decades and remacs is a rewritten of emacs in rust, that had contributiuon from emacs core devs too.

and guile is ready to use into emacs as a alternative to elisp

</comment><comment><USER69> With emacs it feels like I can do almost anything.

</comment><comment><USER70> Emacs - the editor that STILL doesn't have a simple way to duplicate the current line?

<comment><USER71> I think the germane point about Emacs here is that some people like writing Lisp and some people hate it. If you hate it Emacs is likely not going to be your best environment, and that's fine.

I really like writing Lisp so Emacs has a simple way of doing anything I want, but it's not for everyone.

<comment><USER72> I think this is a larger problem with Emacs. Duplicating a line is something that should be easy to do out of the box.

And if it's a situation where you really need to make the user define a keyboard shortcut, don't make them do C-c followed by the actual shortcut, let them define single keystroke shortcuts to do what they want. Multiple keystroke shortcuts are so damn annoying.

<comment> globular-toast Why? I can't think of any time when I've wanted to duplicate a line.

<comment><USER72> Well, there are a lot of things I don't want to do, but that doesn't mean others don't want to do them. As these things go, it's a fairly common operation.</comment></comment></comment></comment></comment>


The best project management website (Basecamp?) - <AUTHOR>

I'm overwhelmed by the number of project management services that are popping up. Mostly because I don't understand why. I think dev shops must have very custom preferences and can't accept a 3rd party project management service, so they develop their own. This explains the extensive PM service proliferation.
Basecamp, GoPlan, Producteev, Cohuman, 5pm, liquidplanner...
It seems like every service doesn't quite offer enough features for some people in some areas, but others that do offer all features become "overkill" or "bloated". So does each PM service permutation take a slightly different approach, having one "feature" that a sub-market needs, without being overkill?
What do people think of a "build your own" PM service. You select what you need in your app at signup, so you don't have "overkill" software, only what you need (including that deal-breaker feature). <comment><USER2> We use Open Atrium which is an install profile of Drupal. It's great because the feature set (by default) is very minimal, but it caneasily be extended with any of Drupal's modules, or you can create your own features. I love it because it's open source, runs on my servers, and is basic enough that when I give it to clients they aren't highly confused or need training to get started using it.

</comment><comment><USER3> I'm actually using Basecamp right now, via a client, and I have to say I'm a bit underwhelmed. I mean, it works, there are no obvious bugs or anything, but I don't care much for the interface - it seems kind of jumbled and not entirely clear.</comment>


Due to error, stimulus checks marked as mailed May 22, are in fact not sent yet - <AUTHOR> https://www.irs.gov/coronavirus/get-my-payment-frequently-asked-questions#missing <comment><AUTHOR> For those who don't want to click in -

If the Get My Payment application says your check was mailed on May 22, some payments scheduled to be mailed on that date were not issued due to a system error.

Get My Payment will provide a new date once your payment by check has been scheduled. We apologize for the delay.</comment>


Is Silicon Valley Doomed to Become the Next Detroit? - <AUTHOR> https://www.fastcompany.com/90201098/is-silicon-valley-doomed-to-become-the-next-detroit <comment><AUTHOR> This article may seem like clickbait but hear me out. My father grew up in the twenties when Detroit was the Silicon Valley of its day. It was both exciting and wealthy, they called it the Paris of the Midwest. The prosperity continued for decades. I was getting out of college in the seventies when without warning to those of us in Michigan it all stopped. Looking back there were warning signs but they were ignored. The top auto execs used to drive each others vehicles so they'd stay informed on how competitors compared to their products.

I have an Uncle who was a top exec and heard it from him directly that they never drove Toyota's or any other Japanese car. Because they didn't they were blind sided until it was too late. The same thing can happen to Silicon Valley because it's leaders are pretty arrogant as well.</comment>


Roma Gypsies flee to California after Europe turns more hostile - open-source-ux http://www.bloomberg.com/news/articles/2016-09-19/roma-gypsies-flee-to-california-as-europe-turns-more-hostile <comment><USER2> The story seems a bit "feel-good"-y. Many Roma don't have the resources for this kind of trip. They're among the lowest social classes in relatively poor countries (think average wage of less than $500 per month).

About discrimination... yes, there is a lot of it. It's a cultural thing. The traditional Roma culture is close to incompatible with modern societies: nomadic societies (in a world of property rights), arranged marriages for teens (as young as 12-14), a culture valuing "face" and prestige incredibly highly (think possibility of violent clashes for offenses). There's also a probably reasonable from the Roma point of view "moat mentality" where outside help is viewed with a lot of suspicion, based on past discrimination. Overall, a very hard nut to crack, this discrimination, for both sides.

<comment><USER3> A one way flight from Europe is North America is not that expensive ($300-$800), it's something even poor people are able to save up for and larger families are able to pool their resources together. The practice described in the article has been fairly common for well over a decade now, but previously the destination was typically Canada rather than the United States.

<comment><USER4> > It's something even poor people are able to save up for and larger families > are able to pool their resources together.

And if you prosper in this new land, you send remittances.

</comment></comment></comment><comment><USER5> >Americans who have never dealt with gypsies think their gypsies are anything like Europe's.

Pretty much every country with a big gypsy population in Europe has programs to integrate them and have given them a chance (Romania, Spain, Portugal, France etc). Gypsies in Europe have repeatedly refused to integrate into our societies and while some do integrate and leave the gypsy life behind (I personally know one such person) they are the exception to the rule. Those who do face tremendous discrimination and have a hard time finding work. Why is that?

I would argue that racism (or xenophobia) stems from repeated, bad, past experiences with a group of people. The gypsies are one such group.

They deal in petty crime in every city, in organized crime and ATM theft (they make the ATMs explode at night and take the money), abduct children to raise as their own or as sex slaves, are untrustworthy in any exchange you might have with them (either they sell you crap and in that case you will never see them again or they sell you good stuff then come back later to steal it from you), if you wrong them in any way they will come back in huge groups and exact revenge, they roam the country and set up camps in private property or forests and leave a mess behind and last but not least if they have documentation the women will have dozens of kids and abuse the welfare systems.

How do you resolve this with "those poor gypsies are being persecuted, just give them a chance"? This is how they are, you can't change them no matter how many programs, education or money you throw at them.

<comment><USER6> To also add what those who have no clue about gypsies don't understand is that even if some of them want to become integrated, they'll get oppressed by OTHER GYPSIES, because their culture is at stake etc. Can a gypsy be racist to a fellow gypsy?

I'd be interested in hearing the answer, but presumably it will be nonfactual nonsense.

</comment></comment><comment><USER7> > "The stereotypes of them panhandling and engaging in petty thievery just > stir up these prejudices."

> In Sweden, politicians are debating whether to ban begging, a tactic critics > say targets Roma.

So, the stereotypes are true? From what I can tell, the Roma have a distinct way of life that they're seeking out, making them a bit different than socioeconomically transient groups that are struggling to integrate and succeed (i.e. various influxes of immigrants at different stages of US history).

<comment><USER8> I would say that the stereotypes are mostly true, in the majority or minority (whatever it is) that is visible.

I am sure there are a reasonably sized portion of Roma that do not live up to the stereotype and are treated unjustifiably bad, but that is not what is noticed.

I am also sure that the Roma have a really hard time living in Romania and Bulgaria.

However. During the recent 5-7 years or so, several thousands (25.000?) of Roma have semi-permanently migrated to Sweden, and there is now a beggar outside literally every super market, liqueur store or hardware store in Sweden. Wherever you go. Even in the smallest and most remote village.

Other than begging, many of them are making a living by stealing - mostly from elders, picking pockets or ripping necklaces, shoplifting, and to some extent prostitution - all of which has become a problem in some areas.

An unusually publicized event was that a Romanian Roma that got arrested for kicking a pregnant mother of two in her stomach when she challenged him when he was trying to steal a wallet from an elderly person.

As a side note, it was not reported that he was Roma because ethnicity is characteristically not considered "important" in Swedish media. If mentioned, Roma are euphemistically called "EU-migrants" by media, presumably because it is considered racist to single out an ethnic minority. As there are about 1,000,000 actual legal (working) EU-migrants in Sweden, it is actually rather misleading and confusing.

Sweden have a bit of a embarrassing history with our own Roma - we deported most of them to Finland in the 17th century, supposedly because they were a nuisance - and had a really hard line "integration" policy with the remaining few until 1975 or so, where many were sterilized, and many children were taken from their parents.

Because of that, and also because Swedes are generally very kind-hearted - <AUTHOR> authorities have been very lenient with the newly arrived Romanian Roma, and although they are not really allowed to stay here for more than 3 months, it is not enforced at all. Slums have been allowed to be built, and families with children are allowed to live in circumstances that would immediately lead to an intervention from the social agencies if they were not Roma.

Only recently the tension has been rising, partly also because the 500.000 or so refugees that have come here during the same period.

The social welfare providers have been starting to refuse to offer schools (as they have done) and medical help, on the ground that they are not actually residents.

Talks and agreements have been made with Romania and Bulgaria, and some have been offered repatriation and economic help in Romania.

As a side note, the "indigenous" \- mostly Finnish speaking Roma that moved "back" to Sweden from Finland are not faring that well either. A police register of more or less every single Swedish Roma living in southern Sweden was leaked to a newspaper a while ago which lead to a lot of media attention and accusations of racism.

The regional police was criticized by politicians and the politruk top brass, and was criticized in an internal revision, but it was also closed without further actions, as it also turned out that every single person on the list was either a recently convicted or suspected person, or closely related to or living with a recently convicted or suspected person.

So yes. Stereotypes seems to be true. There are strong cultural factors that seems to hard to change, and there are probably enforcing mechanisms but those that actually really suffers are the Roma themselves. If there is any violence, it's almost exclusively within their own group, and the economic damage is actually not that large.

<comment> guard-of-terra > families with children are allowed to live in circumstances that would > immediately lead to an intervention from the social agencies if they were > not Roma

That's totally baffles me every time. Let real degenerates do whatever they please, but terrorize middle class families? That's what "social agencies" seem to do everywhere.

</comment></comment></comment><comment><USER9> I hate to say it, but if I were one of the groups that had a hard time in Europe circa the 1940's, I'd be packing my bags too. There's a reason that so many Jews got the hell out of France in the last few years. It might be paranoid, but we've all seen how far the alternative gets you.

<comment><USER10> > There's a reason that so many Jews got the hell out of France in the last > few years.

Do tell us that reason.

<comment><USER11> France has had a rising antisemetic sentiment along with the defacing of Jewish cultural sites, along with a sharp increas (think double) over the last year or two of hate crime against Jews.

[http://m.washingtontimes.com/news/2016/jan/18/france- might-n...](http://m.washingtontimes.com/news/2016/jan/18/france-might-not- have-any-jews-in-the-future-and-h/)

<comment> guard-of-terra What do you think, what specific demographic group in france is most visible in antisemitic sentiment, defacing of Jewish cultural sites and hate crime against Jews?

<comment><USER12> I can't speak for France, but in Sweden the vast majority of antisemitism comes from muslim immigrants.

[http://translate.google.com/translate?u=https%3A//samtiden.n...](http://translate.google.com/translate?u=https%3A//samtiden.nu/15599/ta- unga-invandrares-antisemitism-pa- allvar/&hl=en&langpair=auto|en&tbb=1&ie=UTF-8)

[http://translate.google.com/translate?u=http%3A//www.express...](http://translate.google.com/translate?u=http%3A//www.expressen.se/kultur/toppnyheter-/nalin- pekgul-hatet-mot-judar-gror-i-tensta/&hl=en&langpair=auto|en&tbb=1&ie=UTF-8)

<comment><USER9> Vast majority of antisemitism, or vast majority of antisemitic crimes? Not to put too fine a point on it, but Jewish people are not exactly unaware of how the vast majority of the Islamic world views us, talks about us, and would very much like to treat us. We're also not likely to think that just because they're the loudest, they're somehow the only ones either.

It's a bit like the trouble Americans seem to be having with racism, in that a whole generation of kids was taught that racism looks like the KKK or Jim Crow Laws. Far more prevalent and insidious though, has always been the deeply held belief that people know you only talk about among 'like minded' individuals. That way of thinking is much older than the KKK; it gave rise to the KKK. You can kick down an organization, but you can't do the same to a mode of thinking.

You can only outlive it.

<comment><USER8> Both?

Antisemitism in Sweden is almost exclusively found among the Muslim immigrants.

Politically the left is a bit blindsided in the Israelic-Palestinian conflict, but that is another issue, as is the strongly secular society's discomfort with all deeply religious groups, including (very) orthodox Jews.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> So I really try not to be judgemental and I feel a bit bad saying this, but I don't have a single good thing to say about Gypsies and I've never met someone who has. At least about the ones you see in the UK.

They are a huge problem in the city where I went to University, constantly draining police resources to deal with petty crime. Everyone I've talked to in front of house roles absolutely hated dealing with them as well, if not stealing they always seem to find hair in something and so get a refund or a discount.

Where I grew up they caused huge problems when they moved camping ground, draining council resources and never clearing up after themselves. They left huge piles of litter in the most beautiful countryside spots.

There is an interesting documentary about UK Gypsies called 'Big Fat Gypsy Weddings', it's worth a watch if you're interested in that sort of thing. [http://www.channel4.com/programmes/big-fat-gypsy- weddings](http://www.channel4.com/programmes/big-fat-gypsy-weddings)

Edit: And I don't like the 'well you must be racist if you think this' comments here.

<comment><USER14> Won't these be "Travelers" and not Roma?

<comment><USER15> There are around 200,000 migrant Roma in the UK, with another 200-300,000 people who meet the broader Council of Europe definition of "Roma". Irish travellers are the main other itinerant group; estimates suggest that there are around 25,000 Irish travellers in the UK.

All of this data is fairly vague, because itinerant people are inherently difficult to survey. There is only a single census category for "gypsy/traveller", so that's of little help. Many indigenous British travellers do not identify themselves as being Roma and have unclear origins, further complicating the situation.

[http://www.salford.ac.uk/__data/assets/pdf_file/0004/363118/...](http://www.salford.ac.uk/__data/assets/pdf_file/0004/363118/Migrant_Roma_in_the_UK_final_report_October_2013.pdf) [http://itmtrav.ie/irishtravellers](http://itmtrav.ie/irishtravellers)

</comment></comment></comment><comment><USER16> 1400 years of persecution has culminated in a denial of access to basic education, healthcare and representation in government. The stereotypes applied to a people who live on the edge society are to some extent true for a dwindling minority who eschew societal norms, but who can blame them. Without access to the jobs market and a path to integration they're largely kept in their place. The response of Romania upon joining the EU was to thrust their failure to integrate the Roma on to other EU member states, who in turn have refused to offer anything resembling comprehensive help. It's sad that there's no realistic prospect for integration and no EU state truly believes in constitutional multiculturalism anymore so no protections will ever be afforded to the roma as are to jewish, christian & muslim minorities.

<comment><USER10> > The response of Romania upon joining the EU was to thrust their failure to > integrate the Roma on to other EU member states, who in turn have refused to > offer anything resembling comprehensive help.

Can't speak for the entire EU, but in Ireland Roma have the same opportunity as any EU immigrant. There's no concerted effort to integrate them nor is there institutional prejudice to keep them down. Just good old apathy and a pretty solid social security system.

Any 'failure to integrate' is entirely on their part. Many are fully integrated, some are my friends. Others continue to live lifestyles similar to what has been described in the comments.

<comment><USER16> I was trying to point out the nuance between an integrated multiethnic society and a multicultural one involving multiple parallel societies where to a certain extent a minorities own laws take precedence. Going back to the article, I think minorities have an easier time coming to terms with fractured identities in America as at least one can be American-whatever, unlike in Europe in my own experience where you're simply "not from here".

> "nor is there institutional prejudice to keep them down"

It's pretty well documented: [https://en.wikipedia.org/wiki/Antiziganism](https://en.wikipedia.org/wiki/Antiziganism)

</comment></comment></comment><comment><USER17> It will be an interesting experiment since the vast majority of Americans have none of these stereotypes. The word Gypsy conjures solely the image of a palm reader and the word Roma means nothing to the vast majority.

Their speech will sound like Russian to the American ear and their appearance will match that impression.

So, if the trend somehow continues or expands, we have a chance to see whether the exact same stereotypes re-emerge or whether they too end up following an unremarkable integration trajectory.

<comment><USER18> I feel like the millennia and holy and sacro-saint tradition of beating people at the ATM to steal their cash will match a very potent reaction in the land of the gun-totters.

<comment><USER19> California doesn't allow citizens that live in major metro areas to carry concealed weapons, unless they are employed as armed security, or are politically connected.

</comment></comment></comment><comment><USER20> Because most of you don't have any idea about Roma Gypsies, please, watch this [0] hour-long documentary when you get a chance!

[0]: [https://vimeo.com/13906172](https://vimeo.com/13906172)

</comment><comment><USER20> Roma Gypsies have been unsuccessfully trying to integrate into Europe since the 15th century. It's funny how the human rights Nazis support them but care less about their helpless and hopeless victims! In Bulgaria, many retired people live daily under the Gypsy terror, and nobody cares! These double standards make me sick! There are rights but rights come with responsibilities! If you reject to accept your civil responsibilities, you waive your rights - it's that simple!

<comment><USER21> As opposed to the _actual_ Nazis that sent them to the gas chambers.

The entire point of universal human rights - which grew out of the aftermath of that same Holocaust, incidentally - is that you _don 't_ waive them, ever.

And it's particularly abhorrent to suggest that the rights of an entire group can be collectively abrogated by the actions of some - or even many or most - of that group.

<comment><USER6> That's a cute and proud theory until the ones who pay the bills are in place where they feel the government is neglecting them in favour of others and the economy isn't helping as well. You know, the citizens/taxpayers. Specially the lower and middle class, which is getting rare because of globalisation.

Everything has its price.

<comment><USER21> That's a cute retort until it becomes apparent that many of those citizens/taxpayers are quite happy for their government to expend great sums of money in the service of brutalising others.

[https://www.theguardian.com/news/series/nauru- files](https://www.theguardian.com/news/series/nauru-files)

</comment></comment></comment></comment><comment><USER22> I lived in Europe for 14 years. I had several Roma friends, and I also had several family members (grandmother, father) robbed by Roma in the street. I don't see much benefit to letting those who want to leave Europe live in America. Many Roma populations are mired in multigenerational poverty, with all the vices that tend to accompany that condition.

</comment><comment><USER16>
       "Gaunt face
       dead eyes
       cold lips
       quiet
       a broken heart
       out of breath
       without words
       no tears"

[https://en.wikipedia.org/wiki/Memorial_to_the_Sinti_and_Roma...](https://en.wikipedia.org/wiki/Memorial_to_the_Sinti_and_Roma_Victims_of_National_Socialism)

</comment><comment><USER23> I've had brushes with Roma in Italy. They're very hard-pressing when begging, but other than that, they seemed OK. People were really not nice to them, though. It scared me a little.

<comment><USER18> If by "hard-pressing", you mean beat people down, empty their pocket, break doors to empty houses, tear away the pipes, steal your car… then yeah: you have the reason why people don't like them a lot.

</comment></comment><comment><USER24> Not sure why the downvotes. Feel free to visit Roma housings provided for those in need in northrine-westfalia, and witness behaviour that can only be described as anti social.

Like literally throwing trash out the window, social security fraud, theft, begging and overt hostility to "intruders.

But feel free to click that downvote button, the warm fuzz of perceived moral superiority feels great doesn't it?

<comment><USER25> You forgot "threatening to kill their children when police try to make arrests at camp". I leave it as an exercise to any incredulous reader to look this shit up.

People who shout 'racist' in discussions about Roma have never interacted with Roma. What's worrying (to me) is that these do-gooders don't seem to realize that their behavior is pushing otherwise moderate people to the far right. The far right is literally the only political arena that recognizes that such a problem exists.

<comment><USER26> > _People who shout 'racist' in discussions about Roma have never interacted > with Roma_

The issue with that sort of reasoning is that it is word-for-word exactly what was said about Black people... and is still said by some. So people have a pretty understandable reaction to it, regardless of the merit of it within a particular context.

<comment><USER25> Yes, and I can totally understand that. That's the hard thing when discussing Roma: they really are a special case, and said case doesn't map onto anything the American public has experienced.

The other thing that makes it difficult is that they objectively have suffered at the hands of the Nazi regime, so it's easy to start accusing critics of supporting such policies. In my experience, this is rarely the case, and doing so only lends legitimacy to far-right political groups.

That said, it's possible to be critical of a clear and consistent pattern of behavior without calling for violence.

<comment><USER4> > they really are a special case, and said case doesn't map onto anything the > American public has experienced.

The American public has experienced a variety of urban certain inner-city communities comprised largely of African Americans. They are culturally distinctive, and members are easily recognisable as such by their appearance and their typical clothing.

Due at least in part to a multigenerational history of prejudice and mistreatment, these communities are wreaked by poverty, both petty and violent crimes, alcoholism, and use/abuse of illegal drugs. Some group members ostentatiously reject the idea of "integration" into the more prosperous bands of American society, and have published many popular rap songs glorifying a "gangsta" lifestyle characterized by violence and objectification of women. It is possible that this is self-perpetuating to some extent, as the culture's family structures (a very high incidence of single-mother families) and the culture's values (especially regarding education) may not be conducive to modern prosperity.

And yet we're generally able to say as a nation that African-Americans have as much potential as human beings as any other, morally and intellectually. We call on each other to treat each other, and all people, as individual humans and not to judge them by the colour of their skin but by the content of their character. It's hardly a conflict-free relationship, but it's something.

So I'm curious what's different specifically with the Roma that maps onto this experience so poorly, or whether it's just the larger surrounding cultures not having a well-developed culture of tolerance. Do tell.

<comment><USER18> I have never heard of African Americans emptying a house while the elderly occupants are still in, tearing apart the pipes to re-sell for tin, throwing the occupants down the stairs to die in agony, with a broken hip, for hours, all that for 50c worth of copper.

If it happened, I have never heard Jessy Jackson explain on national TV that this is perfectly normal and that property is a cultural thing and that that kind of "cultural misunderstanding" is entirely the fault of Police brutality and forced education.

I have never heard of African American claims that at 6'2" tall guy with visible muscle lines, a full beard and a deep voice is 12 y.-o., has not document to prove it, and therefore cannot be charged with grand larceny and barbaric violence, even if he was caught in the act and the whole thing is on tape.

I have never heard Rev. Jesse Jackson explain that forcing the public rape of an 11 y.o. by her 13 y.-o. cousin is also a cultural thing.

When a African American drug lord is arrested, his gang might challenge the authorities and defend him, but the vast majority of his victims, generally also African American, rejoice -- they do not spit racist slurs.

Some, very few, African American can, on occasion us racially charge epithet. They do not casually say that the live of a Gadjo is not worth the clothes he's wearing and you'd be happy to help yourself if he were your size. To his face. African American don't see White Americans as cattle to prey upon.

The contempt some, most Roma have for Gadjo, is reminiscent of WWII rhetoric. Europe has changed since; not sure Roma culture has. If it has, the groups that are far more visible to Gadjos in Europe didn't get the memo.

<comment><USER4> > I have never heard of African Americans emptying a house while the elderly > occupants are still in, tearing apart the pipes to re-sell for tin, throwing > the occupants down the stairs to die in agony, with a broken hip, for hours, > all that for 50c worth of copper.

Copper theft is a big thing in the US: [http://www.cnbc.com/id/100917758](http://www.cnbc.com/id/100917758) \- I'm sure there's someone in the US who did something close enough and we could find a sensationalised headline if we did enough research. You probably just have that one case embedded in your brain because it matches a preexisting narrative, a trivially common form of cognitive bias.

> I have never heard Rev. Jesse Jackson explain that forcing the public rape > of an 11 y.o. by her 13 y.-o. cousin is also a cultural thing.

It's true, Jackson is more about defending people shooting the police with cries of "black lives matter!" while gang shootings continue to take about 13 black lives a day (and there's a lot more tragedies like Tyshawn Lee's than Laquan McDonald's out there.) If that's not practically an endorsement of having different values for what goes on inside the borders of a different culture, I'm not quite sure what is. And even if not, that's one man's specific political views versus an unsourced assertion and it fails to satisfy.

> When a African American drug lord is arrested, his gang might challenge the > authorities and defend him, but the vast majority of his victims, generally > also African American, rejoice -- they do not spit racist slurs.

Well, the police force is multiracial in a lot of cities, so racist slurs aren't always appropriate. There are plenty of places they'd just cry "Fuck the police!" etc. Inclusion on the police force may be a key difference, actually, though it's hard to be itinerant and hold that kind of a position at once.

> African American don't see White Americans as cattle to prey upon.

Guarantee you there are _some_ thugs out there who do. I wouldn't generalise, but I'm not yet confident that you should generalise either.

<comment><USER18> I have to be honest: I am not as familiar with the US as most people on Hacker News.

> that's one man's specific political views versus an unsourced assertion and > it fails to satisfy.

I'm not trying to tell anymore.

I have asked to journalist friends why they do not write on the topic, and none gave a reasonable answer. I can assure you that my experiences are mirrored by people who were confronted to bad situations; people who weren't just find it incredible and dismiss them.

> I wouldn't generalise, but I'm not yet confident that you should generalise > either.

I don't want to. I would like to see the ties between the violent thieves that I was confronted to and the glorious culture that I heard so much about. Internal tensions in the community are probably fascinating… but it's completely undocumented. Once again: I answered questions about why Europeans have such a violent reaction to Gypsies. There are countless incredibly shocking anecdotes of open racism against gadjos. I know my stories are true. If you want to finance journalists to look into it in more details, be my guest. I have tried, and I really hated the response I got from Roma officials.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER27> It's always a little surprising when you're talking with someone from Europe and they seem to have pretty reasonable views about the world and then somebody brings up the Roma and hoo boy the mask comes off.

<comment><USER28> I know this is hard to believe but there are actually groups of people who are worse than other groups of people. I know, it boggles the mind sometimes.

<comment><USER29> Hmm, not sure I can agree, but for the sake of argument, I assume that you don't think every member of said group is bad? Or every member of a 'better' group is good? That would be a very bold argument, which would require remarkable proof.

<comment><USER30> Any time any person on the internet says "this group has this property" and they are not talking about math or other pure-logic topic, you can and should assume they do not mean literally " _absolutely_ every member of this group". This statement included. It would a very bold argument that no one makes, but many people frequently counter-argue against. It's extremely common to see people get themselves worked up arguing fervently against claims no one made.

Keeping this rule in mind will save you and everyone else in the discussions from a long, frustrating, pointless arguments from extremes and semantic nitpicking.

</comment></comment></comment></comment><comment> guard-of-terra "There's a lot of prejudice against Roma in almost every country in Europe,"

For example, I've seen a few of them around ticket machines in Bologna railway station, Italy - trying to extract some forgotten change from the machines or harrass it off passengers.

Can I call this not prejudice but actually a mature judice? 'cause I've never seen anybody else do it.

You get to have prejudices when you behave like that.

<comment><USER31> > For example, I've seen a few of them around ticket machines in Bologna > railway station, Italy - trying to extract some forgotten change from the > machines or harrass it off passengers.

I've directly witnessed lots of white Americans do lots of horrible things, in many cases horrible things I've never witnessed people of other ethnic backgrounds doing.

If I then decide that white Americans as a whole are horrible people who do those horrible things, its still prejudice -- I am prejudging individuals based not on nothing but their ethnic similarity to people I've witnessed doing bad things.

<comment> guard-of-terra If Americans start to come to other countries and behave obnoxiously, those countries definitely have rights to kick them out and prevent any more americans from coming.

<comment><USER32> > If Americans start to come to other countries and behave obnoxiously,(...)

I believe you just described a good chunk of American tourists. :)

And a good chunk of all people, everywhere, for that matter.

<comment><USER33> While I interpret both as signs of overconfidence, there is a difference between talking to loud in public and throwing trash on the streets of your state supplied house.

</comment></comment></comment></comment></comment><comment><USER34> You did an amazing job turning the blame on the Roma themselves.

<comment><USER35> What makes you think they aren't to blame?

<comment><USER34> So you're saying Roma people are born evil? Like if you grabbed a Roma kid, well fed and educated, taught the right from wrong, and you would still get a petty thief? Like the society and policies have no effect on them?

Is this hackernews or did I just accidentally open up the comment section of daily mail?

<comment><USER36> Some cultures have built in defenses - like conspiracy theories, unfollowable rules for outsiders and micro-agressions to uphold.

But yes, you could reeducate that kid- but are you actually saying that a destructive culture should be dissolved by reeducating? Mao would be so proud off you. Speared on his own mental censor-scissor!

In all seriousness, the most interesting thing that was dissolving these anti- modern Regressor-cultures are smartphones and the old, non censored internet. If everyone can look over the fence, even the children, suddenly the conspiracy stories are difficult to entrench.

<comment><USER37> > are you actually saying that a destructive culture should be dissolved by > reeducating? Mao would be so proud off you.

Isn't this the main idea behind modern jails? (Idea, not implementation)

</comment></comment></comment></comment></comment><comment><USER38> The first time I ever saw a roma it was a young lady at the checkout in front of me who was obviously just learning how to do the change of a fifty swindle. Her trainer appeared from nowhere and rescued her by interrupting and asking some dumbass question about some item he'd pulled off a shelf and then they both left

<comment><USER39> The first time you recognized one, maybe. And why are you certain she was Roma?

<comment><USER38> Pretty certain and I met a few after through my work. She was strikingly pretty in the roma way (like a very fair Indian person) and was dressed in the roma style. Our town of 20,000 people went from zero to several hundred roma at that time.

</comment></comment></comment><comment><USER40> I'm going to take the moral stance here that _even if you actually are making a factually correct statement of fact_ it is wrong to make prejudiced / racist comments. "Roma are __", "black people are __", "Mexicans are __", it looks like you're playing a racist version of mad libs to the wide-eyed people listening to your hate. And no, I don't give a damn about your personal experiences with ethnic group X, Y, or Z.

Let's keep it civil, folks.

<comment><USER41> Come again? If I am to say, "Elbonians are statistically 2000% more likely to be five foot three", I am making a racist comment?

<comment><USER40> Think of a Venn diagram, with one circle being "correct statements of fact" and another circle being "racist comments". The two circles intersect, that is all, and my claim is that "I am making a statement of fact" is not _sufficient_ to claim "I am doing nothing morally wrong".

<comment><USER42> The truth is supposed to be a perfect defense against charges of slander or libel.

<comment><USER40> Legally correct, but irrelevant. Defamation is not the only thing which is wrong, and there is also a wide gulf between "legally wrong" and "morally wrong".

I'll defend your right to make racist comments with one hand while I call you out for making them with the other.

<comment><USER42> So intellectual honesty is wrong because of the 'racist' brush? You can paint anything you want with that.

This is the anti-intellectual America that I fear. Decisions made based on PC doubletalk. Folks discredited and ignored because they don't talk the official line.

<comment><USER40> I disagree with the idea that you can paint anything as racist. Ideas can be expressed in many ways. Yes, I agree that it's a problem when people get discredited and ignored because they don't talk the party line. However, when I came into the thread it didn't look like a "party line" issue, it looked like a thread full of people sharing stories about how awful Roma are. That has nothing to do with intellectual honesty, it's just wallowing in hatred.

The thread appears to have changed since then. The early comments were garbage.

<comment><USER42> Fair. I stand corrected.</comment></comment></comment></comment></comment></comment></comment></comment>


Ask HN: Which is a better name, Atomica or VidCast? - <AUTHOR>

<comment><USER2> For what? Are you podcasts for Videos, or something Small?</comment>


Solo Entrepreneurs: Big Bucks from Tiny Computing Startups - <AUTHOR> http://www.informationweek.com/news/showArticle.jhtml?articleID=206904080

<comment><USER2> Anyone on YC working Solo?

<comment><USER3> I do. In the past I worked on making a small team for my game development company, but with time I realized I was a lot happier working on the technical details of development than on team management and all that stuff. So I slowly faded to solo :) and I changed the profile of my company a lot too: then I was focused on developing games and related stuff for companies, now I work on independent tech r&d for companies. Working like that, I produced RV tech for advertising for Intel, some 3d and computer vision stuff, and nowadays I'm working on developing a massive video broadcasting software, to list some examples.

Working solo has many advantages and disadvantages... you get a lot more freedom, for one, but you also miss having an interesting team around you at many times. Also, you get a lot more responsibility on what you develop, but at the same time you can better choose what to do with your time. And your costs are a lot lower, so in some projects you can really make a lot of money that, at the end of the day, is almost all yours. And so on, there are lots of pros and cons I could list here from my experience with it.

</comment></comment><comment><USER4> This seems to be an interesting article, but that website keeps harassing me. Anyone got all 6 (!) pages in a format that doesn't insult me?

<comment><USER5> [http://www.informationweek.com/shared/printableArticle.jhtml...](http://www.informationweek.com/shared/printableArticle.jhtml?articleID=206904080)

<comment><USER4> ok now I feel dumb... why didn't I see the print button?

</comment></comment></comment><comment><USER6> My heroes.

<comment><USER7> Mine too, although I have to admit there's something vaguely depressing about a guy who refuses to move to Colorado because he wants to stay in Tennesee.

</comment></comment><comment><USER8> My understanding is to apply for YC you need one or two strong co-founders. Remember, most VCs hire a key team and are not solely sold on the business idea

</comment><comment><USER9> fanpop seem to have done pretty well bootstrapped - hovering around the 5000 mark on alexa..

</comment><comment><USER10> ah homesite, that takes you some 10 years back!</comment>


Notes on Programming in C - Rob Pike, February 21, 1989 - <AUTHOR> http://doc.cat-v.org/bell_labs/pikestyle <comment><USER2> One thing I've changed about my style in the last few years is to almost never comment my code, but to instead write long and detailed Git commit messages explaining the how's and why of that code at the time that I write it.

That means that over time I effectively have comments for every line of code in the program, but it's associated metadata instead of being embedded inline, which means that the comments never go out of date, and their history is accurately tracked in version control.

<comment><USER3> That's sounds interesting. I'm a bit of a git newb; what git commands or tools do you use to make this convenient?

<comment><USER4> IntelliJ IDEA or any of the JetBrains IDEs based on that platform (RubyMine, WebStorm, etc.) have this built-in: right click in the gutter and choose Annotate. Mouse over a line to see the commit message for the most recent change to that line. [http://www.jetbrains.com/mps/whatsnew/screenshots/20/annotat...](http://www.jetbrains.com/mps/whatsnew/screenshots/20/annotate.png)

</comment></comment></comment><comment><USER5> Many of these are elaborated on in the more recent (1999) "The Practice of Programming." Excellent book. [http://www.amazon.com/Practice-Programming- Brian-W-Kernighan...](http://www.amazon.com/Practice-Programming-Brian-W- Kernighan/dp/020161586X)

</comment><comment><USER6> The one point that is notably less relevant today is the last section regarding include files. Gcc has a special case for a header file that is entirely wrapped in an #ifndef ([http://gcc.gnu.org/onlinedocs/cpp/Once_002dOnly- Headers.html...](http://gcc.gnu.org/onlinedocs/cpp/Once_002dOnly- Headers.html#Once_002dOnly-Headers)).

<comment><USER7> The more modern gcc handling is with "#pragma once":

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

His comments on include files are _not_ the way the world has gone. In all my years writing C, I have never seen a C/C++ header which does not include the other headers it needs in order to compile cleanly.

He states: "Simple rule: include files should never include include files."

If you can find me one C project out there which has headers with zero #includes and forces each compilation unit including the header to include all the prerequisites needed for that header I would be genuinely interested. Even all OS header files include their pre-requisites and it is considered a bug if they do not do so. A more modern 21st century rule would be:

"Simple rule: include file order does not matter. Use include guards (or #pragma once) and always include only the prerequisites needed to cleanly compile and nothing more."

<comment><USER8> Our experiences don't match. Avoiding nested includes has been a part of the rigorous and useful standards of a lot of important, mission-critical, large- scale projects, and is something I try to enforce in my own code.

There are numerous examples of projects which follow that recommendation. I'm told, for example, that the recommendation on the excellent Blender 3-D graphics system is to avoid nested includes. Other examples:

NASA: <http://sunland.gsfc.nasa.gov/info/cstyle.html>

European Molecular Biology Open Software Suite (EMBOSS) [http://emboss.sourceforge.net/developers/c-standards_new.htm...](http://emboss.sourceforge.net/developers/c-standards_new.html)

Atacama Large Millimeter Array (astronomy): [http://www.alma.nrao.edu/development/computing/docs/joint/00...](http://www.alma.nrao.edu/development/computing/docs/joint/0009/2001-02-28.pdf)

Clinical Neutron Therapy System (for radiation oncology): <http://staff.washington.edu/jon/cnts/impl.pdf>

<comment><USER9> I take your point, but I'm not sure you're really taking his. As another data point, I just did a find/xargs-grep across my "~/codebase/3p" tree, which has ~5500 .h files for projects ranging from MongoDB to Ruby and Python to OpenSSL to valgrind. Virtually all of them have nested includes. Many of them are components of mission-critical software.

He's right; nested includes are a modern C idiom.

<comment><USER8> > In all my years writing C, I have never seen a C/C++ header which does not > include the other headers it needs in order to compile cleanly.

> He's right; nested includes are a modern C idiom.

No doubt they are found a lot. The request was for counterexamples. Fashion/style vs engineering practice assertions may be passing like ships on a nighttime C here.

>...for projects ranging from MongoDB to Ruby and Python...

Python....why, even Tim Peters asserts that "Flat is better than nested"...wink...

<http://www.python.org/dev/peps/pep-0020/>

/irrelevant quote

</comment></comment></comment></comment></comment><comment><USER10> These style guidelines correspond exactly to idiomatic Go. I'm impressed how well Pike executed on his philosophy.

</comment><comment><USER11> _Pointers are sharp tools, and like any such tool, used well they can be delightfully productive, but used badly they can do great damage_

Nice physical metaphor. Pointers are ... pointy.

</comment><comment><USER12> Even though this is over 20 years old, many comments are still very valid. I especially like the section about short variable names and functions.

<comment><USER13> I can see how loop indexes (i) etc are nice to be short, but I don't see how the other stuff is valid, as opposed to a personal preference.

Why is maxval a better name than MaximumValueUntilOverflow?

The first lacks some extra information that I need to keep in mind every time I re-read that part of the code.

And while the potential of overflow might be obvious, how about:

minValueForTemperature instead of minval?

<comment><USER14> My variables are a little more verbose than the anemic style preferred by Rob Pike and used throughout K&R but, in that tradition, I also tend towards shorter, simpler variable names than something like minValueForTemperature, so maybe it would be useful to illuminate my own thinking.

Complex variable names ought to be avoided because, simply, they _hammer_ the programmer with a bunch of information every time they are used. Usually, when reading code, you're trying to wrap your head around how a procedure operates rather than the specifics of what it's operating on. Often, if you need to know more about what a variable represents, it's sufficient to refer to its declaration.

Thusly, I prefer to name my variables so that one can pick up the general idea of what they're for from the name and then I document any additional information at the variable's declaration, either using a comment or via the type system.

So, this is how I'd handle your examples:

        int maxval; /* until overflow */
        Temperature minval;

</comment></comment></comment><comment><USER15> Those notes found their way to 'The Practice of Programming' book.

I highly recommend it.

</comment><comment><USER16> Some absolutely fascinating points. However, I must admit that the portion on link pointers was, frankly, damned frightening as someone who could possibly have to come back and figure out what's really going on.

I'm reminded of Perl when I look at that link pointer code. It's succinct, easy to write, works great most of the time, and nearly impossible to go back and decode later. You simply require too much context to find the one place where you stepped beyond the array and into no-man's land.

I love pointers; I think that like other sharp tools, they have their uses. However, like other sharp tools, they require training and attention to use properly. Lots of people lose fingers to saws every year; how many brain cells have you lost to debugging pointer mistakes?

<comment><USER9> That's idiomatic C code. You're right that it's not particularly readable if you aren't a C programmer, but if you came to a job interview and couldn't grok it immediately, I'd write "facility with C: marginal" in my notes.

<comment><USER16> Missed this back closer to when you posted it - but it's less that I don't understand what's going on, and more that this code is more likely to go wrong & be harder to debug than more descriptive code.

Just the other day, I was trying to identify what was being done by someone's "idiomatic" code, and had to keep three vertical screen's worth of data up just to follow what was happening. All that code was wrong, but because they were using pointers "idiomatically", it took a long time to find their off-by- one error.

Granted, they had gone about 4 levels further with pointers than the given example in the article, but the premise is similar.</comment></comment></comment>