The fundamental problems with CSS3 - <AUTHOR> http://mattwilcox.net/archive/entry/id/1031/

<comment><USER2> My biggest horror with all this new W3C tech, is that in reality: it's really old. Because of Microsoft's stupid mistakes while reigning power over the browser world, we've been in this 10 year period of stagnation in which we've go nowhere.

There's no real laws you can put against Microsoft, but if this were a real world situation, we'd be trying them for crimes against humanity. They have effectively ceased innovation for an incredible amount of time, and I would go ahead and say that they've slowed down the exceedingly fast development of the last decade.

CSS3, Javascript 2, HTML 5, XHTML 2, etc. should've came out years ago. Possibly in different forms, but nonetheless this monopolization over a browser market has killed _everything_.

I am glad that Google is getting into this game. Not only because it will definitely give Microsoft a run for its money, but we will finally have new innovation that before seemed to take years to implement.

<comment><USER3> > I would go ahead and say that they've slowed down the exceedingly fast > development of the last decade.

As a fellow developer, I'm about a commit a heresy down to text:

"Most people don't want fast development."

People may claim they want change or for things to be "done with" in a timely matter, but the reality is that change brings disruption in economic, social, and political terms. Take a look at IP4, for example. IP6 just isn't getting traction because the problems it solves have now become "features" to many people. (NAT being one of the big ones, since it's gotten the perception of being a security feature.) My job involves working with IE 6, since my organization refuses to update our systems to even use IE 7, much less standards-compliant stuff like Chrome or Firefox.

Simply put, if MS was sent to trial for "crimes against humanity," the jury of "peers" who would to be selected would acquit them. Why? Because the court would likely consider "peers" to be end users, business men or the ignorant, not developers or technologists like us.

<comment><USER4> The removal of NAT, IMHO, is a major ache in the market. What used to be purely an annoyance to developers and technologists has now become a serious stumbling block for users.

The internet is no longer the download-from-website model that it was years ago. There is a massive amount of user participation now, which is why upload caps are increasing as services like video chat, peer-to-peer gaming, etc take off.

And now you tell them only one person can initiate a video chat from behind a single router. The user is annoyed. Or you tell them that you can't both be playing the same game at once on two computers due to a port conflict.

IMHO there's a real need to get NAT out of our system, and there's a very real consumer benefit to doing so. It directly opens doors to services and products that people are _already_ clamoring for.

<comment><USER3> Just for the record, I'm not a believer in NAT, but I have worked for people who do, hence my using it as an example of a "feature."

</comment></comment></comment></comment><comment><USER5> CSS does have its limitations, however I'm not convinced providing full DOM manipulation is a good idea. I admit it does solve the problem and provide greater flexibility, but the downside is that it'd be very quickly misused with content and presentation becoming more tightly coupled as people start using the convenient CSS DOM manipulation with dynamic pseudo-classes for interactivity and removing many of the accessibility advantages that CSS has. There's also very real unaddressed problems in terms of creating a readable syntax, maintaining CSS code with injections all over the place and potential browser rendering issues. To me, the cure seems worse than the disease, and the Advanced Layout Module, despite its ugliness, is probably a better solution.

CSS3 has gone a long way towards improving selectors, and I'll be the first to admit calc is undoubtedly both necessary and long overdue. I'm not fussed either way by CSS variables - I can see both sides of the coin.

<comment><USER6> Can accessibility really get any worse? Extremely few websites are accessible today. If it weren't helpful for SEO, nobody would bother with it at all.

Can readability get any worse? Nobody really understands floats. This is a layout language in which people regularly _boast_ about how they achieved _three-column layouts_. Think about that for a second.

And if you look at the code that achieves said three-column layout, it is impossible to tell what it does without comments. That's because CSS is written out as a set of spring-loaded contraptions all interacting with each other, meaningless without the "cascade" of DOM elements just so, and a browser model just so. There's nothing like "three_column_layout(node, node, node)".

As far as I can tell, your thesis is that because CSS is underpowered, this will help us maintain accessibility. That's totally backwards! There will always be requirements for complex layout and interaction. That part of the job is not going away. So something's got to give. The artistic people go to Flash, the scripting people just do it with tables, and the server-side programmers go for some toolkit that pretends the browser is Java. Very very few people have the sheer bloody-mindedness to do the right thing and learn every last browser quirk and the so-called CSS model.

CSS is DEAD. It is not the basis for a better future.

<comment><USER5> I'm going to break down the differences between my opinion and the original articles and hopefully your opinion.

I admit CSS has its problems, and the core one is this: it's too complex to create good designs, and it's too easy to hit a brick wall. We can all agree on this.

The most fundamental things about CSS aren't a problem. The cascade is sane, and is probably the best thing about CSS. It makes sense, it's fairly intuitive and can be describe in a couple of sentences. For styling, aside from the ugly non-JavaScript compatible syntax and the occasional unintuitive property-name choice, we're in pretty good state generally.

The two biggest, and very real, problems are the unintuitive box model and layout model. Everyone should agree with this.

I'll first deal with the relatively simply box model problem. The W3C box model was incredibly poorly thought out and makes like incredibly and unnecessarily difficult. It's simply inside-out. The width should refer to the total width of the box as in IE4 and quirks mode: this makes things wonderfully intuitive, makes things look as you expect and allows you to mix different units with ease. As it is, it width refers to the inside of the box and the real width is the inside width + border + padding. This is quite obviously nuts. There are two fixes to this problem: a nastier backwards- compatible one, and an actual nice solution. Both are in CSS3, and it gets full marks from me here. The first fix is to provide a way of calculating values so you can easily mix percentages with pixels. This is in CSS3 as the calc function. The second fix is switching to the traditional sane box model. In CSS3 there is a property to do this - add "box-sizing: border-box". So far, CSS3 gets full marks from me.

The second core problem is layout. We currently have the "float model". I put them in quotes because it's not so much a model as people meeting the limitations of CSS2 but wanting many of the advantages of it and finding a way around them using floats. Presumably when CSS2 because a recommendation in 1998 the web looked like a very different place, the limitations of the model weren't considered a big problem, and then we were left in standards limbo which left us for several years without a decent CSS2 implementation and no table-replacing display: table implementation in the major browsers in sight. And up until now the only usable, accessible CSS model we had was arguably designed for something else entirely - the task of allowing text to flow around images on normal layout pages. To say this dirty hack is lacking is obvious an understatement, and that's excluding working around CSS bugs, but I'd still argue it's the best thing we have and the accessibility advantages and content seperation are worth the dirty hacks.

And so we have where we are today and our problem - how do we provide a good, natural, way to make layouts?

And any answer to this leads us to the fundamental subquestion and finally to where we started this discussion: how seperate do we want our content and presentation to be?

This is actually a difficult, and slightly, ideological question. The more you seperate content and presentation, complexity of both the spec and language goes up, flexibility goes up, inherent accessibility goes down and so does inherent maintainability. The "completely" solution results in DOM injection, the "not completely" solution results in something nearer to the Advanced Layout Module.

And this is where our fundmental differences clearly lie.

I believe that forcing a reasonable amount of semantic ordering within content is a good idea as it helps encourage a certain amount of inherent accessibility as content has to be ordered. I believe that any syntax that would allow DOM injection would be inherently ugly syntax and not fit well within CSS. I believe that any syntax would have to be very carefully chosen to work at all. I believe that if you want ultimate control over the appearence of the page, you always have JavaScript and jQuery at your disposal.

And you, and the article, believe that the advantages of flexibility outweighs my criticisms, and CSS would be underpowered without them.

\---

And to go back to your own post:

Accessibility can get worse, and CSS3 is looking like it will improve the situation.

Readability can get worse - floats are a dirty hack especially when combined with CSS hacks for dated browsers and as such inherently aren't readable, but adding injection into the mix won't automatically make life better.

And yes, floats are a dirty hack and aren't an indicator of the future of CSS either way.

CSS isn't really inherently underpowered: it depends how you see it. At the moment it needs fixing either way

And CSS isn't dying at all, and CSS is going to be completely reborn over the coming years. Flash is still dying - Flash was always a dirty hack. CSS's display: table is going to replace with CSS as soon once IE7 dies in about 5 years. And CSS is getting better, compatability is improving and CSS3 is going to better than CSS2 whatever it chooses: DOM injection or not.

</comment></comment></comment><comment><USER7> It seems CSS is eagerly following C++ templates into the Turing tarpit. For an alternative, I've heard good things about the TeX "boxes and glue" layout model.

<comment><USER8> It seems that anything that comes out of "standards bodies" ends up looking like C++. Standards in general need to become simpler.

<comment><USER9> Common Lisp came out of ANSI, and I'd say it doesn't look like C++ ;-)

<comment><USER8> Yes it does. It has at least 4 different ways to loop, 4 different types of arguments to functions, 5 or 6 different lets (functions, macros, let* , normal let, ...), 3 or 4 different kinds of variables (with no unifying underlying theme), and at least 3 different flow models (the nested lists, tagbodies, loops with returns, etc...). That is exactly the same problem with C++. Instead of finding unifying abstractions which give the same functionality with 1 idea, they have chosen to add in multiple specific quick fixes to the language. They have chosen to amend the language with a thousand small changes, each suited to its own little use case, and have ended up with a monster of a standard that takes up 15 megabytes in 2300 files with 110,000 hyperlinks. Thats 15 _mega_ bytes mostly of text.

Scheme is a lot better but its going the way of CL, slowly but surely.

<comment><USER10> aren't the 4 different types of arguments useful? I end up hacking it into my ruby code because it's missing. Crap like

def my_meth(options = {}); options[:named_arg_1] ||= 'bob'; options[:named_arg_2] ||= 'blub' end

<comment><USER8> To a limit. Admittedly, having different argument types is pretty useful but still, _5_ independent parts with their own semantics some of which may not be usable in certain contexts* ? how are auxiliary arguments useful in the general case?

This still does not affect the rest of my claims. Having multiple execution models in the same language is bloated. So are many other things in the CL standard.

* Details: [http://www.lispworks.com/documentation/HyperSpec/Body/03_da....](http://www.lispworks.com/documentation/HyperSpec/Body/03_da.htm)

<comment><USER10> yeah, i wasn't trying to dispute your main claim, I just miss CLs argument types when I'm in other languages so it jumped out at me.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> There are a lot of "what ifs" in the history of web tech, and considering this article, JSSS (<http://en.wikipedia.org/wiki/JavaScript_Style_Sheets>) versus CSS springs immediately to mind. Using Javascript for styling pages in 1996 may have sounded like needless complexity, but in retrospect it seems like it would have been a much better choice. Whole-page layout deserves a true programming language.

<comment><USER12> Separation of presentation from content is good, but presentation is a task of arbitrary complexity and requires arbitrary computation (aka a full programming language) to do properly.

Many current frameworks are inadvertently used to bring the power of a programming language to presentation, but most of them don't seem to realize it yet.

</comment></comment><comment><USER13> I think the fundamental problem is that the html/css/javascript/server stack needs to get _simpler_. For some apps, you are best off abandoning html entirely, and doing everything via javascript. Eventually we might be able to unify client-side and server-side code with approaches like Google Web Toolkit or YC's AppJet, but it is not quite simple enough yet.

<comment><USER14> Yes, the ability to write code once that runs on either your server or the client is amazing, something Fog Creek implemented in Wasabi. But as JavaScript matures, it makes you start to wonder why you even bother with HTML at all; you can simply dynamically generate DOM nodes in JavaScript. And once you start doing this, most of the things you wanted to do running code on both client and server disappear.

<comment><USER10> "But as JavaScript matures, it makes you start to wonder why you even bother with HTML at all; you can simply dynamically generate DOM nodes in JavaScript."

SEO

<comment><USER15> Oh! So _that's_ why Google is developing a speedy JS interpreter... they want to be able to see JS-based pages! They can load a page into a browser-with-no- graphics, and give the JS a certain amount of time to run before freezing the page and then reading off the DOM nodes instead of reading HTML. If they don't like the results, they can just use the HTML like they used to.

(Reading off the DOM nodes also gives them a fresh crack at some more semantic analysis that used to be really hard, since it involved emulating a browser... did you use <span class="some_header"> instead of <h1>? They can make a better heuristic guess at that if they are "inside" a browser and thus capable of seeing that the size is twenty points higher than the surrounding text, no matter how you implemented that.)

To really pull this off, you need a browser engine that enough people are using that site designers need to account for it, and it needs to be designed with the goal of running just the engine as quickly as possible on the backend, with the ability to cut it off after a certain amount of time.

So... has anybody dug deeply enough into Chrome to have an opinion on the feasibility of running the browser without a UI?

<comment><USER10> I'm not sure what your point is. Is your point that we shouldn't worry about rendering pages with JS because someday in the future google will be able to index it equally well?

If so your livelyhood clearly doesn't depend on SEO. I'm not gambling mine on what is currently vaporware.

Btw, people made this exact point about flash a few years ago and your pages will not rank nearly as well if you do them in flash.

<comment><USER15> I think my point was pretty adequately captured by "So that's why _Google_ is developing a speedy JS interpreter", although I have done you the favor of re- emphasizing the subject for you.

I don't care about SEO. I think _Google_ wants to see into those sites, and I don't think they much care about SEO either.

<comment><USER10> I still don't see what your point is.

Something like, "google doesn't care about SEO therefore site s that do should use javascript frameworks instead of static html" or something?

<comment><USER15> My point is not about you at all. If you can't see the value for Google of seeing through Javascript, that's your problem, not mine or Google's.

<comment><USER10> hehe, well when you reply to my comment I assume that it is about my comment. This is the whole point of threaded comments

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> OT: The author's use of underline for emphasis is annoying. It looks like a lot of links, but they're not. He should swap the styles of his links and whatever he uses to emphasize text.

<comment><USER17> It would also be nice if we started writing abstracts for the lengthier & more technical posts.

</comment></comment><comment><USER18> The problem is that Microsoft inversely gains from improving the ease of browser development. The easier it becomes to develop software using open source tools(No Visual studios) on an OS-independent platform(The web with browsers) the less money they make.

Google's recent project (Native Client) is what I've been waiting for as a C++ developer. It basically allows you to run native code(assembler) in browser. But then has security mechanism so that the code cannot do anything to the client computer unless the user of that client has given the container(Sandbox) that runs the code permission.

This will allow people to build their own UI frameworks, that render much more rich graphics and hopefully behave the same no matter what Browser/OS combination you are running on.

References:

Announcement:

[http://google-code-updates.blogspot.com/2008/12/native- clien...](http://google-code-updates.blogspot.com/2008/12/native-client- technology-for-running.html)

Native client code base hosted at Google code:

<http://code.google.com/p/nativeclient/>

Ars Technica review:

[http://arstechnica.com/news.ars/post/20081209-safer-than- act...](http://arstechnica.com/news.ars/post/20081209-safer-than-activex-a- look-at-googles-native-client-plugin.html)

Do people really think we'll ever reach a point where different vendors building code-bases based on documentation built by a committee will ever behave even remotely the same? Have you read any of the W3C documentation, it's fucking ridiculous. We should be sharing implementations, it's the only way to ensure bit-level identical behavior of a target system(Performance characteristics aside).

I really hope Native Client takes off. In combination with Gears for client side storage it would allow us to build desktop quality software but with the web advantages of cross platform development, zero install applications(well as long as you don't consider caching a form of installing), user's pulling down the latest client at all times, and etc.

Awaiting our new Google overlords. Endergen

</comment><comment> old-gregg If we're talking about _fundamental_ problems, then the only fundamental problem is that we're using document markup tools to build rich UIs, which is super-retarded even comparing to early 90s VB6 era.

WTF is <p> or <ul> or <div> and all that crap? I haven't seen an HTML template that looked comprehensible after a year in development.

What do they have to do with UI programming? What we really need is something like MXML or XUL, only cleaned up and widely supported by all browsers, especially IE9.

<comment><USER19> <p> <div> <ul> don't have anything to do with UI.* They are document markup elements. UI is applied to a document (html) via CSS (style) and JS (behavior).

This is all pretty elementary for someone reading this site... Maybe I missed some sarcasm? :p

*Well, they do in a lot of instances, but when properly used, they have nothing to do with UI.

<comment><USER20> Yes that's the dogma. Alas, it's completely lost on me. I fail to understand how tables are more "semantic" than nested divs. Tables only have semantics within the context of some formalism that defines their semantic meaning. Outside of such a context they can be anything, so why not a way of laying out information on a page?

I don't see how swaths of divs, some of them used for semantics (according to some metadata standard), some of them used for purely presentational purposes, improve anything.

CSS people (or should I say modern web developers) are completely anal about not using tables for layout whilst at the same time the whole notion of document structure is so utterly destroyed in any JavaScript heavy app.

These priorities make no sense to me. Laying out web pages with divs and CSS is a black art. It's fragile. It breaks in all kinds of nasty ways. It reduces the productivity of UI development to pre 90s levels and leads ot entire pages done in Flash.

<comment><USER19> "I fail to understand how tables are more "semantic" than nested divs. Tables only have semantics within the context of some formalism that defines their semantic meaning."

Tables are not more semantic than nested divs. But nested divs aren't very semantic, either. Tables are used for tabular data. Divs are used for dividing content.

"I don't see how swaths of divs, some of them used for semantics (according to some metadata standard), some of them used for purely presentational purposes, improve anything."

No one is proposing that you make every element a div. In the web standards community, we call this "divitis" and while better than table-based layouts, it still isn't semantic.

"CSS people are completely anal about not using tables for layout whilst at the same time the whole notion of document structure is so utterly destroyed in any JavaScript heavy app."

Don't lump these developers (who's code doesn't gracefully degrade for non- JavaScript users0 together with the rest of us.

"These priorities make no sense to me. Laying out web pages with divs and CSS is a black art. It's fragile. It breaks in all kinds of nasty ways."

Just because you don't understand how to make something work doesn't mean it's a "black art". Plenty of web developers are able to create semantically- meaningful documents styled (cross-browser) with CSS. CSS offers advantages, but you seem to only see (imaginary) disadvantages.

"It reduces the productivity of UI development to pre 90s levels and leads ot entire pages done in Flash."

I'm not even sure how to respond to this. It's ridiculous.

</comment></comment></comment></comment><comment><USER21> He has a good point: CSS can only define the appearance of existing HTML elements. Sometimes you need visual elements which doesn't correspond to any semantic HTML element. I think SVG would be a good approach for designing these "unsemantic" visual elements, and you can use CSS with SVG. SVG would also be a good way to extend CSS beyound the built-in properties, eg. if I want to design a wawy border to apply to some elements.

He also has a good point about the need for calculation in CSS. However I am really worried about the possible manitenance nightmare of a turing-complete CSS! It should be designed very carefully. A constraint-based sublanguage for CSS would perhaps make sense.

</comment><comment><USER22> _"If you look at the specification there was only one property in CSS1 that could be used to effect layout - float. position didn't even exist, and in HTML 2 neither did <div>, the two essential tools without which no modern design could be achieved (without resorting to tables)."_

Lost me there. A <div> is just a vanilla block-level element. You can turn anything into a <div>.

 _"CSS can only be applied to elements that have semantic meaning"_

You should see the CSS that developers I've worked with write. Even worse is that DreamWeaver has its "style1", "style2" way of doing things which makes picking apart a stylesheet very tedious.

</comment><comment><USER23> The fact that you can already accomplish what he wants with jQ, and that his proposed solution is to add imperative programming semantics to CSS, one assumes the reasonable response to this is simply a compiler that spits out CSS/JS based on whatever random feature he wants CSS to have.</comment>


Ivy.FM - Grails Based New Online Music Service - <AUTHOR> http://ivy.fm/

<comment><USER2> Thank you. It looks fine to discover music.

<comment><AUTHOR> Great. Enjoy it. :)</comment></comment>


Ask HN: Do you meditate? - <AUTHOR>

After listening to a lot of podcasts that interview high performers (specifically Tim Ferriss' podcast) it seems like a high percentage of high performers do have some sort of meditation practice built into their day.<p>I was just curious about the typically younger crowed here on HN. Do you meditate? How? How long? Does it help you? <comment><USER2> Yes, from 5min to 50min a day, depending on my schedule.

I don't use apps, just follow my personal practice.

If someone ask me advice on this here's what I say: Start small, like 5 minutes. Although "serious" meditation is a different matter, a small meditation about mindfulness will surely change a lot of things :)

Keep it small if you don't have enough time and don't judge yourself if you can't make it through 20min easily, it's fine even if you do 1 min.

In the beginning I used an iOS app called InsightTimer, nice app.

Headspace is another great start.

</comment><comment><USER3> A nice complement to meditation is the "4-7-8 Breathing Technique". I use it to help me sleep, calm me down after a close call on my bike, or just generally keep patient when waiting for something.

[http://www.drweil.com/drw/u/VDR00160/Dr-Weils-Breathing- Exer...](http://www.drweil.com/drw/u/VDR00160/Dr-Weils-Breathing- Exercises-4-7-8-Breath.html)

</comment><comment><USER4> I try to do just 10-15min each morning, though more often than not I don't even achieve that. I think the act of just forcing yourself to sit still and not do anything puts a lot in perspective, and if it's just 10 minutes you can't use the excuse that you don't have time. I've tried a few apps, the only one that I've found to really help is Headspace, has good no-nonsense advice.

</comment><comment><USER5> Meditation is not necessarily an act of sitting in a serene place with your eyes closed.

Meditation is anything that helps to quiet your mind.

Brief breaks and mindless staring through the office window counts too!

So the broader question is - what helps to quiet the mind?

For me it's brief "diving out" of a rat race and enjoying something. That _something_ could be vastly different from day to day.

<comment><AUTHOR> Does mindlessly staring through the office window really calm your mind? I would imagine that's when day dreaming and other thoughts creep in.

</comment></comment><comment><USER6> I try to practice mindfulness on a daily basis. I do find that it's very useful when you want to separate your emotions from your self, like during periods of anger or anxiety. I haven't done it long enough to be able to talk about long term results, but it's proving to be integral to my goal of heavily increasing productivity throughout the day.

<comment><AUTHOR> Do you use any particular app? There are a few out there.. headspace, calm, etc.

<comment><USER6> I tried calm and it was okay. I actually read the book 'Mindfulness in Plain English' and worked from there. I use no technology in my sessions - I feel like it helps when I'm completely disconnected. As a tip, remember this: Most of the time the greatest benefit from meditation is the act of trying to meditate. You can fail miserably and it still can work wonders on your mental health.</comment></comment></comment>


The Apple Goes Mushy Part II: OS X's Interface Decline - j-kent http://www.nicholaswindsorhoward.com/blog-directory/2016/7/28/the-apple-goes-mushy-part-ii <comment><AUTHOR> Flat UI and minimalism has destroyed UX. What's a button? What's a badge? What's a tab? What's clickable? What's an indicator? Who knows? It's all plain boxes or circles and it's all washed out.

There were problems with skeuomorphism, to be sure, but the design communities reaction has been even worse.

<comment><USER2> Yeah I think Google's on a much better track with material design. It's "flat" enough to look modern, but gives you better UX cue's.

<comment><USER3> To me, it looks like the worst of both worlds: ugly shadows stand as ruins of the past, while usability still takes a hit as the guidelines still tend heavily on flat design trends.

</comment></comment></comment><comment><USER2> What gets me is this trend of taking random important buttons and hiding them unless you hold the option key. It's so bizarre that they think this is a good idea. Finding detect displays always requires a google search. They also did it for the Library entry in Finder's "Go" menu.

<comment><USER4> I think this is often the result of conflicts between management. One manager wants to have a clean interface and says get rid of the "detect displays" button. The other says that detect displays is a important feature we can't get rid of. What we get is the compromise that is worse than either option.

<comment><USER5> Maybe, though here's another take: "Detect displays" is confusing. I don't even know what it does. The option key is for people who already know what they want and isn't meant to be discoverable.

</comment></comment></comment><comment><USER6> This feels like a list of complaints -- some legit, others not so much -- that don't support the very major conclusion that Apple has a "declining aptitude for the discipline of user interface design."

If you're going to draw that sort of conclusion, you need to support it with a _lot_ more than just a laundry list of stuff like "progress bar animations are more difficult to see" and "drop shadows are lighter."

<comment><USER7> I upgraded from Mavericks to El Capitan the day before Part I of this article appeared, and many of the points it raises are descriptive of difficulties I've encountered. The argument isn't about aesthetics, it's about functionality, a reduction in ease of use. The guy said there were many more things he could list, and I believe him, because some of my own complaints weren't on his list - some more serious than others. None is a show stopper. We Apple fans just wonder what is the reason why. It looks like change for the sake of change, with entropy included.

<comment><USER8> "The argument isn't about aesthetics, it's about functionality, a reduction in ease of use."

this. the problem is the functionality is the visual appearance of the system, so they hire visual artists who think in terms of aesthetics, not design engineers who think in terms functionality and easy of use.

</comment></comment></comment><comment><USER9> What I find interesting about this is that Windows manages to achieve all these goals (most of the time) while having a flat modern design. High contrast, responsive feedback, Windows 10 has that. Of course Windows falls short in other areas like consistency, or stupid things like have a control panel and a separate settings menu.

</comment><comment><USER10> My impression is that it all started much earlier. The old Apple (classic Mac OS) had very strong interface design culture and it continued into early releases of Mac OS X, but the decline began to feel in v10.6, I think, if not earlier.

Take, for example, the new search interface, where you first type a query, wait a little while it's hitting the search index, and only then get shown a button to choose the search options. Compare it with the old search utility (from the classic Mac OS) where you have both ways (simple and advanced) right from the start. The new way was already a crime unimaginable in classic Mac OS. Yet it happened, and I've just checked it -- it was in v10.4 in 2005.

Cultures die slowly, so the wrong turn has probably happened much earlier than the author thinks.

</comment><comment><USER11> Nobody has said it yet, so here goes ...

Steve Jobs warned about having "bozos" in a company. Perhaps there are just too many of them working at Apple now that Steve isn't around to fire a few every so often?

[http://www.forbes.com/sites/ericjackson/2012/01/31/why- every...](http://www.forbes.com/sites/ericjackson/2012/01/31/why-every- company-needs-a-no-bozo-policy/)

Edit: Found something. Here's a research analyst making the same point: [http://www.streetinsider.com/Analyst+Comments/Is+Apple+(AAPL...](http://www.streetinsider.com/Analyst+Comments/Is+Apple+\(AAPL\)+Being+Run+by+a+Bunch+of+Bozos%3F/11185478.html)

</comment><comment><USER12> I'm not a design expert or necessarily even design literate. Stating up front: I understand the importance of design and think it's a super important profession. If anything, I'm envious of people who have the ability to practice good design.

I have to say that when I read stuff like this it kind of scares me away from trying to become fluent enough in design to practice it, because of where subjectivity seems to hide. I think I understand the principles of contrast, hierarchy, balance, scale, feedback, etc. in theory, it just seems very difficult to holistically judge a design that may be emphasizing different attributes to achieve these characteristics.

Take the complaint about button weight:

> Where thick, dark borders and arrow glyphs used to bulge the buttons toward > one's eye, the buttons now "weigh" so little that to distinguish them is a > chore. The same goes for other buttons throughout OS X.

The borders may appear lighter in the displayed photo, but how can I judge contrast without seeing the contrasted element(s) (i.e. the surface on which the buttons rest, the positioning from other UI elements, etc.). Also in some ways, there seems to be more contrast in the new buttons. For instance, the button shapes seem to contrast from each other by not being cutouts of the same rectangular shape. Perhaps that's the only contrast that's really matters here, since another form of contrast may be in place to distinguish this button group?

Similarly the discussion about drop shadows is difficult for me to grapple with. What are the drop shadows on the dock doing for me? It seems like a drop shadow is useful for distinguishing mutable elements (UI controls) from static content, but the dock only serves to launch applications. As a user of Apple products for years, I'm innately trained to understand this, but perhaps this is untrue of a first time macbook owner? I understand that experimental design to test these kinds of things is very difficult, but perhaps it'd be a more convincing argument with some supporting evidence.

Or take the complaint about feedback with the "New Folder" button in Notes. It's true enough that there's no visual feedback on the button itself, however when you click the button a highlighted text field appears above, waiting for you to enter in the folder name. I sort of understand this complaint, but when I tried to play devil's advocate I came up with the explanation that the feedback was actually drawing attention to the next task I needed to do (i.e. naming the folder) instead of the button itself. Which way of seeing this is valid?

I feel like these kinds of conversations are very interesting and important for making design decisions that benefit the largest number of people, but it seems like the conversation often relies on subjective judgements on design elements that could be argued either way.</comment>


Roubini Senate Testimony "Exploring the Cryptocurrency and Blockchain Ecosystem" [pdf] - <AUTHOR> https://www.banking.senate.gov/imo/media/doc/Roubini%20Testimony%2010-11-18.pdf <comment><USER2> Not sure he is particularly qualified and for the record he did NOT predict the 2007 - 2009 market crash. By any financial metric the 1999/2000 internet bubble was WAY bigger - if indeed crypto will become one.

<comment><USER2> "...he predicted 48 of the last 4 recessions..." [https://www.jstor.org/stable/24563227?seq=1#page_scan_tab_co...](https://www.jstor.org/stable/24563227?seq=1#page_scan_tab_contents)

</comment></comment><comment><USER3> Yawn... he forgot to mention the five preceding crypto bubbles that brought us to this one.</comment>


Ask HN: What are the unwritten responsibilities of being a senior developer? - <AUTHOR> E.g. even if you're just discussing an idea or making a suggestion, your words have extra weight and some people will find it hard to disagree with you. <comment><USER2> Keep in mind it's a made up term by your current company and no qualification whatsoever. And so it varies a lot between different companies what the meaning of the word senior is! Senior there, junior there, no title/rank there.

Sincerely a CEO of my own company :p</comment>


Ask HN: How to find a co-founder? - <AUTHOR>

I find people everyday that are interested in working with me, but most of them just lack enthusiasm to like, run a company(which is a difficult task). How did you find your co-founder?
I find that sometimes I get people amazed by what I'm developing, I get asked by them to participate. I let them in and after some weeks I stop seeing results from that person(that sucks). How to deal with that?
Is there a website to find motivated and skilled people to find it? :) <comment><USER2> [http://www.google.com/search?hl=en&q=site%3Anews.ycombin...](http://www.google.com/search?hl=en&q=site%3Anews.ycombinator.com+find+cofounder&aq=f&aqi=&aql=&oq=)

<http://www.startupwithme.com>

are two thoughts that come to mind...

And my response to somebody asking specifically about how I've been going about my search for (a) co-founder(s):

<http://news.ycombinator.com/item?id=2416405></comment>


Spanish Wikipedia also shuts down in protest at proposed EU copyright law - <AUTHOR> https://es.wikipedia.org/ <comment><USER2> The web is becoming more and more fragmented. I wonder where this will lead to. Europe seems to fall behind the US at an accelerating pace. During the last two decades, Europe already failed to take part in building the internet. Now Europeans all use US services. Amazon, Ebay, Facebook, Google, Dropbox, AirBnB, Uber...

This was due to the culture of Europes entrepreneurs which is often "bureaucracy first, product later".

Now lawmakers seem busy putting another burden on top of that. Laws that put Europe behind the rest of the world in how easy it is to build online services.

Where will Europe be in 20 years? Will it become a developing continent of the digital area? Or will German Engineers somehow make up for innovation via assiduous execution? I find it hard to see how that could work.

Politicians might think 'Now that we have the web, lets regulate it'. But I wonder: Now that we lost the web, how will we avoid the same with AI? AI will have orders of magnitude more impact on our lives then the web. How will we avoid losing crypto? In the age of crypto, people might freely chose what currency to use. Do we want the worlds currency to be owned by a US company? How will we avoid losing biotech? Will the same happen to our bodies that happened to our data? Will they be owned by a handful of US companies?

<comment><USER3> The EU says sorry for making Linux

<comment><USER4> To be fair, there wouldn't be any Linux without Unix & C, but there would definitely exist many other "Linux", e.g the __superior__ FreeBSD. Not diminishing Linux's achievements in any way. :-)

<comment><USER5> One could say, to be fair, there wouldn't be any Unix & C without the mathematics of Gottfried Leibniz from Germany. This discussion is ridiculous.

[https://www.google.com/doodles/gottfried-wilhelm- leibnizs-37...](https://www.google.com/doodles/gottfried-wilhelm- leibnizs-372nd-birthday)

</comment></comment></comment></comment><comment><USER6> I think it should be noted that this is the entire Spanish language Wikipedia, not Spanish as in "from Spain", so this shutdown affects a lot of people (estimated 350 million native Spanish speakers worldwide).

I haven't seen the community discussion that led to this decision, but assuming that it was democratically decided across collaborators from the entire Spanish-speaking world, I think gives the protest a lot more weight than the title may suggest.

<comment><AUTHOR> I totally agree and it was actually the reason that I submitted it. I tried to read something from Wikipedia _en español_ and got that even though I'm not in Europe. Do you think that the title "Wikipedia in Spanish also shuts down in protest at proposed EU copyright law" is better? My English is not good enough to be certain that sentence is correct.

<comment><USER6> What about "Spanish language Wikipedia also shuts down in protest at proposed EU copyright law"?

</comment></comment></comment><comment><USER6> Translation of the shutdown text:

Dear reader,

On July 5, 2018, the plenary of the European Parliament will vote on whether to proceed with a proposal for a directive on copyright. If approved, this would significantly damage the open Internet as we know it today.

Instead of updating copyright laws in Europe and promoting the participation of all citizens in the information society, the directive would threaten online freedom and impose new filters, barriers and restrictions on access to the Web. If the proposal was approved in its current version, actions such as sharing a news article on social networks or accessing it through a search engine would become more complicated; even Wikipedia would be at risk.

So far, dozens of relevant people in the field of IT have strongly opposed this proposal - among them the creator of the WWW, Tim Berners-Lee, and the Internet pioneer, Vinton Cerf - 169 academics, 145 human rights, press freedom, scientific research and technological development organizations, and the Wikimedia Foundation, the non-profit organization that promotes this encyclopedia, among other projects for free knowledge.

For these reasons, the Spanish language Wikipedia community has decided to shut down all the pages of the encyclopedia before and during the vote, i.e. until 10 am (UTC) on July 5. We want to continue offering an open, free, collaborative and free publication with verifiable content. We call on all Members of the European Parliament to vote against the current text, to open it up for discussion and to consider the many proposals of the Wikimedia movement to protect access to knowledge, including the deletion of Articles 11 and 13, the extension of freedom of panorama throughout the EU and the preservation of the public domain.

In other countries of the Spanish-speaking world, such as Colombia and Mexico, the Wikipedia community has recently opposed similar proposals. We ask you to keep up to date with their development and support this effort.

For more information on the campaign in the European Parliament and how to act, visit [https://meta.wikimedia.org/wiki/European_Parliament_vote_in_...](https://meta.wikimedia.org/wiki/European_Parliament_vote_in_2018/es). You can follow the communication on social networks with the tags #WikipediaSeApaga, #SalvemosInternet and #SaveYourInternet.

The Spanish Wikipedia community

</comment><comment><USER7> Same for Polish one ( pl.wikipedia.org )

<comment><USER8> This is a very important comment, as it means the initiative is "snowballing".

It's a shame it's buried behind pointless discussion on whether the EU has internet giants.

<comment><USER9> I'm European, and pro-EU. Yet, everyone I respect in my inner circle is crystal-clear about one thing: EU has lost. There's US, there's CN... and a big hole where EU should be. In technology, EU is not a contender, and will never be. Demographics and culture prevent it. I've worked extremely hard to change this for four years, but I have given up.

<comment><USER8> it may be, but it's only tangentially related to the topic at hand.

</comment></comment></comment></comment><comment><USER10> We seriously need a (law compatible) system to punish lawmakers, in a way that they would never even think to touch basic rights like freedom of speech. Having a constitution or a democracy is clearly not enough. That's the next step for a just world.

<comment><USER8> It is arguable whether this impacts freedom of speech, and it would be argued differently in different jurisdictions.

<comment><USER11> It absolutely does - when this same law was implemented in Germany as a national law it was struck down by the constitutional court.

<comment><USER8> Germany is not all jurisdictions, that is the point.

</comment></comment></comment></comment><comment><USER12> It's implemented as a JS redirect to:

[https://es.wikipedia.org/wiki/Wikipedia:Comunicado_4_julio_2...](https://es.wikipedia.org/wiki/Wikipedia:Comunicado_4_julio_2018)

If you have JS disabled, everything works as usual.

<comment><USER13> Ah, I was wondering why it looked fine to me. Disabling JS wins again!

</comment></comment><comment><USER14> I have javascript deactivated on wikipedia, it doesn't redirect me to the notice page [1]

[1] [https://es.wikipedia.org/wiki/Wikipedia:Comunicado_4_julio_2...](https://es.wikipedia.org/wiki/Wikipedia:Comunicado_4_julio_2018)

</comment><comment><USER15> Obligatory xkcd: [https://xkcd.com/2015](https://xkcd.com/2015)

Upload filters would edit our posts silently and we would have no recourse.

</comment><comment><USER16> The most likely result from these shutdowns is that people will just google for what they were looking for. And in stead of more or less correct information will get whatever shows up. (For example looking up vaccines will get some antivax stuff)</comment>


Eyes In the sky(awesome project) - <AUTHOR> https://medium.com/@ravensley14/fa91b94c914d

<comment><AUTHOR> what do you guys think?</comment>


Using unix as your IDE - <AUTHOR> http://blog.sanctum.geek.nz/series/unix-as-ide/? <comment><USER3> On the one hand, I'm pleased that someone is posting this in the new-fangled bloggy tutorial style popular among the youth of today. It's nice to see my preferred environment evangelized.

On the other, it's a giant facepalm that the simplest, best documented, most powerful development tradition of the last 40 years actually needs this treatment. That there is a whole generation of developers who come out of school thinking that "building" is the action of pressing a button in an IDE GUI (and that "writing a program" means launching a big wizard that pukes a dozen files into a new directory) is just depressing.

Oh, and get off my lawn.

<comment><USER4> My problem with make and autoconf, as a young student, was the difficulty of finding quality, intermediate examples. Textbook examples were trivial, professional examples were too dense to understand. There was nothing to bridge the gap.

Trying to read the configure scripts and Makefiles for software like Apache httpd server was overwhelming. There's obviously many man-months of work there as well as unknown styles, conventions, and tricks.

How (and why) would I go from "gcc -lexample -o program csci201.c" and maybe a simple Makefile to a 10,000-line ./configure script? I never had any idea.

<comment><USER5> Fortunately there are better build systems available nowadays. CMake is a lot easier on the beginner, and yet it is used by large projects like KDE.

<comment><USER6> Sadly, my experience with CMake makes miss the otherwise annoying make.

This is mostly from trying to compile tar balls that used it. It didn't seem to give error messages for missing parts as well as simple make.

</comment></comment></comment></comment><comment><USER7> I don't want to dis IDE makers. There are folks such as jetbrains that make an amazing product. But at the end of the day, for us linux-type professional developers, it's all text. You have maximum leverage with unix text editing tools. Refactoring 50 files at once by doing something like:

      grep -lR 'old_method' | xargs sed -ie 's/old_method/some+other()+expression/g'

is just plain awesome. Want to find out what libraries a process is using?

      cat /proc/$pid/maps

Want to find out where that process is logging to?

      ls -hal /proc/$pid/fd/

Basically it's often hard to use a gui ide to accomplish an arbitrary task if the IDE wasn't built for it, or if no one has taken time time write plugins. At the risk of gushing, the command line is just one of the most extensible, composable environments ever invented, and it's success over the past 40 years proves it.

<comment><USER8> I really love console, but I don't think that command is so awesome (don't tried it so I'm asking just for curiosity): What if you only want to refactor Class1.Foo() method while not changing Class2.Foo()? That is, could you refactor taking context into account with the CL?

I use Visual Studio to develop for WP7, and refactoring is even more awesome: change any name, click the little popup (non-intrusive at all) and select refactor. Done. Not only in that file, but also in your project and any other project you have opened.

I'm not trying to bash command line tools (I'd really love to know them better), but I think that there are things that are far easier with a graphical IDE.

<comment><USER9> "I'm not trying to bash command line tools" hehe

"if you only want to refactor Class1.Foo() method while not changing Class2.Foo()"

vim has functionality for scope in most languages (see [http://vimdoc.sourceforge.net/htmldoc/eval.html#internal- var...](http://vimdoc.sourceforge.net/htmldoc/eval.html#internal-variables)). If vim doesn't have the functionality, it is a one-liner in your config file.

Additionally, there are language-specific vim refactoring options such as eclim (eclipse functionality in vim and vice-versa) for java, and rope/bicycle repair man for python

edit: on a side note, these religious discussions are great for unearthing great links and cli tricks!

</comment></comment></comment><comment><USER10> This is more or less exactly my approach. gnome-term, vim, and since this is a web app, a testing environment of Apache, Chrome and/or Firefox, etc. Between proper usage of vim, shell tools (grep, find, etc) svn, etc. I can put together the best of breed tools to form a really, really good development environment.

</comment><comment><USER11> I agree that many underestimate the power of bash for development. Make, in particular, is much more widely usable. However, there are some things that I find very convenient in an IDE that are harder to do at the command line. Finding usages of a name (variable or function); finding the definition of same. Renaming same throughout the code base. Yes, I know about "find | xargs grep", but it's a bit more convoluted than IDE usage. Maybe I just don't know enough. Can anyone point to command line or vim tools to accomplish these tasks? Code analysis and warnings are another thing IDEs seem to do better.

<comment><USER12> I'm going to be a tad pedantic and note the following:

\- bash and make are completely separate programs. As a matter of fact, I spend half of my time developing with ksh and Solaris make. The two programs you mention don't go 'hand in hand'.

\- `find | xargs grep` is a terrible construct. 99% of the time (if not a lot more) you'd prefer using something like `find -exec`, I have yet to come across a version of `find` that wouldn't work that way.

My point is not to be an arrogant prick, and criticize the parent post. These kind of misconceptions usually indicate poor understanding of the larger Unix philosophy. By her own admission, my parent "just do[es]n't know enough".

I believe that in order to truly use Unix as an IDE, one has to go beyond the (arguably bad) reflexes taught by common GUI IDEs. It's not simply a matter of "What command can replace feature X from Netbeans/Eclipse/Visual Studio/...?" Modern IDEs weren't conceived with sed/awk in mind, aren't (for the most part) scriptable like most Unix shells are, and aren't sitting on top of a freaking Lisp machine like emacs is (you know the whole enlightment deal, lisp is superior, bla bla bla).

I am sounding like an evangelist, Unix tend to do that to me. I am trying to make a simple point:

It's normal to feel that something is missing if one is simply transposing her knowledge from point-and-click IDEs to the Unix shell.

(To answer your question, a combination of sed and awk does wonder to rename across the code base. And SO much more ...)

<comment><USER13> There needs to be far better evangelism/PR to tell people the right way to do all these things so that they understand how to do all the IDE stuff, the truth is that the number of use cases people need is not unlimited... of course it is good to know the full range of flexible tools, but it's far from obvious to most people whether or not find | xargs grep is good or not, or how to do a method rename

<comment><USER14> _of course it is good to know the full range of flexible tools, but it's far from obvious to most people whether or not find | xargs grep is good or not, or how to do a method rename_

It's also far from obvious whether a for or a while loop best fits the problem at hand. How does one figure these things out? By learning about the tools/constructs and using them (experience). Furthermore, it is expected of software developers to know these things.

It's all well and good to be an IDE jockey, but being a software developer entails more than clicking through wizards and filling in some logic. Learning tools (such as UNIX CLI tools) opens up a whole other world of untold power in accomplishing not just programming tasks, but everyday tasks as well (how many people know that there is a CLI unit conversion program that not only has more units than you can shake a stick at, but is scriptable and has a tiny footprint to boot?). Not to mention that these tools have been around and ported to just about everything, and will probably continue to be around for ever, and eat less RAM and CPU while being more flexible and powerful than their GUI counterparts.

Edit: I didn't mean to come off condescending and scolding, but I forgot to insert some helpful links in response to your statement that there should be better evangelism/PR for shell programming; hope these links fit the bill:

<http://www.bashoneliners.com>

<http://www.commandlinefu.com>

<http://www.shell-fu.org>

<http://noone.org/blog/English/Computer/Debian/CoolTools>

<http://noone.org/blog/English/Computer/Shell>

<comment><USER13> You don't have to sell me on using the shell at all and I have seen one-liner databases (which are really only fun once you have a pretty good level of mastery)

I find that IDEs make everything so needlessly complex and inflexible - <USER2> don't want 2000 little icons in 200 drawers managed by 54 XML files that I will eventually be expected to edit.

The observation is that they are winning anyway. In fact, people even think they are easier, AND they think their IDE does things that can't even be done otherwise! These people are smart enough to develop software, yet they are opting for what we think are dumb tools. Either we are just wrong, or there is just a misunderstanding about the relative easiness of IDEs.

I think that commercial platforms and products aimed at consumers (including developers) tend to have people paying careful attention to marketing and experience, to add a layer of glitz and wow and accessibility. It isn't that it could not be done but no one is bothering, once you know the efficient way then there is no point dressing it up.

I also think we have built up a culture which is somewhat punitive to newbies. Too many people treat programming and composition of command line tools as some kind of dick swinging competition rather than the inherently simplest and most straightforward way of doing things, which is SUPPOSED TO make your life easier and let you do things you couldn't otherwise do.

</comment></comment></comment></comment></comment><comment><USER15> Previous submission:

<http://news.ycombinator.com/item?id=3594098>

<comment><USER16> Thanks alot for that link, it lead me to this very interesting talk by Brent Victor, as kind of a counter argument to that principle: <http://vimeo.com/36579366>. And holy shit does he have a point. Many of today's programmers seem to be trapped in the thinking that the unix and vim principles are the holy grail, forever to be pursued, never to be changed. Isn't it time we stand up and reassess the tools we have? And I'm not just talking about the teleprompt generation tools like unix and vim, but also today's IDEs that have basically evolved as extensions to those tools.

I also recommend the following talk about "subtext": <http://www.subtextual.org/subtext2.html>.

<comment><USER17> I would argue that very few of today's programmers really follow the Unix philosophy, but those I know who do would likely agree that our tools should be reassessed. But you seem to be conflating the idea of reassessing our _tools_ and reassessing our _principles_. In my opinion the core principles [1] are eternal, however transient the programs themselves.

[1]: <http://en.wikipedia.org/wiki/Unix_philosophy>

<comment><USER16> I'd argue that the tools (if they're 'good' in itself) reflect the principles with which they have been designed. And no, I don't think that these principles are eternal. We should look at the context under which these principles have been formulated or evolved, compare it to today's context, pick out the principles that still apply and throw the rest out. As an example, building small programs to do well defined, easily testable tasks and chain them together, is certainly still a good design principle. Strings as the universal interface, however, is not in my opinion, since it just doesn't reflect how most of today's UIs are built on objects - thus we have today's disconnect between the terminal and the GUI.

<comment><USER17> You believe that text as a universal interface isn't a good design principle because it doesn't reflect how other UIs, built upon completely different principles, behave? Is it not possible that it remains a good principle that WIMP GUIs simply do not adhere to? (Also related, "everything is a file.")

<comment><USER16> Unformatted text (as in text that doesn't follow a machine-understandable format like xml or json) is not a good interface today, I absolutely believe that. Imagine if "ls" would return an xml table that you could easily reuse in other programs, including graphical editors. Imagine that the OS could understand what every column represents and give it a name. You could do something like

ls | showtable in.modified in.filename --sort:1.

Of course you can do this today with sed, but in a very unintuitive way not easily accessible for beginners.

</comment></comment></comment></comment></comment></comment><comment><USER18> By becoming dependent on "IDE's" you are only making it easier for companies to control you. As developers you are important and companies want to have some control over what you do. That was Microsoft's original plan and it has worked beautifully.

They were quick to provide an OO environment where someone could create something "impressive" very fast. A little eye candy is all it takes to impress many developers and users. And that's all she wrote. They beat everyone else to the punch. To this day, IDE's and OO programming still rule. And MS's mysterious API's are still very much a competitive advantage, tying programmers to the MS IDE and platform. They control you.

The unfortunate result of this over a long period is that today's developers are a lot less knowledgeable about how to build things from the ground up. Take away their IDE and they can't really do much.

If you want to create something truly "new" and push the envelope (think systems programming), then you need to start at a lower level than the IDE where someone else has handled the low level details for you. (Who built those objects anyway?) A recent post here on HN said that the most talented programmers are the ones who can move from different levels of abstraction effortlessly. From very high to very low and back again. The IDE keeps you in a box. One level of abstraction. Dirty low level details are scary to many developers.

IDE's are useful. They increase productivity exponentially. But if we take away your IDE and you are helpless without it, that's a problem from a progress standpoint (e.g. new systems development). Companies like MS are controlling you and controlling the rate of progress. And they have an incentive to maintain status quo. The envelope does not get pushed.

</comment><comment><USER19> I always think of unix as the Disintegrated Development Environment, and I'm happy to keep it that way. Every time I go down the rabbit hole of trying to integrate build, debug and edit into a single tool, I eventually go back to using individual commands.

</comment><comment><USER20> My understanding is that Emacs is not really Unix in flavor or mentality. GNU's not Unix, remember. :-)

To the best of my knowledge - i.e., I've read somewhere - Emacs is a derivative in style from Lisp Machines at the MIT Lab. It's not really a Unix program.

<comment><USER3> Unix is an aesthetic. It's squishy. Emacs is a text editor. Editing text is very much a Unix Thing. Emacs does a lot of other crap too, most of it (email, terminal emulation, IRC...) intended to replace or augment some other core Unix Thing. Is putting all those Unix Things into a single box (that isn't unix) a Unix Thing? Probably not, but most of us forgive emacs that transgression. Don't use the crap that doesn't fit your world view, and it remains a unix tool.

Emacs predates the Lisp machines, btw. The original was written (as TECO macros) on ITS. The Lisp machines came out of the same culture and thus had their own emacsen. But GNU Emacs that we are all using today was written on Unix from day one.

<comment><USER21> However, Emacs still holds on to all the unique ITS key combos, which is why I always hit ^W and wonder why that word didn't get deleted.

There's a public access ITS system over in Sweden, or you can grab an emulator and run it yourself. I recommend trying it just so you can see how Emacs and Info have remained essentially the same (RMS's sad devotion to that ancient religion, etc)

</comment></comment></comment><comment><USER22> The author mentions that ack "allows you to use Perl-compatible regular expressions (PCRE)" in contrast to grep. I want to point out that grep does too, or at least the versions on Linux and Mac OS X, when the -E flag is used. I don't know if it actually uses the PCRE library or if it even uses the same character class shortcuts that Perl does, but it's at least modern in the sense that it uses (...) instead of \\(...\\) for grouping and {n,m} instead of \\{n,m\\} for specifying the number or range of occurrences, as well as + for {1,}, etc.

Edit: Slight fact correction. The author of this article led me to believe that ack uses Perl Compatible Regular Expressions, which is a C library that implements a regular expressions system whose pattern syntax is very similar to what's found in Perl. Now that I've read ack's website, I see that ack is written in Perl and actually uses Perl's regexps. The author must have just meant that ack's regular expressions are literally "Perl-compatible."

<comment><USER23> grep -E is just extended regex, which is also a million years old. grep -P, for some versions of gnu grep, will get you the experimental perl compatible regexes.

</comment></comment><comment><USER24> For a time, Unix was specifically developed _as_ an IDE; the PWB/UNIX system was basically a version/distribution of Unix intended for development, even of programs for other machines like the IBM System/370.

Time marches on, however; and modern IDEs offer rich tools like refactoring capability, in-place documentation (IntelliSense) and fully integrated debugging tools that are a considerable evolution from what was available in the 1970s, that can only have come from having all the tools be aware of the language that's being used. From dumb, simple tools that munge streams to text to smarter, context- and semantics-aware tools that operate on program representations -- that's progress. Accordingly, Unix itself is no longer an acceptable IDE.

</comment><comment><USER25> vim but .. No cscope? I am disappointed. cscope is a power tool when it comes to editor-integrated development.

<http://cscope.sourceforge.net/cscope_vim_tutorial.html>

I have cscope+vim+make/build+gdb+logging windows on auto-open for my developer desktop terms, and spend a lot of time navigating large codebases with cscope in all its incarnations. If you like this article, but haven't heard of cscope+vim, give yourself 30 minutes to check it out ..

<comment><USER26> cscope is great. It would be even better if they supported more languages.

</comment></comment><comment><USER27> "X as your Y" is a sign of good architecture in X.

You can consider Unix as a collection of hierarchically organized entities that can act as nouns and verbs. To develop in this system, all you need to do is to add verbs for text editing and compiling.

BeOS/Haiku has this versatile property as well. In fact, you can use BeOS as your media player/mail client with no app at all.

Python and Ruby are built with this quality. There is tremendous power in their REPL. The language is somewhat its own advanced debugger.

Smalltalk is much like Unix, with its structure of nouns and verbs and a REPL everywhere. This is precisely why the Smalltalk compiler is just another first class Smalltalk Object.

Any app like an IDE is actually something like a design pattern. It's actually a symptom of something _lacking_ in your language/substrate. This isn't something bad or wrong, because kitchen sink architectures have their own drawbacks. It's also possible for a system to be too generalized.

Rather, the sign of something wrong (or conversely the sign of something right) is the extent to which you are building everything yourself or composing pieces that are already there. To what extent are you building together your own, and to what extent are you exploring powerful tools that are already there and putting them together to get things done?

Being able to do the latter is the definition of power in most contexts. The too much need for the former is pathological.

Unwieldy IDEs, app servers, dependency management, etc -- this is all a sign that something needs to be improved.

</comment><comment><USER28> Powerful as the CLI might be, what are the CLI ways of:

\- replacing Foo just in specific modules/classes

\- finding the call stack of a specific function/method even across closed source binaries

\- provide a visual overview of modules/classes dependencies

\- GUI design

\- code refactoring

\- debugging with hot code replacement on the fly

\- browsing symbols in object files / binary modules

</comment><comment><USER29> I'm in the process of completely switching over to the development style described in this article (I read it last weekend). I started typing a response to this and accidentally ended the first sentence with a semicolon, if that gives you any indication of where I am at in this process. I'm at a PHP/.Net shop doing LAMP development and everyone else here simply installed Ubuntu or Windows XP/7 then Eclipse, checked out the code from SVN and started working. I installed Ubuntu fairly quickly but then got fed up trying to get Eclipse and a bunch of PHP plugins working together. That was a complete waste of time in my opinion; at best I would be learning Eclipse and Ubuntu. I switched to Vim for all of my editing needs about 16 months ago when I was taking a useless Perl class, so I started using that daily at work. 8 months of 40 hour work weeks later and I'd say I'm pretty decent at it now. Two months ago I got fed up with the awful window management in Ubuntu and switched to Xmonad. Configuring my window manager by writing Haskell and recompiling it is preferable to watching some other piece of garbage break or crash constantly and wasting time moving windows around with a mouse for the rest of my life. Shortcuts didn't help; working with the default keybindings in Ubuntu for web development on a single screen hurt my hand enough to buy a different keyboard, but it was still glitchy enough to be a daily annoyance.

My development environment currently consists of Ubuntu/Arch Linux (haven't switched at work yet), Tmux, Vim, Xmonad, Urxvt and Zsh. The only sane way to start moving towards using these tools is to use one new tool at a time, see which defaults annoy you and then customize it to your workflow. I would definitely not start with anyone else's default settings (Janus for Vim or Oh- My-Zsh) unless you just want to see what these tools are capable of. Last week I completed a full productive workday without touching my mouse except to move it out of the way and over the weekend I had to work from home at this job for the first time. I had my ssh tunnels and keys setup already so it was a simple as attaching to my tmux session from work and continuing where I left off.

The reason I am going through this process is to learn more about Linux/Unix but more importantly I am sick and tired of setting up programs on computers, learning settings and modifying configurations through guis that change at the developers' whims. I don't need or want a system that anyone can use; I want a system that works the way I think with my exact hardware. The best benefit of doing all this is that I can actually learn and understand what my tools are doing and remove as many abstractions as I can handle. Most recently I learned about strace; I always wondered how people came up with answers to Linux questions about random dependencies.

</comment><comment><USER30> I like the article as I am also a command line junkie, but I have an issue with it. I might be being pedantic here, but the fundamental premise of the article is a falsehood.

UNIX is in no way, shape or form an IDE. IDE stands for Integrated Development Environment and means exactly that. All your tools under one roof.

I do not deny and in fact would also assert that the separate tool chain / everything is a stream of bytes philosophy can be used in amalgam as an incredibly powerful methodology for software development, but that doesn't make it an IDE.

<comment><USER31> > UNIX is in no way, shape or form an IDE. IDE stands for Integrated > Development Environment and means exactly that. All your tools under one > roof.

agreed. if anything, it's a UDE: Unintegrated Development Environment. which is it's strength and weakness. the initial learning curve is steeper than with an IDE, maybe, but you don't run into these painful low ceilings like with an IDE. so much synergy & integratability in the CLI paradigm. pick and choose. customizable UX, custom workflows, automation, and typically much less opaque configuration, lower idle cpu and memory use, etc.

</comment></comment><comment><USER32> Surpised tmux wasn't mentioned in the list of core tools; Author has written about it before it seems. tmux is _the_ key to building an IDE in *nix for me.

<comment><USER22> I've been using GNU screen for years and am happy with it. A brief bit of Googling suggests to me that the main advantages of tmux over screen are that its code is designed better and that it's actively maintained and, therefore, less buggy. It also seems like its configuration is more logical. As someone who has already configured screen to my liking and who hasn't run into noticeable bugs, I don't have any real reason to make the switch if those are the only advantages. Are there others? (e.g. better features, etc.)

<comment><USER33> For me, tmuxinator[1] is a huge advantage. I can easily define environments suited to various tasks and projects, launch them easily and lose none of tmux's power in the process.

For example, my 'work' setup is very IDE-like; when it starts it mounts my dev VM (nfs), starts vim, opens windows for logs, database client, SSH to the VM, source control (tig and git).

[1] <https://github.com/aziz/tmuxinator>

</comment></comment></comment><comment><USER34> The full series: <http://blog.sanctum.geek.nz/series/unix-as-ide/>

</comment><comment><USER35> Yeah. POSIX shell is my IDE of choice too. So I agree with it. Although there is one exception - development in C#/.NET which is only environment in which I wouldn't code with anything else than Visual Studio. :) But maybe it's just a matter of way I was tought to use it, with all those one click - hundreds LOCs stuff. So I can't imagine coding in .NET without it.</comment>


Tiny Scala Primer - <AUTHOR> http://people.rit.edu/~awd4182/scala_handout.pdf

<comment><USER2> Also note, Scala makes tutorial-breaking changes to the language approximately every day. I've never found a Scala tutorial in which all the code works. Ever. I'll give this one a try, but... not hopeful.

<comment><AUTHOR> Hey, I'm using 2.7.5 and it worked for me. There's a tidbit of 2.8 specific code in there, but it's noted. I'm also the dude that wrote it, so if you have any problems or questions drop a line. Scala, for me, has been worth learning.</comment></comment>


Digital dashboard: Why your car's next instrument panel will be one big LCD - <AUTHOR> http://www.extremetech.com/extreme/131485-digital-dashboard-why-your-cars-next-instrument-panel-will-be-one-big-lcd?utm_source=rss&utm_medium=rss&utm_campaign=digital-dashboard-why-your-cars-next-instrument-panel-will-be-one-big-lcd <comment><USER2> Man, how could you assemble all those models and pictures and skip the dashboard on the Tesla Model S?</comment>


Mike Solana – Pirate Wires #6 (tech, anti-trust, censorship, etc.) - <AUTHOR> https://solana.substack.com/p/pirate-wires-6 <comment><AUTHOR> I certainly don't agree with all of the points made here but broadly I couldn't help nodding along reading this. For sure the congressional hearings were mostly farcical, at best fact-finding, at worse an effort to grab a few viral moments to use for campaigning this year. I also don't love where I see the left going with the hate on tech - for sure companies like Google, MSFT, Apple have some anti-competitive practices but the level of animosity for growth during a pandemic is mind-boggling. Of course they're growing, most of their business models are coincidentally helped in this situation and they've invested in the tools to grow further in a world where we're mostly stuck indoors, don't want to go to stores, etc. Generally, I read this and am just reminded how disappointed I am in the political situation in this country, all grandstanding and no substance, and if there is something done, it almost certainly isn't for the majority of Americans.</comment>


Show HN: UFO Detector – Capturing Aerial Anomalies Using Computer Vision - <AUTHOR> https://github.com/UFOID/UFO-Detector <comment><AUTHOR> I linked to the GitHub. The project website is at [http://ufoid.net/](http://ufoid.net/)

</comment><comment><USER2> cool idea, but the majority of the videos on the "videos" tab make me immediately wary of how useful this will be.

There's one guy (Mike_Egg) who owns the majority of the videos on the page. That in itself is suspicious, since if they were so frequent over a single location, we wouldn't need something like this to catch them. The videos are also VERY sloppily edited, though. Meaning they are feeding fake data to this system and having it flag artifacts they shopped in.

its a cool idea, but I'd maybe put some policing on your user-submitted videos to weed out the obvious fakes if you want to gain credibility that this system works

</comment><comment><USER3> I recognise this from the university, most impressive & intriguing final project of the lot - it was praised heavily by the lecturer too.

Bravo on the work, I'll put it to use for sure this summer.

\- 2nd year moving to 3rd

</comment><comment><USER4> This is really neat! I've long had a curious but skeptical interest in UFOs and I've wanted to see someone do something serious like this.

This kind of approach is the only way we will get actual non-garbage data on this subject. Photos with no pedigree are worthless since anyone with a paint program can fake them. Regular cameras just aren't suited to taking pictures of distant moving objects (try photographing a bird with your phone). Eyewitness testimony is unreliable. People keep claiming to see anomalous things but without real evidence we can't draw any conclusions other than a big "hmm..."

Unfortunately the success of something like this is heavily dependent on the quality of the camera used. Web cams are not going to give you any detail and cheap CCDs are prone to certain kinds of imaging artifacts.

Even worse a lot of consumer hardware either compresses images right away or runs the image through algorithms to smooth, blend, edge-enhance, color- correct, etc. to correct for artifacts present in cheap CCDs. Your "high quality" tiny cell phone camera is actually a mediocre CCD combined with a ton of software to enhance images to make them pleasing to the human eye. For a scientific instrument this is the last thing you want. You want raw data straight from a high quality calibrated sensor.

It would also be worth looking into gigapixel imaging either via gigapixel CCDs or low-artifact compositing algorithms to produce gigapixel images from multiple lower resolution sensors. Here's a few interesting links:

[http://project.pan-starrs.ifa.hawaii.edu/public/design- featu...](http://project.pan-starrs.ifa.hawaii.edu/public/design- features/cameras.html)

[https://www.theverge.com/2013/2/1/3940898/darpa-gigapixel- dr...](https://www.theverge.com/2013/2/1/3940898/darpa-gigapixel-drone- surveillance-camera-revealed)

These are going to be pricey but I'm there are enough people interested in this subject for a crowdfunding campaign.

Finally I'd prefer infrared. Due to the second law of thermodynamics anything using a lot of energy must reject waste heat, even if it's using some kind of yet-unknown or exotic means of propulsion. All the candidates I'm aware of for exotic propulsion would have enormous power requirements, lighting up like blinding spotlights in the infrared.

[http://www.projectrho.com/public_html/rocket/spacewardetect....](http://www.projectrho.com/public_html/rocket/spacewardetect.php#id --Strategic_Combat_Sensors--There_Ain't_No_Stealth_In_Space)

"The Space Shuttle's much weaker main engines could be detected past the orbit of Pluto. The Space Shuttle's manoeuvering thrusters could be seen as far as the asteroid belt. And even a puny ship using ion drive to thrust at a measly 1/1000 of a g could be spotted at one astronomical unit."

<comment><USER5> I don't think infrared would be good a idea, I saw an UFO a long time ago passing by close to my home in Peru, it stood still in the sky for a moment and then it flew really fast and lost track of it, what struck me was that it was totally silent, even stealth jets make a noise, the UFO movement was also graceful it didn't seem to be fighting gravity, I think they don't use propulsion, they have some way to manipulate gravity.

<comment><USER4> Unless they've found a way around the second law they would still have to reject waste heat. The second law is probably one of the very best scientific laws in terms of having been solidly and repeatedly proven.

The most efficient generators known are certain kinds of batteries and fuel cells at over 90 percent conversion. It's conceivable that some kind of exotic betavoltaic nuclear process like (I think) boron fusion could beat this by basically making electrons directly.

Still the second law says nothing can be 100%.

Let's assume 95%, which would be amazing. If you had a propulsion system that required 10 megawatts of power, you'd be rejecting 500 kilowatts of heat at 95% efficiency.

So that's a 500 kilowatt infrared light bulb!

10 megawatts is probably conservative. The only hypothetical candidates for exotic propulsion I know from physics have outrageous energy requirements. Even assuming many breakthroughs I would still assume them to be high.

I can see a 25 watt light bulb at some distance at night.

If (the positive hypothesis) what you saw really was artificial and really was maneuvering like that, it would have been very bright in the infrared.

I do think we can assume that anything visiting us is inhabiting the same universe and is subject to its laws. It's the only sane assumption. The alternative is things like "we are living in a simulation" and then anything goes so why bother.</comment></comment></comment>


The Arab uprisings of 2011 are like the European revolutions of 1848 - <AUTHOR> http://www.slate.com/id/2285696/

<comment><USER2> Instead of trying to draw parallels to one wave or another, just recognize that it seems like we are in the midst of a revolutionary wave. These things happen every so often: <http://en.wikipedia.org/wiki/Revolutionary_wave>

The Wiki article is in the context of Marxism; I never learned this concept from that POV but the concept holds.

It's interesting to see the roles different technologies have played in these waves. Go back to 1848 and the industrial revolution and resulting urbanization are certainly one of many causes.

SMS played a key organizing role in the Color revolutions, especially in Ukraine. And now we're seeing Twitter/Facebook play a role. I think some people are exaggerating that role, but the role is there.

</comment><comment><USER3> In 1848 people were just tired and full of anger for the "world" they were living in.

In 2011 people are not just tired and full of anger for the countries they're living in, but they also have communication they never had before, which means they can work with each other, and organize efficiently as they never could in past (anyone watched 300 movie how small but coordinated army defeated big one?).

I wouldn't dare to predict what will happened in those countries after revolutions, but I dare to predict many more countries where people are tired of same bullshit years over years will take same path.

<comment><USER4> > but they also have communication they never had before

Funny you say that. People in 1848 also had "communication they never had before," and they could "organize efficiently as they never could in past".

From _1848: Year of Revolution_ by Mike Rapport:

> The speed with which the wave of revolutions swept across

> Europe was due to the wonders of modern technology. In

> 1789 it took weeks for news – carried, at its fastest, on

> horseback or under sail – for the fall of the Bastille to

> be relayed across Central and Eastern Europe. In 1848,

> thanks to steamships and a nascent telegraph system,

> reports were being heard within days or even minutes.

</comment></comment><comment><USER5> Hopefully, not quite like 1848, as those revolutions didn't go anywhere. Things are different now (more religious issues, more communication, ...), and they seem to go faster. Hopefully, people there get what they want (and remember, it might not be what YOU want).

<comment><USER6> In most of Central-Eastern Europe 1848 removed the last traces of feudalism, catalysed the "awakening" of nations, leading to the formation of nation- states some decades later. The nationalism ignited in 1848 is such a strong force until today that we find it hard to imagine what was before that. 1848 in Hungary turned into a war of independence from Austria, which although defeated, led to the formation of Austria-Hungary, a largely multiethnic entity, with relative stability and strong growth for half a century, but which proved to be unsustainable and whose breakup ignited the first world war (EDIT: the end of which sew the seeds of a further world war which had inside the germs of the cold war that would follow, etc. etc.)

<comment><USER7> Austria-Hungary was established in 1867

<comment><USER8> That was the formalization. Hungarian independence in 1848 was the catalyst (and is still celebrated today; I'm pretty sure that's March 17, but there are so damn many significant dates in 1000 years of Hungarian history that I frankly can't remember half of them).

The Hungarian independence of 1848 was really pretty damned cool, actually. It would have changed the world had it survived.

</comment></comment></comment></comment><comment><USER8> A single event in Europe two decades ago? "The abrupt withdrawal of Soviet support for the local dictator?" True of, what, _one country_? Romania?

Bah. The European 80's/90's were just as complex and messy as 1848.

<comment><USER9> The point is probably that the withdrawal of Soviet support is what connects all the revolutions in 1989 and 1990. Soviet tanks no longer came rolling in and crushed the revolts like before, in 1953 (East Germany), 1956 (Hungary) and 1968 (Czechoslovakia). There is, like in 1848, no such a central fact that connects all Arab revolutions.

I think that's a pretty superficial search for similarities. We don't yet know how the revolutions will work out and there are not that many examples in the history of revolutions spreading from one country to the next like wildfire. (I can actually only think of 1848 and 1989/1990. Does anyone know more?) To what extent comparisons to 1848 and 1989/1990 make sense at all is certainly questionable.

<comment><USER8> I know that's the point, but it's wrong - nobody knew what the USSR was going to do in 1989. I know, I was living in Germany and marrying a Hungarian wife that year, and when the border guards in Hungary said to each other one fine summer day that it wasn't their job to keep vacationing East Germans bottled up away from Western Europe, and that if East Germany had a problem with that they could just come over here and say that, neener neener - none of that had anything to do with the USSR.

And aside from Romania, there _weren't_ any dictators in the story. Hungary had had something like a Brezhnev figure in the 70's, but he was long gone by 1989 and there was just a Parliament. Same with East Germany - there was a Heimatssicherheitsamt (just a little joke there) but there was certainly no dictator.

And the crucial point is this - nobody knew that the USSR was going to wither up and blow away. This _caused_ the USSR to wither up and blow away - it could very well have happened that the tanks _would_ have rolled in by Christmas, but instead, the trucks rolled out and east.

In 1956, things worked exactly in this same manner - the people revolted, and only after a couple of months did the tanks roll in. (My mother-in-law was 10. She told me some stories. It will fry your American brain to realize your mother-in-law was playing next to stacked bodies one winter).

And actually in 1848 it was a similar situation.

Here, the expectation is that America's tanks will roll in - or at least their bombers will scream by overhead. They're not going to, though - and in that point, this wave is very, very much like 1989/90 in Europe. Each individual country has its own story. Some had people with their backs up against the wall, others just ... merged with their cousins.

To your second point - our own Revolution sparked off a few, France being one of them. And the European empires in Africa all fell within a few years of one another. When it happens, it changes maps.

<comment><USER10> Actually, Gorbachev had given a speech at the previous Warsaw Pact convention where he explicitly said that the USSR would no longer give military support to other Pact countries facing uprisings. After that, it was just a matter of time till the Iron Curtain fell (or Gorbachev was deposed).

<comment><USER8> Well, Gorbachev had said so, sure. And Gorbachev could _very_ well have come down with a really bad cold that autumn. Lucky for all of us (Gorbachev included), he actually managed to convince his hardliners - or things really _were_ that iffy in the Soviet Union.

</comment></comment></comment></comment></comment><comment><AUTHOR> When I studied modern history in High School our text book was called 'Frankfurt to Fra Mauro'. Fra Mauro was a landing site on the moon (where Apollo 13 was headed, iirc); Frankfurt referred to the convention in 1848 which attempted to combine the German-speaking principalities and nationalities into a unified 'Germany'.

While it didn't create that outcome (it took 23 more years), I guess the book saw that event (and similar European attempts in the same time period, with less alliteration) as being a key starting point. Of course, I'm not convinced current uprisings are comparable, (or aren't comparable for that matter, see <http://news.ycombinator.com/item?id=2239018>) but it's an interesting discussion.

</comment><comment><USER11> Cringely made a similar point last week. <http://www.cringely.com/2011/02/metternich-and-mubarak/>

</comment><comment><USER12> Similar reference to 1848 here: <http://www.amconmag.com/blog/dont-party-like- its-1989/>

</comment><comment><USER13> I wrote about this last week: <http://zerogov.com/?p=1538>

</comment><comment><USER14> There's a kind of hidden sense of superiority in this statement. Plus, it's wrong.

<comment><USER15> The opening paragraph of the article (since you just read the headline on hackernews apparently):

"Each revolution must be assessed in its own context, each had a distinctive impact. The revolutions spread from one point to another. They interacted to a limited extent. … The drama of each revolution unfolded separately. Each had its own heroes, its own crises. Each therefore demands its own narrative …"

<comment><USER14> I was referring to the statement in the title, yes - it makes it seem as if those countries are now finally having the revolutions we had a long time ago, which is not what's going on (clearly).</comment></comment></comment>