The Management Team - Guest Post From Joel Spolsky - <AUTHOR> http://www.avc.com/a_vc/2012/02/the-management-team-guest-post-from-joel-spolsky.html <comment><USER2> I've never been very successful communicating to my customers and bosses the difference between a "super programmer" and a "mortal programmer". It's a critical distinction that eventually must be understood by organizations that build software. So instead of trying to explain, I just email them this link:

<http://www.joelonsoftware.com/articles/HighNotes.html>

Then they finally get it.

Now I have another link to help them understand why their management style isn't working they way they think it should. Thank you, Joel.

A few more Joel links like these two in my back pocket and I won't have to spend so much time explaining much of anything anymore. I can just go back to building stuff.

<comment><USER3> Great post. Much more eloquent than Mark Suster's[1]:

 _Yes, I know it's my job as the CEO to be the coach for people and that's fine. But if everybody is looking for me to make their decisions we'll never get anything done._

And makes a nice complement to Swombat's _Making all the decisions yourself_ [2], and to Ben Horowitz _CEOs Should Tell It Like It Is_ [3].

Also the same point of _Delegate or Die_ [4]

[1] [http://www.bothsidesofthetable.com/2009/11/19/what-makes- an-...](http://www.bothsidesofthetable.com/2009/11/19/what-makes-an- entrepreneur-four-lettersjfdi/)

[2] <http://swombat.com/2011/7/13/taylor-drucker>

[3] [http://bhorowitz.com/2010/07/02/why-ceos-should-tell-it- like...](http://bhorowitz.com/2010/07/02/why-ceos-should-tell-it-like-it-is/)

[4] <http://sivers.org/delegate>

</comment></comment><comment><USER4> I agree with this post, but it is _very_ light on details. "Don't be a douche. Let your employees think." thanks for the tip...

So, to that end, my management tips:

1\. Make sure people are working on the right things. This is most important and where Joel's academia argument breaks down. The problem is that everybody in the company doesn't have a transparent view of everything in the company (past ~10 people).

To do this, you ask questions and provide information. "Why is this the most important thing?" "What about <some thing they may not know>?" Etc. ideally, you are proactively providing that information, but if your employees are always waiting for you to provide information, you are the bottleneck.

2\. Cultivate communication. Make sure the rit people are talking to each other. Make sure the environment is sipuch that people not only want to, but are incentivized to talk to each other.

3\. Be open about when you learn something new. Few people don't enjoy teaching the boss something new. Give people that opportunity.

4\. (EDIT: Forgot one of the most important) Conflict resolution. At some point, two very smart people are going to disagree. Your job isn't to pick a winner (usually), but to make sure resolution happens.

I'm sure there are others (feel free to tell me!). FWIW, I don't think I'm being original here. For details on how to do many of these things, Joel's blog is not a bad place to start (though I really don't like the lunch thing at Fog Creek ;).

<comment><USER5> For more detail, try Spolsky's three-part series on management methodology. It starts with Command & Control then goes to another, Econ 101, which he discredits similarly, followed by Identity, which he says actually works. Start here: <http://www.joelonsoftware.com/items/2006/08/07.html>

</comment></comment><comment><USER6> _I'll bet more entrepreneurs model their behavior on Captain Picard from Star Trek than any nonfiction human. [..] Turns out, it's positively de-motivating to work for a company where your job is just to shut up and take orders._

I like the post, but.. at the risk of sounding like I've thought about this for too long, _Picard's_ management style wasn't of the tough "command and control" style described here.

Picard's crew had a significant amount of autonomy and a reasonable scope to question their direct superiors (although going too far up the chain usually seemed to backfire). The buck always stopped with the Captain and he set the crew's overall mission, aims and goals (with significant input and advice from his crew) but in terms of the day to day running of the ship (and even many of the crisis situations) he was not at the center of most decisions and relied heavily on his crew to do the right thing.

All this makes me realize that as much as being a sci-fi show, TNG was particularly good at demonstrating management styles and crew relationships (with many episodes dedicated entirely to these matters or contrasting them with those of other crews and civilizations).

</comment><comment><USER7> "Command and Control probably worked great in the toothpaste factory where Charlie Bucket's father screwed the little caps on tubes."

I thought that it is totally obvious that the more intellectual and complex the task is, the less the hierarchical 'command and control' approach works. I think this is told in the first one hour in any course about management.

I once stated it here but state it again: the older I grow the less useful I find the posts of the great bloggers (Joel, pg, etc...). Their posts are usually good feel-good posts for us developers, but in their posts they overabstract and oversimplify everything (overabstraction can be also called 'architecture astronautism'), when what really matters are pretty much in the details (or at least cannot be communicated in such simple blog posts), and depend on hundreds of parameters, and I am sure they bacame successful because they have been taking care of the details in their everyday actions.

<comment><USER8> It's not obvious at all. The great mass of people believe earnestly that money or a big leader will fix all problems.

Case in point: The current trend to use standardized test scores to give teachers an incentive to make students get better grades.

Case in point: AIG gives out tens or hundreds of millions of dollars to people writing derivatives to counter mortgage bond risk, because these derivatives make the company money.

<comment><USER9> Most developers aren't lucky enough to work at software oriented companies. Their management is unlikely to consider development to be creative work and instead focus only on costs, schedules and the classic death march management style. Many freelance job boards suffer from a race to the bottom. This is an enormously serious problem in our industry.

</comment></comment></comment><comment><USER10> The Tina Fey autobiography / jokebook had an interesting comment - one of her mentors explained that the role of a (TV) Producer was to reign in / prevent creativity. The idea was you had hired amazingly creative people, and if you did not provide necessary constraints the whole would be way less than the parts. (the example was asking the props dept for a teacup. No not on a silver platter the reflection will kill the camera, no not with sugar tongs these are simple countryfolk etc etc)

Steve Jobs is just an extreme example of this role - provide a common vision, explain the constraints and edit edit edit the great ideas coming at you. (nb editing is not the same as directing, something I tend to forget I my code reviews - an editor should accept a brilliant idea and change the other work to fit it in, a director, directs...)

<comment><USER4> The question that can never be answered is: Could Jobs have accomplished more if he hadn't been such a jerk? Can you accomplish the same level of editing without demeaning people?

I think the answer is "Yes", but I'm not positive. Regardless, I'm not Jobs. My management style will never be an attempt to resurrect him. I do strive for his level of perfection, though.

<comment><USER11> Is it possible to be uncompromising without being a jerk?

Apple's products are great because Jobs simply kept saying "not good enough" until he thought it was good enough. Even though there are nicer ways to convey the same message than "this is shit", the underlying message is the same, and smart people get the idea, and I'm not sure that attempts to soften the delivery matter much in the end.

<comment><USER12> It matters. Smart people get that feedback is necessary when you're making great stuff, and that feedback is useless if it's never negative. But smart people also get what a speaker's tone means. Communicating arbitrary message X politely shows you respect the person with whom you're talking. Communicating the same message X rudely shows the opposite.

If you have to tell me something I don't want to hear, I'll feel much better afterwords if you say it nicely. That's because I'll know you respect me enough to put in the tiny bit of effort required to say it with a smile. I won't think you're a manipulative, cynical jerk who underestimates my intellect and assumes I can be won over with cheap psychological tricks. I'll think you're a decent person with good social graces. Which is something from which people in the tech world are not exempt.

BTW, I speak from experience. Every boss I've ever had has understood the importance of _how you say it_ when managing. Conversely, I've known others who have had bosses that didn't get it. Guess who was happier at work?

</comment></comment></comment></comment><comment><USER13> I use the following model:

        CEO is defining desirable outcomes, defines WHAT TO ACHIEVE
        Team members are defining HOW TO ACHIEVE

CEO is a resource to the team, providing knowledge, connections and keeping project documentation up to date

<comment><USER14> Can't disagree with that. The CEO defines strategy. Anything below that level is tactical. Many have difficulty in getting those two levels to bat for the same team - which Steven Sinofsky discusses in One Strategy.

</comment></comment><comment><USER15> Someone send this to Page.

I've said it before and I'll say it again, leaders need to make a culture and create a managament style THEIR way. Whatever works for them and their company, not attempt a copy/paste of another CEO.

Engineers can't adopt a designers management style overnight because they don't have the background to attain the respect their decisions will require.

Just like coders hate an MBA telling them to build the next facebook in 3 hours because it's "just a few pages and they all look the same anyway, how hard can it be?".

</comment><comment><USER16> What I'd like to understand is why is management professional training so oriented towards 'leadership' if you believe that facilitators and administrators are required.

Working for a large multinational tech firm, I recently saw them launch online training across all the various disciplines. Much of the management material is about leadership, whereas non-managers are considered 'individual contributors'. Doesn't this seem to run entirely counter to the philosophy espoused here?

<comment><USER17> Yes it does. That philosophy is hard on managers' egos (who wants to be an administrator rather than a leader?) and the selection for management positions in large multinational companies is often biased towards those with strong egos.

And it is the management paying for the training.

</comment></comment><comment><USER18> Excellent post on the outline of his management style, but far too short on details. How does this management style deal with inevitable conflicts between engineers? How does this style deal with pivots? Who makes hiring decisions for managers in this layout?

I _imagine_ that this could work, but this would seem to scale even worse than the traditional model; four thousand engineers, all of them "bosses", does not a productive company make.

<comment><USER19> Try telling that to Larry Page. Google believes greatly in the "hire smart people, then get out of their way" method. You might be surprised how well it works

<comment><USER4> I worked at a startup that nearly collapsed because so many incredibly smart engineers were brought together with no leadership (which is different than management). The belief that engineers will always just do the right thing is, in my experience, not true. The product came close to collapsing under its architectural weight as so many engineers tried to build an amazing cathedral. Better leadership would have ensured the engineers understood we needed to start with a strip mall.

EDIT: I want to retract my leadership isn't management. In a knowledge worker company, it absolutely should be, and if it isn't, you're doing it wrong.

<comment><USER19> Of course any good idea can be taken to an extreme, and Spolsky probably is doing that with this one. But my experience is that the majority of startups will be fine. The problem is much more rarely "The engineers are getting away with murder!" and more commonly "I told those engineers everything they were supposed to be doing with no deviations. Why aren't they listening to me?!" Most startup founders (but by no means all) end up being such control freaks that Joel's advice probably won't be dangerous.

<comment><USER4> Engineers want to do "the best thing for the product". The trick is giving them enough information to equate "what is best for the product" with "what is best for the customer". That is when a good CEO/Product Manager earns his/her money.

</comment></comment></comment></comment></comment><comment><USER20> The style of management he recommends works well for companies in the size scale of 30-100 people. I believe it breaks down after that, and, ironically, as you grow to a few hundred and into the thousands, you actually have to shift back to more of a command/control structure or you risk evolving into a bureaucratic entitlement kind of organization. You still need to know how to trust and delegate, but you (and by extension your now necessary mid-level managers) also need to be able to shut down the endless bike-shedding (which has now morphed into full-on ego flame wars) and make executive decisions to prune the tree of possibility and keep things moving along productively.

I think Google is a good example of a company that is (later than most) realizing the academic model only scales up to a certain point. They now seem to be moving towards a much more traditional Cpt Picard/Steve Jobs-run type of organization, from what I've gleaned.

</comment><comment><USER21> Great post. I'm going to show this to management because this is exactly the idea that they advocate yet they keep hearing they should be more like Steve Jobs. Not many people would want to work for a pseudo-Jobs. Problem is, there seems to be a plethora of them out in the wilds of big corporate America.

<comment><USER22> Steve Jobs was a multi-faceted person. He definitely had a difficult personality, but I've heard he was less of an asshole than he's made out to be; the problem is, when a person lives in the spotlight, all of his worst moments get air.

He also had a different management style at Pixar than at Apple. During his first stint at Apple, he was extremely young and inexperienced. Pixar was like a research department, and he was generally nice to the people working for him. When he returned to Apple, he came into a fairly nasty culture that had been created by people other than him. If you've ever seen a company with a young wolves problem, you know that sometimes the boss _has_ to be an asshole.

Also, my understanding is that he was generally very nice to the line engineers but hard on people VP-level and above-- and that at Apple, VP is a seriously high rank involving high-6 figure compensation (at least) rather than a 50th-birthday present (or in investment banking, a 30th-birthday present) as it is in most companies. I think that if you're making that kind of money, you can take serious scrutiny.

<comment><USER23> I agree. I don't think he would have managed to retain friendships and partnerships with engineers so successfully if he was that horrible to them.

</comment></comment></comment><comment><USER8> I think the university analogy is distracting from the real point. He's advocating a form of servant leadership, which is where the CEO/President/etc is perceived more like a steward than an autocrat.

If you've ever worked for someone who had a broad array of responsibility, was universally respected, displays humility, and available to help resolve problems, that's what Joel is talking about. A great professor tends to adopt this role -- which is probably where the university analogy came from.

The "catch" to this style is that you actually need to be respected, empathetic and humble. (Know-it-alls need not apply.) That usually comes with lots of experience.

<comment><USER24> I think this one of the cleverest things Spolsky has ever written, actually.

All the great managers I have had acted this way. None of the bad ones did.

In a healthy organization, you can get respect by avoiding the Dunning-Kreuger problem, giving people credit in public, and discussing problems in private. I don't know if you can learn empathy, but you can learn to pause before making decisions and thinking about what everyone wants out of a given situation.

Humility probably isn't necessary, but hubris has been a killer since before Golden Age Greece.

<comment><USER8> It was a great post, but I noticed that many folks here weren't getting it. It sounds cliche, but I knew alot about everything when I was an obnoxious 21 year old. Now as a grizzled 33 year old, I have a much better appreciation of what I don't know -- which I find empowering.

Perhaps humility (or the perception of it) is a "symptom" of being more secure in other areas.

<comment><USER25> A "grizzled 33 year old". That's _so_ cute ;)

Knowing what you don't know is empowering, for a while. And then you realize that you're mortal after all, and will never even know enough about all the things you're deeply interested in, let alone those many things that sounded interesting, but that you never explored.

It teaches you a lot of humility, but it doesn't feel that empowering. At least to me.

</comment></comment></comment></comment><comment><USER26> In my views, it's mostly about balance rather than picking between divergent choices. Who says one can't be a firm leader also capable of soliciting and respecting the opinions of others?

The NY Giants won the SuperBowl as you note, with a famously dictatorial top- down coach [Tom Coughlin]; the NY Jets didn't even make the playoffs with a very horizontal come-as-you-are coach [Rex Ryan].

Interestingly, Coughlin didn't win any SuperBowls - he now has two - until he learned to loosen up. And by all appearances, the NY Jets won't win one until Ryan learn to tighten up.

Apologies for all the football references:) But I suspect Mr. Spolsky would understand very well.

</comment><comment><USER27> I wonder why the CTO sits above the VP Engineering in Joel's picture? Is this generic, or specific to Jeff as the SE CTO, perhaps because he wanted to code, rather than manage?

</comment><comment><USER28> Did not like this post. Like many others over here, I also have read all the great posts by him over the years, on joelonsoftware. But, honestly, this one just does not cut it for me.

He is over simplifying everything. And his extreme view ends demoting the "top" of an Organization's chart. Heck I won't want to start a company to just _move furniture around_.

And you can not have a binary classification for a CEO - Steve Jobs or not. In reality there will be lot of people who are perhaps very skillful, experienced and work very hard at the top. So their skill level might be closer to _Steve Jobs_ than your average Joe. So you have to treat it like a spectra.

He makes a very fair comparison of developers and similar in a software company with that of a toothpaste company. But his fairness goes for a toss, when he compares the people at the "top". IMO just _administrators_ should have no place being in a software product company in the first place.

He makes a good point, that its best for the organization that if all the brains are used rather than just one brain. But he goes to the other extreme to make this one point.

 _Experience_ does have a role after all. A fresh bright programmer might want to code everything up in the latest shiniest thing, if you _know_ that its a wrong decision. Then is it not your duty to explain him and convince him.

In such a situation, who has the luxury of acting like a university Chair, and setup a committee to take the right decision? :-)

So the comparison with university is wrong. I see another comment in this thread referring to 'architecture astronaut' in the context of this post. IMO, this is more of 'architecture polish' ... just skims the surface :-)

</comment><comment><USER29> What's needed isn't more or better management and communication.

But to design a system whose secret lies in what's unstated or not communicated to one another (in an explicit sense)—in order to exploit lower‐level initiative yet realize higher‐level intent, thereby diminish friction.

If this is the state of the art in tech companies, I'm very blessed to have a real durable competitive advantage.

</comment><comment><USER30> It's always going to be a pyramid. But you have to value and trust those whose daily decisions have the biggest impact on the customer's experience. Whether that's in product design, tech support, customer service or sales. It's de- motivating when you're working for managers who don't understand what that means. Joel is right but he's a bit harsh on Steve Jobs. I'm sure Steve Jobs was a pain in the *ss to work for but Steve did value designers more than any other company and he did value the people at the Genius bar more than any other retail company ever did. And I think that's exactly what Joel's article is about.

</comment><comment><USER31> Executive summary:

A manager's job is to make the coffee so their secretary can prioritize their inbox.

</comment><comment><USER32> Didn't everybody already know this? I'm not particularly in Silicon Valley, but I really thought most startups work the way Joel describes, instead of with the fake Steve Jobses. Was my idea of the world too good to be true?

</comment><comment><USER33> I don't agree with the hole post, but the "administration layer" paradigm Joel has been proposing is kind of interesiting. In a way, it's the extreme opposite of the norm, and that's good, it challenges the way people normally think about "managment". It's humanistic by design. The problem is that, as not everybody is Jobs, not everybody is Spolsky.

This shouldn't be read as a sctrict methodology or recipe to copy. In programming, as Joel wrote, there are cheffs and there are McDonal's "burger flippers". That analogy also applies to managment.

</comment><comment><USER34> > Seductively, it even works OK for a three person company.

 _Anyone_ who thinks command and control is a good idea with 2 other people has got bigger fish to fry than finer points of effective management.

</comment><comment><USER35> Based on this, one would think that the "support/administrative/service corps" would receive much less compensation than the "talented individuals" who do all the real work. A lot of organizations preach or follow this philosophy, but I have yet to find one that puts its money where its mouth is and distributes compensation accordingly.

</comment><comment><USER36> I thought the Latin phrase was "post hoc ergo propter hoc". Is "cum hoc..." also used?

</comment><comment><USER22> _The saddest thing about the Steve Jobs hagiography is all the young "incubator twerps" strutting around Mountain View deliberately cultivating their worst personality traits because they imagine that's what made Steve Jobs a design genius. Cum hoc ergo propter hoc, young twerp._

I loved the swipe at the fake Steve Jobs's out there. I worked for one, although he wasn't young and it wasn't in Mountain View. He would cite Steve Jobs to defend defective practices. It was ridiculous.

It's a great essay, and I like Spolsky's management philosophy a lot, but I don't entirely agree. A business isn't academia. Businesses have to ship products and please their customers, and leaving these tasks to "the crowd" doesn't work. "The crowd", when we're talking about software engineers, produces brilliant chaos. That's great sometimes, and it can produce excellent products, but it's not good when you need focus or to meet a ship date. Sometimes a CEO or CTO needs to decide what gets worked on, how people do it, and to motivate people to make sure it happens.

Likewise, sometimes a leader needs to step in and resolve bike-shedding conflicts among two equally smart, strongly opinionated engineers who disagree on a core question, and to look for a compromise. "Management fiat" shouldn't be used lightly, but it's not without purpose.

That said, I think Spolsky deserves a lot of props for pointing out that the managerial relationship is two-sided. A lot of companies and bosses don't figure this out until they face uncontrollable talent bleed, and even then there's a lot of self-deception (I've known some ineffective managers to become bitter about their best reports "abandoning" them, as if it were some ethical lapse, but never to own up to their role).

<comment><USER37> "Likewise, sometimes a leader needs to step in and resolve bike-shedding conflicts among two equally smart, strongly opinionated engineers who disagree on a core question, and to look for a compromise."

The most effective people I worked for didn't try to dictate the solution to the conflict. They were effective at moving the disagreeing engineers past their conflict. Dictating a solution was always the last resort if the engineers had just "dug in their heals" instead of discussing rationally.

<comment><USER38> > The most effective people that I worked for didn't try to dictate the > solution to the conflict

About China's presumptive next leader, Xi Jinping

His subtle and pragmatic style was seen in the way he handled a landmark power project teetering on the edge of failure in 2002, when he was governor of Fujian, a coastal province. The American company Bechtel and other foreign investors had poured in nearly $700 million. But the investors became mired in a dispute with planning officials.

After ducking foreign executives' repeated requests for a meeting, Mr. Xi agreed to chat one night in the governor's compound with an American business consultant on the project whose father had befriended Mr. Xi's father in the 1940s.

Mr. Xi explained that he could not interfere in a dispute involving other powerful officials. But he showed that he knew the project intimately and supported it, promising to meet the investors "after the two sides have reached an agreement." That spurred a compromise that allowed the power plant to begin operating.

"I thought, 'This person is a brilliant politician,' " said the consultant, Sidney Rittenberg Jr.

> <http://www.nytimes.com/2011/01/24/world/asia/24leader.html></comment></comment></comment>


Hollywood's Most Thrilling Scenes Are Now Orchestrated Thousands of Miles Away - <AUTHOR> https://www.nytimes.com/2017/05/04/magazine/why-hollywoods-most-thrilling-scenes-are-now-orchestrated-thousands-of-miles-away.html?smid=pl-share&_r=2 <comment><AUTHOR> I've worked in the VFX industry and I find the subsidy situation fascinating. Canada and England have provided large subsidies to movie studios on visual effects work in a (successful) attempt to create visual effects industries of their own. Visual effects production is technically very complex and the artists who work in that industry often have years of training, so it's a bit disturbing to see that an entire industry that was created in the US can be uprooted pretty quickly simply through a government subsidy.

I'm actually surprised Canada hasn't tried this strategy with tech. One other interesting note about this situation is that the WTO (World Trade Organization) has rules that appear to be violated by these subsidies, but it seems doubtful that a case will ever be brought forward because VFX workers aren't unionized/organized and powerful movie studios have a huge financial interest in keeping these subsidies going.</comment>


How L1 and L2 CPU caches work, and why they're an essential part of modern chips - <AUTHOR> http://www.extremetech.com/extreme/188776-how-l1-and-l2-cpu-caches-work-and-why-theyre-an-essential-part-of-modern-chips <comment><USER2> In the late 70s/early-to-mid 80s memory was actually _faster_ than the CPU, and this is partly what motivated the RISC philosophy - at the time, instruction decoding was the main bottleneck and there was plenty of memory bandwidth available so it was a good idea to design CPUs to make better use of that. Now that it's the exact opposite, and we have multilevel caches, I wonder how different CPUs would be today if the engineers back then had realised that their surplus of memory performance would be very short-lived and cores would become faster while latencies to access memory continue to increase, and designed for this long term situation.

<comment><USER3> Does memory really bottleneck instruction throughput though? I've never ever seen code that stalled on an instruction fetch.

CPUs generally hide latency by auto-prefetching the instruction stream into cache, and memory _bandwidth_ has been keeping up just fine with CPU speed. Hence memory latency rarely hinders instruction throughput, unless your code jumps around unpredictably every few instructions (most doesn't; the only common class of program I can think of which does are emulators/interpreters).

Probably the only differences in ISA design/implementation between this universe and one where memory latency tracked CPU speed would be that (a) instructions would need not be prefetched into cache (possibly there'd be no cache), and (b) we'd still have wacky instructions like the TMS9900's X instruction, which executes the instruction at a given memory address. [1]

[1] [http://en.wikipedia.org/wiki/Texas_Instruments_TMS9900#Instr...](http://en.wikipedia.org/wiki/Texas_Instruments_TMS9900#Instruction_set_and_addressing)

<comment><USER4> You totally can hide latency with auto-prefetching. But there are a few problems.

\- This depends on correct branch prediction, otherwise you could easily wind up having fetched the wrong fork

\- L2 latency is, what, 12 cyles? L3 is 28? (Sandy Bridge). To completely hide this latency, we would need the prefetcher to run 28 cycles ahead. Considering caches work in _cachelines_ and not _instructions_ , this means we have to run potentially hundreds of instructions ahead of execution, without mispredicting one branch...

Whether your code is going to bottleneck all depends on size and code patterns. If your software fits in the L1 icache, you will only miss when context-switching. If your software is 100MB and does not exhibit good code locality, you might be stalling all over the place.

<comment><USER5> Is this code locality what makes functional style programming perform well?

<comment><USER6> No. There are only a few properties of functional programming that help performance, and they are mostly spent compensating for the overhead typically imposed by high-level languages:

* Easier parallelisation (although compiler auto-parallelisation has turned out to not work well in practice).

* Compacting garbage collectors can mimimise fragmentation, and thus improve locality. This is not specific to functional languages, though, but a general benefit of automatic memory management.

* For pure languages, you may be able to implement generational garbage collectors slightly more efficiently, as no object of an older generation will have references to objects in a young generation. This is a very fragile property though - even laziness breaks it - and I'm not sure anyone has tried to use it in practice.

* Purity means that the compiler has to be less careful about optimisations and can make more assumptions about the code. This is part of what makes automatic (or semi-automatic) loop fusion practical in functional languages.

In general, I would not say that functional-style languages "perform well". They perform "well enough", but naive performance is not the reason to pick a functional language over an imperative one.

<comment><USER7> > For pure languages, you may be able to implement generational garbage > collectors slightly more efficiently, as no object of an older generation > will have references to objects in a young generation. This is a very > fragile property though - even laziness breaks it - and I'm not sure anyone > has tried to use it in practice.

That's how it works in Haskell, despite the laziness: [https://www.haskell.org/haskellwiki/GHC/Memory_Management](https://www.haskell.org/haskellwiki/GHC/Memory_Management)

<comment><USER6> Huh - how can that work? Take some partially evaluated object 'F <thunk>', where F is a data constructor. This object is old and thus stored in the oldest generation. When we force the thunk, we have to update the reference in the object to point to the resulting value - which, as it is newly allocated, should be in the nursery. Is the trick simply to allocate in whichever generation our referencing pointer belongs? As I see it, the basic problem is that lazy evaluation requires mutation at the heap-level.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Relevant article by Francesc Alted, creator of PyTables: "Why Modern CPUs Are Starving And What Can Be Done About It". [http://www.pytables.org/docs/CISE-12-2-ScientificPro.pdf](http://www.pytables.org/docs/CISE-12-2-ScientificPro.pdf)

</comment><comment><USER9> Isn't there any C/C++ tutorial on how to avoid cache misses ?

I already read the classical argument of having data oriented designs and to avoid linked lists, but I've never really heard of anything concrete on performance in programming.

All I hear is "profile profile profile". I guess most of the time it will point out a place where my code is slow, but if I find one, how do I solve it ?

For example, can I create some simple bit of code that do a cache miss at will ? Any example of such code ? How do I detect a cache miss ?

<comment><USER10> Cache misses are independent of language; however C++ gives you a lot of control over where items are placed in memory.

To create a cache miss in one processor all you need to force the processor to look at M different memory addresses that map to the same cache location, where M is higher than the N-way associativity for your processor. The specifics of this differ for each processor, but as an example, Intel Sandy Bridge CPUs have 8-way associativity, so if you fetch 9 addresses that are 4096 bytes apart you will cause a cache miss.

Lots of small tips and links if you Google, e.g.

[http://stackoverflow.com/questions/8744088/what-is-the- best-...](http://stackoverflow.com/questions/8744088/what-is-the-best-way-to- detect-cpu-cache-misses-when-running-an-algorithm)

[http://stackoverflow.com/questions/3359524/detecting- cache-m...](http://stackoverflow.com/questions/3359524/detecting-cache-misses- and-hits-pragmatically-in-linux)

The full detail is in books like [http://www.intel.co.uk/content/www/uk/en/architecture-and- te...](http://www.intel.co.uk/content/www/uk/en/architecture-and- technology/64-ia-32-architectures-optimization-manual.html)

<comment><USER10> Another interesting case: suppose you have a contiguous array of objects that are 48 bytes big, and your cache line is 64 bytes. Then every second object will straddle two cache lines. For random access to any one such object, padding them out to 64 bytes each will run faster on average, as it will access main memory only once and evict fewer cache lines. But you can only fit 3/4 as many objects in your cache now, so if you need to access a lot of them then your program will run slower.

So, "profile, profile, profile", but also understand factors like this that pull in different directions in different scenarios.

</comment></comment></comment><comment><USER5> ARM is using L3 cache as a DMA-like interconnect, on the SoC side of things.

<comment><USER11> I'm not sure about ARMv8 but in ARMv7 SoCs the ARM Subsystem does not include L3. Plus each L1 is tied to each core.

<comment><USER5> I believe this is a relevant source: [http://www.arm.com/products/system- ip/interconnect/corelink-...](http://www.arm.com/products/system- ip/interconnect/corelink-ccn-504-cache-coherent-network.php)

The L3 cache is 'integrated', which I presume means it's different names for the same thing.

<comment><USER11> Ah! Thanks for sharing. It is for ARMv8 which I really need to read up on.

</comment></comment></comment></comment><comment><USER12> This is probably a simple question, but it may not be obvious to others as well: How effective are caches on a system that is running multiple different processes at one time, much less hundreds? Is each working set that a process uses at any certain time small enough to fit in the cache along with the others?

Looking back at caches that used to be 4k or 64k (external) and are now 256k and measured in megabytes (external), I suppose that could be the case.

<comment><USER13> The number of threads a CPU can run at once is equal to the number of cores (we'll ignore hyperthreading for the sake of simplicity), and the number of cores is equal to the number of (L1) caches.

If you're referring to kernel-level multitasking, then these processes don't really run concurrently from the CPUs perspective; in fact, they're switching interval is quite long (relative to the processor speed).

However, the cost of bringing in a thread's data into the cache once it's been scheduled by the kernel is not negligible at all, and is part of the significant total task-switching cost.

</comment></comment><comment><USER14> All that complexity (and space) to handle the cache, why not simply add more cache, lots more cache, and don't use RAM at all?

<comment><USER15> Cost. More cache means bigger die size and lower yield. Also once the area of the cache gets too big, the latency increases too much. That's why the P3 moved the L2 cache back on the die while it was in a separate package on the P2...

<comment><USER16> Yes. It's important to realize that at current clock speeds, much of the latency is simply the direct result of the finite speed of light. You simply can't fit gigabytes of memory in a location that's physically close enough to the processor.

<comment><USER17> Hence the location of memory slots always being physically parallel to the CPU socket, squiggles in the traces in the innermost lines from memory socket to CPU (to equal the distance of the longer traces along the edges of the socket to the CPU so timings remain in sync), and why die shrinks are more important for performance than scaling out... If a chip is too physically big, the speed of light can limit its performance before other inefficiencies will.

Really fascinating and reinforces how no matter how one can imagine how much "faster" computers will get in the future, there is still that speed limit of information.</comment></comment></comment></comment>


How Elon Musk Built His Empire – Infographic - <AUTHOR> http://www.visualcapitalist.com/how-elon-musk-built-his-empire/ <comment><USER2> > shoveling dirt in a boiler room

> $18 an hour

born with a silver spoon in yer mouth, eh?

<comment><USER3> That seems like a really high wage for unskilled manual labor in 1989.

Of course I was 5 at the time and don't really know. Anyone have a good sense about this?</comment></comment>


Debian developer prompted to revisit FreeBSD after 20 years - <AUTHOR> http://changelog.complete.org/archives/9317-has-linux-lost-its-way-comments-prompt-a-debian-developer-to-revisit-freebsd-after-20-years <comment><USER2> That's a good overall article - I've been switching back and forth between FreeBSD and Debian for several years now, and I never spend more than a couple of month without using one of them.

The one thing that surprised me was his take on FreeBSD's package management system, pkg. PKG is relatively new, having been released in late summer 2012. Prior to that, FreeBSD relied on the ports collection, which was (is) a vast tree of Makefile's allowing you to create custom builds of virtually any software imaginable.

While pkg is still raw on the edges, I VASTLY prefer it to Debian's hodgepodge of package management tools that all do 90% of the other, though none of them do it cleanly and none of them have straightforward interfaces. Am I using dpkg here? What about aptitude? Or should I just roll w/ apt-get? All of these tools combine the ease of use of git with the flexibility of a Maven build. If you know how to use to descend deep into the depths of git or Maven, this isn't an issue ( and for the author, it certainly is not ). Yet there are numerous simple tasks ( like say, searching for a package remotely when you aren't sure the exact name ) which still require hitting up google and settling in for a Click-Your-Way-To-Adventure session.

PKG, in contrast, is both simplistic and flexible ( it reminds me of a industrial grade version of Brew in some sense ). It's a tool that I find myself integrating into my workflow beyond simple installs / updates, particularly it's seamless integration with jails. Configuration of remote repositories is vastly simplified as well.

PKG is not perfect by an means - it definitely has worts that need to be taken care of. I'm also sure that PKG probably feels a tad inadequte to some hard core sys admins - pkg has the look and feel of a tool designed by a programmer looking to handle normal cases than a tool designed to provide a sys admin with an atom bomb if necessary. Yet the system is still relatively new and as the bugs continue to get ironed out it's a reminder to me of why I love FreeBSD in a lot of ways - the abstraction point is flawless and it gets out of my way.

<comment><USER3> Do you know of a non-broken way to build ports with many dependencies? This has always been my biggest annoyance and one of the things that constantly made me pick the _cough_ other BSD. Whenever something that I need isn't in the package set, all hell breaks loose: most ports seem to have most options turned on by default (generating a lot of dependencies) and there seems to be no easy way to select configuration options _prior_ to starting the whole build process -- so I end up having to sit for the next two hours, pampering the build process and tuning (actually, mostly disabling) options every time it moves on to the next port. Needless to say, this isn't fun, especially since there's no easy way to tell what dependencies an option is going to pull (I remember being able to retrieve that information through a script I cobbled up but...).

I could probably script it to just go ahead with the default dependencies, but that gives terrible results (I try to install this little console tool and now it's pulling gnome-something-something because the console tool can be integrated with ImageMagick and that's compiled with support for this-weird- format which is provided by this-weird-lib which is part of the Gnome project and now I'm slowly compiling half the packages in Gnome even though _I don 't use a single program from the Gnome project_).

<comment><USER4> Add OPTIONS_UNSET=gnome to /etc/make.conf, plus whatever other options you want excluded system-wide. Ditto OPTIONS_SET. You can override for specific ports with ${PORTNAME}_SET/_UNSET too.

<comment><USER3> Ha! Yes, this would make it a lot easier, since I often end up disabling the same things anyway. Thank you!

</comment></comment></comment></comment><comment><USER5> The article makes some good points, and I'm glad it didn't just rail on one single part/component since linux distrobutions have so much variety. ZFS is really a killer FS, and unfortunately Linux just doesn't have a native answer just yet (although BtrFS does have some promising parts).

There's a lot of people either threatening to switch or are switching to one of the BSD's as a result of being dissatisfied with the systemd debate outcome -- apparently not realizing FreeBSD (and others) are in the early stages of working on their own systemd/launchd-like init system. Everyone seems to realize the need for a more modern init system...

<comment> vezzy-fnord FreeBSD has been in the early stages of working on a launchd port for 10 years now. It seems like progress with openlaunchd is going well, but there are certain things related to Mach IPC that need to be ported to the upstream FreeBSD kernel to get it working. I do recall some old version of launchd entitled launchd_xml was ported to pfSense, but it's one that puts the XML parser into PID1, so it's not desirable.

IMHO, I wouldn't count on any major init changes in FreeBSD any time soon. It's been protracted enough already, and Jordan Hubbard giving a pep talk doesn't mean all that much. I could very well be mistaken.

The differences in scope between launchd and systemd are pretty big, too.

<comment><USER6> > FreeBSD has been in the early stages of working on a launchd port for 10 > years now.

There were several half-serious individual efforts, but I don't think the community / foundation were pursuing it seriously until quite recently. Kip Macy has been working hard to get it in as an init replacement recently.

> It seems like progress with openlaunchd is going well, but there are certain > things related to Mach IPC that need to be ported to the upstream FreeBSD > kernel to get it working.

The mach stuff has been ported (recently), again by Kip Macy.

> I do recall some old version of launchd entitled launchd_xml was ported to > pfSense, but it's one that puts the XML parser into PID1, so it's not > desirable.

Right. I think the current plan is that the parsing is done in another process and then IPC'd to launchd via Mach. Or the plist stuff could be replaced with a 'libucl' parser that is safer in init? I'm fuzzy on these particular detail, sorry.

> IMHO, I wouldn't count on any major init changes in FreeBSD any time soon. > It's been protracted enough already, and Jordan Hubbard giving a pep talk > doesn't mean all that much. I could very well be mistaken.

It's going to happen soon. :-)

<comment><USER7> >> FreeBSD has been in the early stages of working on a launchd port for 10 years now.

> There were several half-serious individual efforts, but I don't think the > community / foundation were pursuing it seriously until quite recently. Kip > Macy has been working hard to get it in as an init replacement recently.

This is because iXsystems (Jordan Hubbard) hired Kip to implement it for FreeNAS (and, presumably PC-BSD), not because the FreeBSD community thinks it needs a new init system.

Jordan also has plans to bring other large pieces from Apple to FreeBSD.

<comment><USER6> > This is because iXsystems (Jordan Hubbard) hired Kip to implement it for > FreeNAS (and, presumably PC-BSD),

I believe EMC Isilon has also sponsored the work.

> not because the FreeBSD community thinks it needs a new init system.

Right. Kip is working on it because someone hired him too. But practically, this is how large-scale efforts get done. Some FreeBSD-using corporation hires / builds out a larger project in a way that is acceptable to the community and it is incorporated into base.

I do think the community has come to more or less that consensus at this point, though. The camp that is fine with /etc/rc hasn't started raising loud complaints about the idea incorporating a backwards-compatible launchd to replace rc.

<comment><USER8> And even now launchd is a more restrained projects than systemd.

</comment></comment></comment></comment></comment></comment><comment> vezzy-fnord _Apparently this is because FreeBSD has nothing like Linux's inotify._

It has kqueue, which is a generic event mechanism that can take the place of inotify, signalfd, eventfd, timerfd and others on Linux systems. It has a bit of a learning curve, but it's actually neat.

Concerning platform support, that has always been NetBSD's shining ground.

<comment><USER9> This is true but not entirely accurate. The use case that he's mentioning, an application like Dropbox, that relies on a good file system watcher wouldn't be totally feasible with kqueue, since you're pretty much limited by the number of open file descriptors the OS allows to handle, if i don't remember wrong this number in FreeBSD is below 10000 by default, so it's limited for that use case. And that's also why OS X have FSEvents, because kqueue falls short for some use cases. I've worked on a multi-platform file system watcher ( [https://bitbucket.org/SpartanJ/efsw](https://bitbucket.org/SpartanJ/efsw) ), and i must say that the kqueue implementation was by far the worst to work at. On the other side inotify is super simple and just works ( but sadly it's not recursive like FSEvents and IO Completion Ports ).

<comment><USER6> > pretty much limited by the number of open file descriptors the OS allows to > handle, if i don't remember wrong this number in FreeBSD is below 10000 by > default

And on Linux inotify is bound by /proc/sys/fs/inotify/max_user_watches. Six of one, half dozen the other. FreeBSD file descriptor limit is arbitrary and can be raised to INT_MAX (2 billion). That should be plenty.

> i must say that the kqueue implementation was by far the worst to work at.

I agree that the kqueue API is a pain to work with. I haven't tried to do a recursive file monitoring (dropbox-alike) application with it.

It seems easy to implement inotify as a thin wrapper around kqueue. Maybe something to do for the FreeBSD linuxulator layer...

<comment><USER9> > And on Linux inotify is bound by /proc/sys/fs/inotify/max_user_watches. Six > of one, half dozen the other. FreeBSD file descriptor limit is arbitrary and > can be raised to INT_MAX (2 billion). That should be plenty.

Yes, on Linux you're limited to max_user_watches, and you can edit that value, just like you say with kqueue... but you need root access, so for end user applications this is not really a solution. With inotify i use one watch per- folder, with kqueue you need to do it by file ( of course you can watch the folder changes, but you need to keep a copy of the file states in that folder, and then re-stat that files to find out what file was changed, not even close to an ideal solution ). So for example in my use case with inotify i can watch 65536 folders, and with kqueue less than 10000 files ( that could be a single folder! ).

Edit: It seems that FreeBSD default a much bigger number for FDs ( [https://news.ycombinator.com/item?id=9063893](https://news.ycombinator.com/item?id=9063893) ), so that should suffice a lot of use cases, that's good news for me!

<comment><USER6> > With inotify i use one watch per-folder, with kqueue you need to do it by > file ( of course you can watch the folder changes, but you need to keep a > copy of the file states in that folder, and then re-stat that files to find > out what file was changed, not even close to an ideal solution ). So for > example in my use case with inotify i can watch 65536 folders, and with > kqueue less than 10000 files ( that could be a single folder! ).

Ah, I looked at inotify API briefly and did not notice that directory watches return file changes. That does make it easier to use than kevent vnode watches. Mea culpa.

</comment></comment></comment></comment></comment><comment><USER10> Those who switch operating systems out of ideological disillusionment are liable to end up as disillusioned again as those who switch religions out of religious disillusionment. You may think the new one is more pure, but it's really just more novel to you. The old timers have been around for their own iterations of in-fighting and may be happy to see fresh blood but probably won't be happy to see rehashing of hardened partisan battles.

Linux hasn't lost its way, it has evolved over the past 20+ years as UNIX has evolved over the past 40+ years. So have the BSDs--all of them.

</comment><comment><USER11>
        but there is no way with FreeBSD, like there is with
        Debian, to say "never even show me packages that aren't
        DFSG-free."

I would be very surprised to discover non-free software in FreeBSD's binary package repository. However, if this is a concern, one needs to set LICENSES_REJECTED in /etc/make.conf, at which point FreeBSD Ports will not build anything with a license that matches. If a company's concerned about the licenses of the binary packages provided by FreeBSD, it could simply set up its own internal binary package repository using poudriere, and use poudriere to filter out software with the unwanted licenses.

See /usr/ports/Mk/bsd.licenses.mk ([https://raw.githubusercontent.com/freebsd/freebsd- ports/mast...](https://raw.githubusercontent.com/freebsd/freebsd- ports/master/Mk/bsd.licenses.mk)) for the gory details.

<comment><USER12> A lot of non-Free software also disallows redistribution, so it's not permissible to put it in the binary repository. It's possible that free but not Free (e.g., zero-cost binary-only software) software could be included in the repository.

pkg metadata does include license information -- see [https://github.com/freebsd/pkg/issues/20](https://github.com/freebsd/pkg/issues/20), but I am not sure of plans to provide user-facing control over acceptable licenses at the moment. It's a good idea though and I'll see if we can make it happen.

</comment></comment><comment><USER13> "GEOM, however, supports only RAID0, RAID1, and RAID3. It does not support RAID5 or RAID6 in software RAID configurations!"

Looks like the author is still learning FreeBSD and hasn't read all relevant docs yet. 'man 8 gvinum' clearly says that raid5 _is_ supported:

"To create a raid5 array on disks /dev/ada1 /dev/ada2 and /dev/ada3, with stripesize 493k you can use the raid5 command: gvinum raid5 -s 493k /dev/ada1 /dev/ada2 /dev/ada3"

I'd take this article with a big grain of salt.

<comment><USER14> RAID5 is obsolete. In RAID5, if a disk breaks in an array and is replaced, the system has to read all of the remaining disks to rebuild the array. If a _single byte_ is unreadable on any of those remaining disks, your array can't be rebuilt and you have lost your data. With today's disk sizes, the chance of this happening is larger than is acceptable.

The interim solution is RAID6, which will work for some years to come.

<comment><USER15> Not true with mdadm. Yes, your unreadable single byte will translate into a corrupted file somewhere, but I've recovered plenty of mdadm RAID5 and RAID6 arrays that had lost one or both extra drives and suffered from UREs on the remaining disks. Love good software RAID!

<comment><USER14> I agree about software RAID – I use it exclusively myself. Also, nice to know that an array can be recovered, even though it would seem to be a reasonable thing to assume, it is good to know that it is possible.

But my point was that:

1\. You still have some lost data.

2\. An RAID5 array which breaks in this way must be _manually_ rebuilt, possibly from a rescue boot media. Your server will no longer even _boot up_ by itself.

</comment></comment></comment></comment><comment><USER16> "There are some other issues, too: FreeBSD ports make no distinction between development and runtime files like Debian's packages do. So, just by virtue of wanting to run a graphical desktop, you get all of the static libraries, include files, build scripts, etc for XOrg installed."

That's definitely a feature, not a bug! I hate how Linux distributions require you to install a thousand " _-dev " or "_-devel" packages. All headers should always be present on a Unix system!

Also, you don't need HAL/PolicyKit/dbus on FreeBSD. xorg-server recently switched the default configuration option from HAL to devd. And you can compile things like Firefox WITHOUT="DBUS" :-)

<comment><USER17> But not everyone that uses Linux compile X libs or Firefox themselves (a very tiny fraction do). Why does it make sense to have include headers and source?

<comment><USER18> Disk space is cheap.

If it really is a problem for you then work around it. But for most of us installing dev files makes sense if we ever need to compile something against those .h files.

<comment><USER19> Even if it is, bandwidth isn't particularly cheap.

<comment><USER20> I think with compression most headers are probably tiny compared to even the ads on a large widely read news site.

</comment></comment></comment></comment></comment><comment><USER21> The article seems kind of odd on some of its logic:

>Its storage subsystem also has some surprising misses. Its rough version of LVM, LUKS, and md-raid is called GEOM. GEOM, however, supports only RAID0, RAID1, and RAID3. It does not support RAID5 or RAID6 in software RAID configurations!

Well, actually, it does support raid5, but also... With ZFS being a truly first class citizen, why not just use raid-z or zfs encryption instead of raid5 or luks?

>ZFS also does not support some common operations, like adding a single disk to an existing RAID5 group (which is possible with md-raid and many other implementations.) This is a ZFS limitation on all platforms.

No block pointer rewrite for ZFS, so no expanding of existing vdevs by adding disks, but you can still add more vdevs to increase the total pool size. You generally want specific numbers of disks based on raidz level for performance reasons anyway.

(In general) RAID isn't really a "consumer" thing, outside of maybe a basic home NAS type environment. If you're doing this for a server environment where RAID sees the majority of it's use, I don't think it's too onerous to have to add more vdevs instead of a single disk.

> Apparently this is because FreeBSD has nothing like Linux's inotify.

Nothing like? kqueue/kevent. It's not 'exactly' like inotify, but it's definitely something like it. (It's also something like epoll, and others... kqueue is fairly big and replaces multiple linux equivalents)

I find it odd that the network stack isn't mentioned either. It's still significantly more performant than the linux network stack, and FreeBSD is pulling away even farther in this arena.

Things like [https://wiki.freebsd.org/NetworkRSS](https://wiki.freebsd.org/NetworkRSS) , netmap being a first class citizen, etc (Netflix blogs on why they chose FreeBSD for their CDN devices are fascinating) are all pretty damn sweet.

Kind of nitpicky, I guess, especially since the author isn't claiming to be intimately familiar with the state of every part of modern FreeBSD

</comment><comment><USER22> I think that a lot of this depends on whether you want to run a desktop or server - a lot of comparisons focus on how Linux/FreeBSD compare as a user workstation. To be honest I wouldn't recommend anyone use FreeBSD as a desktop/laptop OS but if you want a 'production' server there is a lot to be said for simplicity and avoiding too many 'clever' features.

</comment><comment><USER23> If you happen to try FreeBSD don't let that be your only impression of BSD based systems. Try OpenBSD too, if your hardware is supported and all the software you use is available you won't be disappointed. OpenBSD more or less just works provided the previous conditions are true.

</comment><comment><USER24> It's a shame FreeBSD was the chosen BSD to do this comparison. It always seemed to me that FreeBSD felt almost-like-linux.

It also seems to me that _most_ of the issues mentioned would be non-issues for OpenBSD (though it does not support ZFS, which the op wants).

</comment><comment><USER25> I saw some @HNstatus tweet about ZFS issue that shows that it runs on FreeBSD. Are they running the storage layer on FreeBSD only, or everything?

</comment><comment><USER26> I too started out on FreeBSD. Another feature that I don't think you mentioned, and don't know whether it's supported with ZFS was _union mounts_ , where you can mount one filesystem atop another (as many times as you'd like) and thereby get yourself a COW filesystem. I think there was a method to run FreeBSD from a CD-ROM using this?

</comment><comment><USER27> Package management was my main problem, all I wanted to do was keep my home server up to date, but it became a nightmare. Moved to debian/kfreebsd (where a lot of stuff just didn't work) and then debian/linux when ZOL became stable.

</comment><comment><USER28> Yeah. I was an ardent FreeBSD fan for years - it pleased me in all the ways Linux didn't - but then I tried Ubuntu 5.04, discovered Synaptic and went "HOLY CRAP THIS IS SO OBVIOUSLY THE RIGHT WAY TO DO THIS."

</comment><comment><USER29> > and solid memory management

What does he mean by this?

<comment><USER30> You'll often find FreeBSD using less memory to run the same software stack. I also tend to see more intelligent use of swap. I can't comment on the comparison of the filesystem cache performance.

</comment></comment><comment><USER31> He seems to think in his comparison Debian comes on top.

However, the points which he thinks are where Debian is stronger illustrate precisely where Linux has lost its way. Laptop support is lacking -- assuming you care about laptops, and care about suspend working out of the box. Guess what, suspend didn't work out of the box under Debian, either.

Storage, he's forgetting that zfs is both a filesystem, and a volume manager.

Support of alien file systems, really? Irrelevant for servers, for everything else mount it via NFS.

Virtualization -- between jails and Virtual Box (on desktops) what is the use case for a different product here?

Nothing like Dropbox -- that's not a bug, it's a feature.

Desktop environments need configuration -- why I am migrating from Linux, you think? If I already have to use alternative window managers and desktops on Linux, where is the big difference?

Package managers, now that is a good point. XML config, that too. Nigh everything else is missing the point.

<comment><USER32> > Nothing like Dropbox -- that's not a bug, it's a feature.

What a horribly arrogant and conceited thing to say.

<comment> vezzy-fnord It's also wrong. FreeBSD supports the best there is: Tarsnap.

<comment><USER33> I use Tarsnap and Dropbox. They aren't the same at all:

* You run Tarsnap whenever you want to push changes; Dropbox automatically pushes changes.

* Tarsnap is for 'real' computers only; Dropbox runs on my phone (which is very useful for photos, among other things).

* Tarsnap is billed by usage (at a very small amount); Dropbox has a free tier.

* Tarsnap doesn't have a natural sharing usecase; Dropbox does.

* Fundamentally, Tarsnap is backup, and Dropbox is sync. They are two different things. Not to mention that Tarsnap is also supported just fine on Linux.</comment></comment></comment></comment>


A writer leaves Microsoft Word - <AUTHOR> http://stevenpoole.net/blog/goodbye-cruel-word/ <comment><USER2> I know this is in a different league..but I wrote Foundations of Programming in Word, and then The Little MongoDB Book in Markdown + Textile (in Textmate). Writing in Markdown was a much more liberating experience as it was much quicker and let me focus more on the content rather than the document.

I've always really liked Word, it's a great product, but for 99% of people it just does way too much and is thus way too expensive. Office is worse...gmail is better than outlook, anything is better than powerpoint or access.

My last two jobs have shown me that Excel is really what you need to kill if you want to break the Office stronghold.

<comment><USER3> You're right about Excel. It is the corporate behemoth that may never be slayed.

I'm thinking of getting a Mac, but can the Mac version of Excel do keyboard shortcuts like on Windows? (E.g. "alt, o, h, r" to rename a sheet, or "alt, i, w" to insert a sheet). From my experience, it doesn't. Losing shortcuts would put a heavy drag on my productivity.

<comment><USER4> Excel is 99% of the reason I run virtualized windows.

<comment><USER5> Excel's basic math errors are 99% of the reason I do my stats with python.

<comment><USER6> Care to elaborate?

<comment><USER7> [http://blogs.office.com/b/microsoft- excel/archive/2007/09/25...](http://blogs.office.com/b/microsoft- excel/archive/2007/09/25/calculation-issue-update.aspx)

<comment><USER8> That's not a math error, that's a display error. I'm no fan of Office, but that would not be a reason to fear Excel's ability to calculate correctly.

<comment><USER9> During the whole OOXML debacle, there were many examples discovered of ambiguous or flat-out wrong behavior in various versions of Excel over the years, the kind of wrong behavior that could easily have altered the outcome of financial transactions that were managed using spreadsheets. You can probably find some if you hunt for them on Groklaw. I seem to remember one related to a date basis parameter, so that might be a good first keyword set to try.

<comment><USER10> Rob Weir has pointed out a lot of OOXML-problems over the years: <http://www.robweir.com/blog/2007/07/formula-for-failure.html> [http://www.robweir.com/blog/2008/05/fractured-yearfrac- and-d...](http://www.robweir.com/blog/2008/05/fractured-yearfrac-and- discounted-disc.html)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> TL;DR -- another book-writer discovers the thing of beauty that is Scrivener. I've written one book 100% in it, and used it to refactor three others (when their multiple plot threads were threatening to get out of hand). It's not that it does anything magical at the _word processing_ level, but it makes the structure of a book-length work transparent.

(If you don't write books for a living, the best metaphor I can give you is this: imagine you've been writing code for years using just a text editor. (If your editor is Emacs, congratulations: that's the MS Word of text editors -- kitchen sink included, but not everything ideally placed unless you do a lot of customization.) Then someone shows you an IDE. That's Scrivener: it's basically an IDE for books.)

<comment><USER12> > If your editor is Emacs, congratulations: that's the MS Word of text editors > -- kitchen sink included, but not everything ideally placed unless you do a > lot of customization.) Then someone shows you an IDE.

That analogy doesn't stand at all. Most of the people whose _editor of choice_ is Emacs(mine is Vim) have known about IDEs all along, have used them at some point of time, or may be still use it for languages which are too verbose to do without IDE code generation. They chose not to use it, or use it sparcely. There is no _someone showing you an IDE_.

<comment><USER13> The beauty of emacs/vim is that they are a. highly optimised to enable quick editing of _any_ text document, not just a specific subset of languages, and b. highly customisable - the customisation isn't an annoying overhead, rather it lets you define exactly how you want the environment to be whereas an ide tends to be harder to customise to that degree.

Horses for courses.

As an aside - I think the analogy fails purely in terms of quality, word is a horrible mess and a nightmare to work with, emacs is a (sometimes clunky) thing of beauty.

</comment></comment></comment><comment><USER14> Ah: I wish I could leave Word for good. But my family's business does grant writing for nonprofit and public agencies (see <http://blog.seliger.com> if you're curious), which means we routinely have to exchange documents with other people. In that world, Word still rules, especially for complexly formatted documents.

<comment><USER15> How so? You can open Word docs in LibreOffice and save them as well...

<comment><USER16> Every day I open, edit and share legal contracts and other Word documents. They're usually up to about 120 pages long, with reasonably simply formatting. They usually have marked up changes from about 2 to a dozen people.

Every six months or so I check out OpenOffice/LibreOffice to see whether the documents I'm being sent survive the open/edit/save cycle.

Every time so far I end up with a document with widely differing formatting from the original.

So at least for me, LibreOffice isn't suitable for my usage patterns.

I imagine other people are the same.

<comment><USER14> This.

In addition, many funders require that submitted proposals be .doc files. Sure, one could play roulette with other programs, but when thousands to millions of dollars are on the line, it's easier to simply use Word.

<comment><USER17> Is there any good reason for this requirement, or is it just inertia?

If I'm submitting something read-only, PDF seems like the obvious choice. If you're going to edit it, maybe .doc is the solution, but really, Google Docs would make collaboration easier.

What does a Word file have that other solutions don't, other than mindshare?

</comment></comment></comment></comment></comment><comment><USER18> Word is still a great Word processor. It actually has a full screen mode that eliminates all the distractions just as the programs used by the author. Word's biggest problem is that all its power increases its complexity and there really isn't a good user manual or resource to train people. I find that most people that switch to something like GoogleDocs don't use the advanced features of Word and probably would have been just as happy using WordPad.

<comment><USER19> What would be 'advanced features' of Word that are neither completely unnecessary nor could be replaced by (more or less) simple LaTeX macros?

I'm actually curious - I've heard a lot of people raving about the 'power of MS Word', yet no one was really able to name any meaningful features that would justify calling it 'powerful'.

<comment><USER20> I use LaTeX for most of my writing, and I'm not a big fan of Word. That being said, I think the advantage probably is that it significantly lowers the barrier of entry to those advanced features. Hence, you'll get 'secretaries' doing fancy stuff, who might not be otherwise inclined to learn LaTeX (and let's admit it, writing TeX macros is not particularly nice).

<comment><USER19> I have to admit I haven't learned LaTeX myself yet, but I've been using LyX for a while now, which basically spits out compilable TeX. Processors like LyX (are there even any processors like it?) take care of exactly that barrier of entry.

I agree fully that advanced features in LaTeX are most likely more difficult to learn, but if the argument in the first place is the 'power' of the features, then LaTeX will win out regardless. It's like comparing vim/emacs to nano (in terms of 'power').

</comment></comment></comment></comment><comment><USER21> Emacs users intrigued by the idea of an always centered cursor might like to try this mode out. <http://www.emacswiki.org/emacs/centered-cursor-mode.el>

<comment><USER22> On a similar note, I'm always a bit amused whenever WriteRoom gets lots of praise, because it's actually not so much different from good old Emacs running in a terminal (no X). Back to the future!

<comment><USER23> I've not used WriteRoom, so I don't know just how configurable it is, but I often find myself in Emacs getting distracted from my original task by accidentally discovering new features, or deciding to automate something in elisp.

 _"The art of spending 3 hours to complete a 1 hour job in 5 minutes"_

And this is after using it for nearly a decade already :)

<comment><USER20> Don't worry... it'll pay off in only three times using it :)

</comment></comment></comment></comment><comment><USER24> Two interesting thoughts here, that are general to application development.

1 - The reason Windows lost it's way was a lack of simplicity. This is a broad comment about software in general. It is tough to be everything for everyone. And most software starts this way.

2 - There was a great line hidden in the footnotes. This speaks to the importance of collaboration amongst great programmers.

"As Scrivener's creator relates, he emailed Jesse Grosjean, Writeroom's author, wondering how he did the block-cursor thing; very generously, Grosjean just gave him the code, and even recommends Scrivener on his own website."

Very good read!

</comment><comment><USER25> For a person working alone, the question of the format is largely irrelevant - Word support saving in plain text too. The problems exists when we need to interact with open people, and most of us can't tell them "What the fuck".

<comment><USER26> Most people wouldn't know what a .doc file is if their lives depended on it.

So take advantage of it and send them a .rtf file -- nobody has to know and you get excellent compatibility.

<comment><USER27> But only for very simple documents - no cross references, working image formatting/layouting, watermarking, shabby table support, footnotes, embedded styles, ...

</comment></comment></comment><comment><USER28> >WriteRoom has a "typewriter-scrolling mode", so that the line you are typing is always centered in the screen, not forever threatening to drop off the bottom...

That's the one thing I hate most about every modern editor: When I page down, my cursor appears at the bottom of a page I can't even see. What the hell is that?

</comment><comment><USER29> I used Scrivener to write my 2010 Nanowrimo entry. It's a great piece of software, and I can't recommend it enough.

<comment><USER14> I'm not sure it will be useful to most people, for reasons tangentially related to this post: [http://jseliger.com/2010/11/12/scrivener-or-devonthink- pro-w...](http://jseliger.com/2010/11/12/scrivener-or-devonthink-pro-with-a- side-of-james-joyces-ulysses) on Scrivener and Joyce.

The main reason I say is because I think a lot of people, based on the amateur writing I've seen, don't need a fancier way of arranging words so much as they need to focus on 1) the quality of their sentences and 2) how one event drives another in their plots. I worry especially regarding point 2) that Scrivener lets people work in parallel when they should be working in serial, with one event driving another organically. Too much amateur writing I see is, for lack of a better term, plotless: meandering around feelings, or random encounters, or designed to show how _deep_ the author is—instead of telling a story.

Scrivener will help with some things, as I've written elsewhere, but I'm not sure it's really enough for the vast majority of what writers and would-be writers are working on.

<comment><USER30> In other words:

If you want to be a good writer, concentrate on your craft instead of your tools.

<comment><USER31> This is a silly dichotomy. A craftsman's skill lies in using his tools, so tool choice is important. it's important for a chef to have a high quality knife that they feel comfortable using, but a high quality knife will no more make a person a good chef than a good text editor, build and language tools, etc. will make someone a good programmer. But good programmers, like good chefs or good writers, will nevertheless spend a goodly amount of money and effort ensuring they have the highest quality tools they feel they need.

<comment><USER32> I think the more important tools in this case though are language, grammar, and punctuation.

<comment><USER14> Agreed. In the case of computer tools, I think the difference between someone productive using Word and someone using Scrivener is going to be pretty small in most instances. For the novel I'm working on now, multiple people are speaking (like Tom Perrotta's Election or Anita Shreve's Testimony), for which Scrivener is pretty useful. But for anything else I've written, I don't think Scrivener would've been a huge advantage. I'm not even sure it would've been a small advantage.

Still, if you're curious about this sort of thing, I wrote in more depth about it here: [http://jseliger.com/2011/08/11/how-to-be-a-faster-writer- don...](http://jseliger.com/2011/08/11/how-to-be-a-faster-writer-dont) .

</comment></comment></comment></comment></comment></comment><comment><USER33> I can honestly recommend Scrivener for both technical and non-technical writing. I use that application regularly and have nothing but respect for the developer. From an engineering point of view, it is a great example that demonstrates the developer's understanding of the problem domain. Little things that make all the difference.

</comment><comment><USER34> re: "Many people agree that revision 5.1a, specifically, was the best version of Word that Microsoft has ever shipped."

Fortunately, my Ancient Powerbook still runs version 5.1. Eminently usable, and far less annoying than the Office 2008 version. Among other travesties, the current version will often refuse to select a single word, obstinately selecting another word, next to the word you want to select (and delete) and thus deprecating one's deletion experience to repeated tapping of the Delete key.

As a side benefit, the Powerbook won't load almost all web sites, thus removing one obvious procrastination temptation.

<comment><USER35> alt + delete doesn't work?

<comment><USER34> Ahhh! I wasn't aware of that shortcut, thanks. But the selection snafu remains. Blast you, Office 2008!

(Note: that's option + delete for Mac.)

</comment></comment></comment><comment><USER36> The author really sets his screen to yellow text on a black background? Makes my eyes tired just thinking about it. Anywayz... on a Mac you can flip the colors of your monitor by holding down ctrl-option-command and pressing 8, if you like that sort of thing.

<comment><USER37> Or even better, use something like Flux[1] to subdue the tones of that glaring white screen just enough to reduce eye strain.

[1]: <http://stereopsis.com/flux/>

<comment><USER38> Oh wow, thanks for this one. Immediately noticed a reduction in eyestrain. If you're found the GUI buggy (as I did), try the command line interface (xflux). The CLI app works fine for me.

<comment><USER39> I need to try out the linux version of flux, but the mac version is seriously awesome.

Has helped fix me off of getting off the computer at night with the color/gamma changes.

<comment><USER40> F.lux is indispensable on Mac and PC (when I still had a PC.) Absolutely required if you code at all during evening/nighttime.

Unfortunately I couldn't get it to work* on my Ubuntu box and found another app, Redshift, that seems to jive better with Linux: <http://jonls.dk/redshift/>

\-----

* Ran without errors, but didn't tint my screen. I chalked it up to oddities of video card drivers on Linux.

</comment></comment></comment></comment></comment><comment><USER41> Nice article - I downloaded a trial copy of Scrivener to try tomorrow.

A couple of years ago, Apress wanted Word files and I discovered Pages: really pretty good, good Word compatibility, and fun enough to use.

That said, I really prefer Latex for writing because I spend a very small amount of time thinking about formatting compared to writing.

</comment><comment><USER42> Funny timing for this - a few hours ago, I decided I needed more of a minimal word processor (although I'm not going as far to delete Word.) I stumbled across WriteMonkey (<http://writemonkey.com/>) and so far, I love it.

Note: this only runs on Windows

<comment><USER37> I found parts of WM like the giant context menu with icons for every entry, ability to enable typewriter noises and other little features detracted from the overall experience but it's still a solid app.

Since switching to OS X I've used Byword but recently tried out iA Writer and am considering a purchase.

<comment><USER43> iA Writer is great! <http://www.informationarchitects.jp/en/ia-writer-for- mac/>

</comment></comment></comment><comment><USER44> ...and another starts to use it <http://www.warrenellis.com/?p=13077>

</comment><comment><USER45> I do everything besides screenplays in plain text. Compatibility wins here. Between Google Docs, Word 2010, Word for Mac, Pages and Open Office, it seems even basic documents get mangled. RTF is only reasonably better.

</comment><comment><USER46> MS Word's greatest sin is mixing up content and layout into a strange binary format. Whether it was a devious scheme to lock in users or bad design is anyone's guess but it sure crashed a lot when uou mixed tables and diagrams. Formatting was a nightmare too and sometimes the changes were irreversible. I wish I saw the light and went with plaintext/markdown earlier.

<comment><USER47> About the binary file format : <http://www.joelonsoftware.com/items/2008/02/19.html>

I'll let you set your own opinions.

</comment></comment><comment><USER48> Scrivener blows the pants off of monolithic WPs like Word for large structured writing (books or longer articles). I have a pretty detailed analysis on my blog as to why:

<http://all-things-andy-gavin.com/2011/02/25/scrivener/>

</comment><comment><USER49> I too had been using MS Word for years to write the various articles and reviews that I do. But for my last article ([http://www.smallcloudbuilder.com/apps/articles/410-crossing-...](http://www.smallcloudbuilder.com/apps/articles/410-crossing- the-chasm-converting-an-iphone-app-to-android)) I switched over to Google Docs. For my use, it worked fine. The feature I missed most was the live word count that like the author, I had come to depend on when writing articles of a designated length. Google, are you listening? :-)

<comment><USER50> You can extend the functionality of google apps using apps script. I thought it was already in use and there were libraries of extensions, but I don't see any. But I'm guessing they will be coming soon..

</comment></comment><comment><USER51> Number one deterrent to me using Word: no support for emacs navigation keystrokes, which are near-universal on the Mac. I don't use actual emacs, but I've come to rely heavily on those keystrokes.

<comment><USER52> I have never tried this, but apparently you can set key binds in Word. See: [http://emacsblog.org/2007/02/18/emacs-key-bindings-in-ms- wor...](http://emacsblog.org/2007/02/18/emacs-key-bindings-in-ms-word/)

</comment></comment><comment><USER53> Apparently Steve Brust writes using emacs.

[http://dreamcafe.com/words/2009/04/11/help-us-dr-internet- em...](http://dreamcafe.com/words/2009/04/11/help-us-dr-internet-emacs- edition/)

<comment><USER15> I was going to suggest this. Religious themes and issues of learning curve aside, I find emacs is the perfect text-editor for my needs. (Emphasis on _my_ needs).

I have disabled the scrollbar, menubar, and toolbar. Full screen it and you have black and white. Nothing else. Combine that with some really great text manipulation features/shorcuts and you have an awesome text editor for anything you want.

And it can even do spell-checking and all that other fancy stuff.

As for the whole "what about sending documents to non techies" issue: It doesn't seem to apply for this article since he can write the whole thing in emacs and then send the final copy to his editor after copying and pasting into Word.

<comment><USER23> copy & pasting only works if you don't have any markup to transfer.

There's usually some intermediate format that you could, say, write in Emacs and use markdown or asciidoc or latex, compile to html or rtf or whatever, and then import into Word.

</comment></comment></comment><comment><USER54> The mention about the Psion PDA is spot on. I also used to do a lot of writing with those in the 90s. Relatively small device, almost laptop-quality keyboard, and battery life of several days with AAs that you could buy anywhere.

I haven't seen devices like that in last ten years or so. Undistracted, small, great text input.

Back then I'd connect the Psion with infrared to my cell phone to FTP stuff to our processing system that would eventually convert the document format on the device to HTML and post it online.

</comment><comment><USER55> "Eventually the Psion broke, and nothing as good has replaced it as an ultramobile writing tool. So much for progress."

There is definitely a market for a device with a Psion quality keyboard and maybe an e-ink based screen (not sure they can react fast enough to feel snappy actually...) It would make a top notch writing platform... Smartphone keyboards are a joke when they have one and e-reader are even worse...

</comment><comment><USER56> <http://celtx.com/index.html> is a very good, free and open source writing package that may be of interest to anyone who wants good writing software.

It has a lot of that sort of index-card functionality like in Scrivener.

It's often listed as a competitor for final draft (the screenplay software).

It's been built for Windows, Mac and Linux

</comment><comment><USER57> This might be taking a step back toward fluff from programs like WriteRoom, but I really like typing up blog posts with OmmWriter: <http://www.ommwriter.com/en/>

It's just relaxing.

Edit: The site makes it look like it's only for iPad at first glance, but it's also available for Mac/PC

</comment><comment><USER58> Anyone else fondly remember Interleaf? I now have a love/hate relationship with OOWriter but expect I would pay a lot for a working clone of Interleaf on Linux. I used it both on Apollo workstations and on PCDOS.

<comment><USER59> I used Interleaf on a VaxStation in the late 1980s. It was great at handling the huge (thousands of pages) government documents we had to produce.

</comment></comment><comment><USER60> Love it. He had me at: "Scoured of Word, my computers feel clean, refreshed, relieved of a hideous and malign burden."

Could have walked into the sunset right there. But I understand his need to fully skewer MSFT.

</comment><comment><USER61> I really like the simplicity idea behind WriteRoom.

I think it would be great for this kind of apps to auto-save directly to Evernote API or iCloud instead of the file disk.

</comment><comment><USER62> Pages has full screen writing mode, can open doc, and can export in doc and/or PDF. I never understood why it wasn't more popular than.

<comment><USER63> Pages' full-screen mode is relatively new -- as far as I'm aware, it wasn't added until the Lion update. Scrivener et. al. have had the market to themselves up until now.

That being said, the fullscreen mode in Pages actually seems like a pretty nice compromise between features and non-distraction. Apple's obviously been taking some notes. :)

<comment><USER62> Not sure when it was introduced, but I know I had it with iWork 2009 on Snow Leopard.

</comment></comment></comment><comment><USER64> I started getting annoyed with Word when it couldn't even force the caret to black when typing. Watch your caret, it's flashing, now type and it stays black.

If a "Word Processor" can't even manage such a basic thing, it's lost the plot. I think this was likely Word 6.0 that did this, and was also about where they brought the Mac and PC code-bases into alignment, though others may know better.

Word 2.0 on Windows is for sure my favorite PC version, after the 'just right' Word 5.1 on the Mac.

</comment><comment><USER65> It can be totally irrelevant to this discussion, but I think the screenshot is from Word 6. 5, IIRC, had flat controls.

<comment><USER65> This is how I remember it:

[http://school.anhb.uwa.edu.au/personalpages/kwessen/web/soft...](http://school.anhb.uwa.edu.au/personalpages/kwessen/web/software/mac/word5.gif)

Guess I'll have to fire my Mac SE (and the Word 5 disks) to be sure...

</comment></comment><comment><USER66> So, people are writing adverts* for discovering full screen editors?

c'mon, i remember my editors of choice doing that since the late 80s. even under windows. under linux it's not even fair play to mention this.

Those people will have their heads blow away when the find out that /modern/ text-editors not only have full screen but better way to navigate the text and perform auto correction. ...just let them catch up with the progress made on the 90s. heck, vim can have word count on the status bar since what? the 70s?

* i consider the article to be an advertisement for the mac editor, even if unintentional

<comment> X-Istence WriteRoom uses a standard Mac OS X text field IIRC, and as such uses Mac OS X's built-in auto correction and spell check...

<comment><USER66> exactly my point. the guy makes a living writing, and never bothered to look for better text editors.

he is chanting about the progress of default text editors when all that was available from day one of his career.

it's like a developer with 30yr of experience just finding out version control

</comment></comment></comment><comment><USER67> The design of this website is uncomfortably close to Khoi Vinh's subtraction.com.

<comment><USER68> <http://stevenpoole.net/colophon/>

<comment><USER67> Thanks. I did actually look for something like this, but I was looking for it under 'about'.

I still personally think the resemblance (not just the monochrome, but the overall look - the layout, the individual entries, the top nav, the bottom nav) is pushing the limits of good taste, but oh well.</comment></comment></comment>


There May Be Money in Internet Art After All (1999) - <AUTHOR> http://spiller.si/new-york-times/ <comment><USER2> It's interesting to see how the predictions have diverged. Internet penetration into "gallery art" basically hasn't happened at all. Cynical people would say this is because it's unrelated to artistic value and mostly a complex sort of money transfer that absolutely requires unique physical objects.

Small-scale sponsored art through Patreon is huge though, with a large NSFW component. Kickstarter enables people to do print runs.

There isn't really a big "internet famous" artist though, is there? Would Banksy count?

<comment><USER3> I think you have to wait for people who encountered meaningful art right around the time they hit puberty (say 12-14) to grow into rich adults for whom it held special value (say 40s). So I would say 30 years.

<comment><USER4> ordinary time and attention scales are now broken -- we live in a tornado of information that is literally unprecedented.. in other words, dont hold your breath for this 30 years thing.. its not happening

</comment></comment></comment><comment><USER5> I'm aware of ridiculous money payed towards artists online creating furry art. This specific subculture is the highest paying to artists that I'm aware of and for artists to trade their time for creating an image the client desires. The amount payed is apparently enough for artists to live while satisfying their clients. The clients will typically post the finished work online for everyone.

<comment><USER6> You mean furry porn?

<comment><USER7> Not all of it is. I don't have the experience to know whether most of it is (neither sort is something I go looking for, I just see what incidentally pops up in various timelines), but there's definitely a significant amount of entirely chaste work out there.

Though also, frankly, so what if it is? They want something drawn and they're willing to pay what it's worth. Too many people aren't, these days.

</comment></comment></comment><comment><USER8> This and the following three webcomic pages are probably the closest thing I've seen as "internet art" in it's most literal sense. [http://www.avasdemon.com/2112.php](http://www.avasdemon.com/2112.php)

Although I guess now it's really commonplace, Patreon and all.

<comment><USER9> [https://www.newrafael.com/websites/](https://www.newrafael.com/websites/) Rafael Rozendaal's work is probably my fave example of Internet Art.</comment></comment>