Almost Flat Design - <AUTHOR> http://www.matthewmooredesign.com/almost-flat-design/

<comment><USER2> The issue isn't skeuomorphic vs. flat design. Let's reframe it to be about the inclusion of affordances and constraints. What makes a tool easy and intuitive to use is the careful attention given to both enable and restrict the user from performing a set of actions. When a user clearly sees what he/she can or cannot do, they understand the purpose of what's in front of them. Gradients and dropshadows help with that, but even ignoring these aesthetic qualities, we have a whole host of other concepts to utilize, like consistency, proximity, structural heirarchy, and more conceptual digital analogs of real world entities.

Let's compare apples to apples: the iOS home screen to that of Windows. Let's go further and ignore the aesthetic differences, like gradients and dropshadows. What are we left with? The iOS screen has a table of app icons, all consistent in size and alignment. It's easy to see that at the highest level, _these are all applications I can access._ Let's look at Windows, more specifically the screenshot in the blog post. We see no consistency in size, and further, that grouped set of minicons on the left are of a confused relationship. 3 are music apps, and the fourth looks like maybe text messaging. The iOS apps are laid out in a way where a user can easily tell what is tappable from what is not tappable -- "this is an actionable element in a sea of inactionable whitespace." Contrast this with the billboard-like layout of the Windows Phone UI. You are bombarded with colors and pictures and icons, mere millimeters away from one another, leaving a user in confusion and sensory overload because it's difficult to isolate the various elements. The iOS app screen has an icon and a text label for every single app. The Windows Phone does not. It almost seems like tiles are arbitrarily assigned to be little/big or to have icon-labels/photos. After playing around with a friend's Lumia for some time, I'm _still_ confused when I stare at the screen of a Windows Phone.

I'm not trying to spark an Apple vs. Microsoft debate. I'm trying to show that stripped of all gratuitous skeuomorphism and subtle aesthetic qualities, UIs can still be usable given they clarify to the user what they can or cannot do. I could've done the same mini-analysis with an Android home screen compared to a Windows one and Android would've come out on top for many of the same reasons.

<comment><USER3> _Contrast this with the billboard-like layout of the Windows Phone UI. You are bombarded with colors and pictures and icons, mere millimeters away from one another, leaving a user in confusion and sensory overload because it's difficult to isolate the various elements._

This is true -- but only in the context of a random person put in front of a random Windows Phone device for the first time. However that's a fairly rare occurrence over the lifetime of a highly personal device, and I feel Microsoft has made the right decision in prioritizing personal organization.

Tile sizes and placements are indeed "arbitrarily assigned" simply because they're chosen by the user. Anecdotally, everybody I know with a Windows Phone has tinkered with the tile layout. The lack of whitespace is not a problem when you've placed all those items there yourself. The ability to vary tile sizes further improves spatial orientation within the customized screen.

(Think of items on your desk -- in order to tell them apart, do you insist that they are all the same size and at least 20 cm away from each other? Probably not, because those items have some other meaning to you than simply "object on my desk").

Another misunderstanding about Windows Phone is the content of the tiles. In screenshots it looks garish to have some tiles in a solid color and others filled with photos. In practice there's a strong consistency at work: any tile that is non-flat is displaying the user's own content. Furthermore these tiles usually also have an element of motion so that the non-flat content is not static. (For example, the People tile shows the user's contacts with varying animations, and the Pictures tile shows the user's photos as a slideshow with smooth panning.)

</comment></comment><comment><USER4> I'd been toying around with a post like this of my own after getting tired of hearing bitching from both "camps" in the design community (skeuomorphic vs flat), so I'm glad to see this. The current trend has become totally flat design, but as with most things in life, this is all about balance.

Completely flat design has no sense of layers or depth. This is important because users need to know where they are at any given time within your application, they will feel lost otherwise.

Completely flat design is also flawed when it comes to call to actions and various controls. Sure, a big red button in a sea of gray stands out, even if flat. The problem is when you can't have just one big red button (or you don't want a rainbow of buttons, which will look awful). You need your call to actions to stand out, and a perfect method of doing this is by giving said button depth or weight. It suddenly stands out from the flat design around it.

<comment><USER5> > Completely flat design has no sense of layers or depth.

Windows 8 suffers particularly strongly from this because it's got a lot of software that wasn't originally designed for the Metro style. Outlook (<http://i.imgur.com/7fWEmvm.png>) is one of the worst examples.

There are so many small things that would help give a hierarchy to the design, like using a darker shade of gray in the ribbon background and maybe the sidebar. Without visual cues it's a mess that you have to stare at to understand.

<comment><USER6> That screen shot just pains me to look at it.

Even obvious details are wrong like one set of reply buttons being flat and another set with gradients. This is really sloppy.

<comment><USER5> It's possible that isn't the final version; I just found the screenshot on GIS. But as far as I know it still looks like that in RTM.

<comment><USER7> Definitely isn't RTM.

Here are those sections in RTM. <http://imgur.com/Uz5xi0t> <http://imgur.com/k3Comek>

edit: It appears the reply buttons do squish like that on narrower screens though, but it's at around 1000px wide or less, so that's really a non-point in this day and age. Gradient issue isn't there though.

</comment></comment></comment></comment></comment><comment><USER8> Man. After LayerVault's post, the term has taken on a life of it's own.

Minimalism never precluded the use of effects or interactions to create depth (and I'd argue that "Flat Design" never precluded this either). Just because skeumorphism was one extreme, doesn't mean everything has to use another extreme as a baseline. Using the "flat" end of the spectrum is entirely unnecessary. A name isn't neessary for everything...

Also, for what it's worth, I much prefer Andrew Kim's characterization of the spectrum as skeumorphic to digital [1]. Digital doesn't have the connotations that "flat" has

[1]see: <http://bit.ly/VfSQ7T>

<comment><USER9> I agree. I also think it is important to distinguish between skeumorphim that is purely aesthetic, such as the leather in find my friends, and skeumophism that informs function, such as the bookcase in iBooks/Newsstand, or the calendar app. They are equally pixel heavy, but I find the former in bad taste.

</comment></comment><comment><USER10> Great post, though you really did pick an extreme screenshot for the iOS example. Something like Messages, Mail, or Calendar would be a more representative screenshot.

It did remind me how much "find friends" and Game Center make my eyes bleed though.

<comment> saint-loup Same thing for Windows Phone. Obviously, it's on every marketing material from Microsoft, but I don't see it as the killer feature of the OS, especially on WP8. The tiles have three different sizes, can be pictures or not, can be animated or not... The result is a mess. Highly connected and informative, certainly, but a mess nonetheless.

<comment><USER11> Can you explain why the tiles of Windows Phone is a mess?

<comment><USER12> * Constantly animating with new information often leads to overload (see: marquee tag)

* Lack of affordances mask what actions can be taken by tapping on a given tile

* Lack of differentiation between the functions of different tiles leads to a confusing experience

<comment><USER13> Other than the animations, what is the difference between tiles and app icons on every other mobile OS?

<comment><USER14> Tiles convey information. I don't think iPhone does this. Android has had this since the beginning I believe. E.g., you can add a weather tile to see forecasts. Or the clock tile.

</comment></comment></comment></comment></comment></comment><comment><USER15> I've been doing "almost flat" for years because it's the simplest expression of a design without gutting affordances.

Things that are interactive look interactive, and these attributes are only used for that practical purpose and never for pure decoration.

I really don't understand why this is even a debate. Do we need a daily post talking about how Apple's overwrought, realism aesthetic is tacky (it often is) and how flat design is too flat (which it is)?

This issue has officially reached dead horse status.

<comment><USER16> > Apple's overwrought, realism aesthetic

Well it's not like you've helped the issue with misleading, blanket statements like this. The problem with iOS/OSX is specific apps e.g. Game Center, Podcasts. The core OS itself is pretty neutral:

<http://www.teehanlax.com/blog/ios-6-gui-psd-iphone-5/>

<comment><USER15> I don't think we should avoid having opinions on this; I just think it's overdiscussed.

In the spirit of you calling me out, I will say that most of what Apple does (particularly in iOS) is beautiful and usable.

</comment></comment></comment><comment><USER17> Cached Version, [http://thequeue.org/cr?id=http%3A%2F%2Fwww.matthewmooredesig...](http://thequeue.org/cr?id=http%3A%2F%2Fwww.matthewmooredesign.com%2Falmost- flat-design%2F&title=508%20Resource%20Limit%20Is%20Reached)

</comment><comment><USER18> Coral Cache: [http://www.matthewmooredesign.com.nyud.net/almost-flat- desig...](http://www.matthewmooredesign.com.nyud.net/almost-flat-design/)

Google Cache: [http://webcache.googleusercontent.com/search?q=cache%3Ahttp%...](http://webcache.googleusercontent.com/search?q=cache%3Ahttp%3A%2F%2Fwww.matthewmooredesign.com%2Falmost- flat-design%2F&oq=cache%3Ahttp%3A%2F%2Fwww.matthewmooredesign.com%2Falmost- flat-design%2F&aqs=chrome.0.57j58.2193&sourceid=chrome&ie=UTF-8)

(Since it appears dead)

</comment><comment><USER19> Great post! I learned a lot and its interesting to see the drastically different directions Apple, Google, and MS are taking. Remember when everybody would just rip off everything Apple did? What would say the opposite of flat design is? 3D Design? Skeuomorphism? What would you consider Twitter Bootstrap? [http://twitter.github.com/bootstrap/getting- started.html#exa...](http://twitter.github.com/bootstrap/getting- started.html#examples)

<comment><USER20> I'd say it's Almost Flat. Colors are typically mainly solid, with mild gradients, and there are pervasive but understated borders with round edges, etc.

<comment><USER21> It looks like it's going flatter in v3 according to this tweet from @mdo the other day: <https://twitter.com/mdo/status/291831248576458752>

</comment></comment></comment><comment><USER22> The screenshot you used to illustrate apple's design is particularly ugly... doesn't do them justice.

</comment><comment><USER23> I got a Resource Exceeded warning the first time I tried to load the page.

[http://www.matthewmooredesign.com.nyud.net/almost-flat- desig...](http://www.matthewmooredesign.com.nyud.net/almost-flat-design/) if you get the same.

</comment><comment><USER24> 1\. As the first comment on his blog is saying. The first image is a pretty bad representation of Apple's design.

2\. When you use box-shaddow (or dropshaddow), then it's not flat design anymore.

I feel like Matthew just wants to coin his "Almost Flat Design" term when there is no need. Design has always been in the middle, except when it was extensively making use of boxshaddow or making everything flat. Then we give it names.

He has a point though, Windows with metro and mobile is doing Flat Design like nobody ever dared and as much as it's beautiful to see, it's a pain to see for a UI designer. Too bad he doesn't write more about this.

<comment><AUTHOR> Not really trying to coin the term, I just gravitated to it when I was thinking about this topic. I've actually been thinking about this for a few months and two thoughts have dominated my mind:

1\. As a UI designer, I love flat design. Probably that's partly due to it being new and refreshing, but I do appreciate cutting down the visual noise to a minimum and focusing on the content. 2\. As a UX designer, flat design is extremely problematic for all the reasons I discussed in the post.

I'm happy this has started such a discussion and hope it can help other designers form their own opinions with this whole flat movement.

</comment></comment><comment><USER25> I prefer Apple's approach in all comparable apps simply because they do a better job of separating content from control. I dislike Google's grey on grey and Microsoft's "some text are buttons, take a stab at it" approach.

I must be strange because I fell that gamecenter is a pretty good metaphor and easily puts purpose into context when shown to the user (start a match on letterpress on the ipad and you get a gamecenter popup). I dont understand the find my friends leather, but it is really just a skin on top of a standard set of ios controls, it doesnt take away from usability.

</comment><comment><USER26> I've been thinking a lot about this also. Metro seems too flat, the lack of depth really makes it hard to know what can be pressed. I've added small drop shadows to my own Metro-like interfaces and they make a lot of difference!

I also have had an idea for a new kind of "flattish" UI based on layered construction paper that is lit and shadowed by a simulated overhead light. The idea would be to let natural lighting algorithms do their thing in giving the otherwise flat interface depth.

</comment><comment><USER27> I wish one would make a bootstrap theme of "Almost Flat" - It almost there, except the buttons, perhaps the popups can vet a "wash" as well.

<comment><USER28> I'm in the process of doing this for a project I'm working on. Once I'm done I'll put it up on github.

</comment></comment><comment><USER29> So tl;dr is basically "Most big, popular, respectable sites already implement 'Almost Flat Design'"

</comment><comment><USER30> Was really hoping for an A/B test on this. Not, oh, we use it too.

</comment><comment><USER31> I'll say it again...the variance in iOS app design (I'd argue that GameCenter is even worse than Find my iPhone) is so wide that I wonder what the product design management structure is (or was, post-Forestall) at Apple. How could any senior manager look at the designs for iTunes, App Store, Messages, iPhoto, etc., and then at Game Center, Find my iPhone, and conclude all is well? There must have just been no single person in charge of overall UX, I guess?

</comment><comment><USER32> Hacker News DDoS :(

<comment><USER33> In the immortal words of Charlie Brown, "I killed it..."

</comment></comment><comment><USER34> I agree 100% this whole skeuo vs mini is a scam.

We need both where it is appropriate and think about the user first that's what design is about, and not just throw designs because they are trendy , what used to be trendy always sucks in the future.

Let's take at ReadWrite , TNW , Mashable new designs. They are flat , boring , with huge ugly flat color blocks that may look good on ipad or whatever , but not on my pc, frankly i ended ud reading only the register which still looks like a real online magazine to me. Iguess the others tried to appify their blog like Qwartz , except how much people read Qwartz ? I have a tiny 13'' screen i want as much infos as possible , not negative spaces all over the place.

Ask developpers about the latest Visual Studio version too, i'll guess used to it probably but how does it make that software look better? a little of relief would add to usability,now it feels like windows 3.1 or something, with ugly colors.</comment>


Show HN: GitHubby, my iPhone GitHub client - <AUTHOR>

My new iPhone app was finally approved yesterday, and its now in the appstore:
http://escoz.com/githubby
It's a github client for the iPhone, and its free.. As i bet a lot of you guys here in HN use GitHub, I would love to receive some more feedback!
Thanks guys, love HN! <comment><AUTHOR> Clickable link, hope you guys like it: <http://escoz.com/githubby></comment>


The Mystery of the Millionaire Metaphysician (2001) - <AUTHOR> http://www.slate.com/articles/life/culturebox/2012/02/the_mystery_of_the_millionaire_metaphysician_slate_republishes_one_of_the_greatest_magazine_stories_ever_written_.single.html

<comment><USER2> Sander's knew no one would read his philosophy if they weren't paid. Nothing to say. Just reality?

I was honestly expecting the mysterious Philosopher to be an MD. Why? I have met too many wealthy physicians who later in life take up a serious interest in Philosophy. My dermatologist in High school would pop my pustules while quoting his Philosophy. Yes--our family had great union insurance. Well one day, he looked down at me with his face shield on, and said_______Every time I think I came up with something new, I would later find out someone beat me to it.

I gained respect for him that day. I noticed he became humbler in life, and not so judgmental.

<comment><USER3> _Every time I think I came up with something new, I would later find out someone beat me to it._

Happens a lot to scientists who move to a new field. It means that you are not stupid and that you are not familiar with the literature. But you have to be familiar with what is being done to be productive.

<comment><USER4> My intuition is that this happens more in philosophy than other fields. I, an amateur, have thought of multiple questions and arguments which I later come to find have already been explored in the literature. I've seen students in undergrad classes anticipate moves made by famous philosophers. I hate telling this to my friends who are pursuing graduate studies in philosophy, but I think the explanation for this is that philosophy is just easier than more technical fields like math and physics.

<comment><USER5>
      I, an amateur, have thought of multiple questions and arguments which I later come to find have already been explored in the literature. I've seen students in undergrad classes anticipate moves made by famous philosophers.

It's bizarre to me that you treat this as an indication of philosophy's easiness and not its difficulty.

<comment><USER4> Why should it indicate difficulty and not easiness? A similar feat would be completely beyond me in math. Even though I minored in math as an undergrad, I have almost no understanding of the questions and arguments being discussed in the professional mathematics literature. I'm never going to stumble across one of my personal ideas in the Annals of Mathematics. It requires so much dedicated time and effort to even understand what is being said.

The professional philosophy literature, on the other hand, is much more accessible. Philosophers treat familiar questions like "Do we have free will?", "What does it mean to do the right thing?", "What does it mean to know something?", etc, in a qualitative manner. After a minimal investment to understand some of the jargon, most philosophy papers are quite readable. It's the kind of enterprise that a layman might actually be able to make an intelligent contribution to.

</comment></comment></comment></comment></comment><comment><USER6> This is one of those cases where the answer is just another question. Why was Sanders so passionate about this? What did it mean to him? His brief biography doesn't really say much:

[http://www.marcsandersfoundation.org/about/founder/](http://www.marcsandersfoundation.org/about/founder/)

And what went unsaid went with him to his grave.

Well, except that his son probably has some idea.

<comment><USER7> Existential crisis ("what does it all mean?") is one of the most common mental illnesses of all time. Pascal and Newton had it, and plenty of regular people do too.

</comment></comment><comment><USER8> > And then, just like that, it was over. But not before Sanders made an appeal > to leave his anonymity intact. "Now that you have discovered that I am > Ammonius," he wrote, "I know that you will think it your job to inform the > world." He had chosen to remain anonymous, he explained, so that his > "failure to become a professional philosopher" would not come to light and > thus tempt professional philosophers to "simply dismiss the idea of > reviewing my work out of hand because the work was known to be by a devoted > amateur."

Very interesting. I've always thought that if I were to become good enough in a certain field to become "famous", then for all of my other passions, I would go anonymous. I've noticed there's a tendency people have to immediately disparage the work of someone who is really good at something if that work is not what they are well known for.

I'm not sure if there's a word or phrase for this phenomenon, but I'm pretty sure the tendency to disparage "polymath types" is a manifestation of envy and jealousy; how could one person possibly master two completely different things? Being great at one thing should be sufficient for _anyone_ ; being great at two is just unfair.

But the truth doesn't care about fairness. There are plenty of truths in the world that society is unwilling to acknowledge simply because of their implications (see Paul Graham's "What you can't say" for a fantastic exposition of this concept). Many believe that it's improbable for one person to be good at many different things (as though being "good at things" is independent for each different thing). I strongly disagree. I think that if someone has the tools or mindset to become very good at one thing, they are also very likely to be good at something else as well. That's why I don't like criticisms that are based on "well he's a physicist; he doesn't know about..." or "she's only an expert in neuroscience; who cares what she thinks about such-and-such".

People always want to include the background or history of a person in their analysis of that person's creations. Instead, I would rather all my work be evaluated purely on its own merit, without any extraneous knowledge biasing the reviewer.

<comment><USER9> I think you're right, but I also have some sympathy for the "dismiss the amateur" practice which you might come to share if you think of it as an optimization problem: if the cost of detecting bullshit is high, and the the cost of being taken in by bullshit is high, then heuristics like "has this person been validated by an appropriate pedigree" can be a smart solution when resources are limited. Especially in a field like philosophy, so richly infused with bullshit already.

</comment></comment><comment><USER10> I had a class with Trenton Merricks and I remember him bringing this up. Such a strange story.

</comment><comment><USER11> I could see myself doing something equally as silly as this if I had the money to burn.

<comment><USER12> I was thinking the same thing. It's fun to speculate on your own genius while attempting to also be humble. Interesting blog post though.

</comment></comment><comment><USER13> Nice story.

Interesting to consider if people would regard this as doxxing now.</comment>


Ask HN: Does digesting a lot of knowledge has any merit? - <AUTHOR>

We as geeks, spend much time on Internet, digesting content from sites like this, reddit, medium, wikis. I was just curious, does this reading of bits and pieces of knowledge from every field provide any merit in our life?<p>We learn about a super-fast enzyme, cure of cancer, history of human zoos, enterprise sales process but is the time better spent in focused learning? or is it something we find use of, at some point or other? <comment><USER2> I think the misphrasing of your question provides the answer you're looking for. You don't digest knowledge, you digest information. Knowledge is the internalization of that information.

When you are able to convert information you've digested into knowledge, I'd say it's worth it. The rest of the time, you're just learning and potentially memorizing some information that will likely have little impact on your life.

With knowledge, it becomes something that improves your mental model of the world. Knowledge is a topic of conversation you can bring up or discuss reasonably.

Put another way: knowledge is what makes a person interesting; information is how you win Jeopardy.

<comment><USER3> Knowledge is an idea/concept that you understand on a deep level and is interconnected with other ideas. You can't easily forget it.

Information is an idea/concept that you don't really understand on a deep level or can easily can interconnect with other ideas. Assuming that our memory is full most of the time (unless you are making some kind of defragmentation aka meditation/relaxation) to get new information your brain must make space in your memory first. Lots of information is continually being lost.

 _IMHO, empirically, each person has:_

-"ROM" (memory to store knowledge, normally increasing along your life).

-"RAM" (memory to store novelty, normally decreasing along your life).

Probably genetics provide minimum and maximum sizes that these 2 memory types can ever reach.

</comment></comment><comment><USER4> Rather than asking such a vague, generic, unhelpful question, ask yourself whether the knowledge you're obtaining from the information you digest (see brd's comment about knowledge vs information) will: 1) Give you more prediction power, and 2) Allow you to later act on this prediction power to take a different action that will have a more beneficial outcome than the action you would have taken without that knowledge.

Taking better actions is the whole point of knowledge. In that respect, some of it (e.g. specific knowledge of current politics for someone who is not an activist and doesn't even vote) can be beyond utterly useless or actively harmful. On the flipside, some (e.g. knowing there is a tiger behind the first door, and no danger behind the second) have huge visible effects (taking the second door, improving survival chances from 50% with zero knowledge to 100% with knowledge of the tiger).

</comment><comment><USER5> This is a great question to philosophize over. All the reading that we do (especially as tech people) does seem slightly gratuitous. I find that I will most likely retain/remember only a small percentage of what I consume.

Recently I have started writing. Much to my surprise I really love writing. It helps me decompress and organize my thoughts. Since I have started writing I have a much greater appreciation for great writing and notice how great journalist construct their arguments/information.

So digesting does not have merit. It is merely an means to an end. Triangulating and reconstructing knowledge is where the benefits and real learning take place.

</comment><comment><USER6> Nope. I've come to realize that even "smart-content" is nothing but pointless entertainment. This is after five years of consuming everything to become "really smart".

It's only in the rare case that HN, Reddit or Medium provides anything of value.

<comment><USER7> Is there a better way? How do we decide what to read and what not to read? Also, how do we decide what to do with the information that we already have in our heads?

</comment></comment><comment><USER8> The pleasure I get from entering text in boxes certainly makes me biased, but I find that reading with an eye toward writing a comment shapes my understanding. Though magnitudes less than ordering my thoughts via actually writing [hopefully] thoughtful comments.

I suppose that the emphasis on What I read shaping what I write has pruned my reading. I skip more stuff likely to devolve comments into the flames of political debate and name calling. Anyway, passive consumption is different from polyglot interest.</comment>


The cruel double standard that may have saved Obamacare - <AUTHOR> http://www.cnn.com/2017/03/24/politics/obamacare-double-standard/index.html <comment><USER2> "The country is founded on the double standard," Carlin said. "We were founded on a very basic double standard. This country was founded by slave owners who wanted to be free ... in order to continue owning their black African people ... so they can wipe out the rest of the red Indian people ... and move West and steal the rest of the land from the brown Mexican people."</comment>


Show HN: CovidWatch – Real Time Coronavirus Tracker with Trend Analysis and News - <AUTHOR> https://covidwatch.io <comment><USER2> It's one of, if not the most, fluid Covid dashes out there. It even features news in geographical context. Great job!

<comment><AUTHOR> Thank you! As high-school students, this means a lot to us. We hope people using our site will pass on their kindness by donating to the Coronavirus relief fund.

<comment><USER2> Got some feedback from my Canadian coworkers who stated Covidwatch.io didn't work/load since they have no Counties or States.

Feature request: Always default to a feasible geo-context.

Is it possible!?

</comment></comment></comment><comment><USER3> What is the source of this data. Looks like out of lacking behind worldometer

</comment><comment><USER4> For what definition of real time?</comment>


XHP: A New Way to Write PHP (from Facebook) - <AUTHOR> http://www.facebook.com/notes/facebook-engineering/xhp-a-new-way-to-write-php/294003943919

<comment><USER2> XHP rocks so fucking hard, it isn't even funny. It is just so much better than alternatives.

IMHO, It is the only PHP tool I use at facebook that is better than alternatives in other languages. I'm looking at you, django templates!

The notation perfectly represents the objects, with no cruft associated with object oriented programming. That is really rare. You could argue that the markup syntax is cruft, but it really helps code readability to have two types of syntax, for code and for markup.

      $b = quotes and variables;
      $a =
omg, I can't "believe" how easy these {$b} are
;

<comment><USER3> Couple questions:

1\. How is this different from Django filters? Is it that the default is HTML escaping instead of having to specify the escaping with each template variable?

2\. How does it handle different escaping contexts? For example, text in html attributes needs to be escaped differently from text in the body of the document. Text in URLs or JavaScript has to be escaped differently still, and often times you have to combine these escapings (eg. a JavaScript onClick attribute). Is XHP smart enough to recognize these different contexts and do the right thing, or do you need to fall back to some manual mechanism?

<comment><USER4> I'm also very interested in how it is able to escape properly... anybody?

<comment><USER5> I've skimmed through the docs. Each tag that you can use is a PHP class. It knows exactly which attributes it can take and it can do some validations on the attribute values. I'd assume that it knows when there's supposed to be JS in an attribute value and when there's supposed to be text.

</comment></comment></comment></comment><comment><USER6> For me, XHP is far more interesting than HipHop. And I say that as someone who administers a pile of single-application CPU-bound PHP servers. This completely and forever changes the templates-vs-just-PHP debate, and I'm glad -- it's the kind of evolution PHP needs to continue to be taken seriously.

<comment><USER7> Strangely enough, I'm reading your PHP code just now :)

<comment><USER6> Heh, which code is that? If it's anything to do with a certain salesforce-like system at a certain log-searching company, I apologize. :)

<comment><USER7> No, thank god that (salesforce-like system) is dead :) Something called 'spacecake'...

<comment><USER6> I'm happy to have written code for a system I know nothing about. :)

</comment></comment></comment></comment></comment><comment><USER8> In a previous job, we used Apache::ASP, which is basically PHP-style <? ?> tags, only with Perl in the insides. We got an awful lot of mileage out of simply re-writing the default <?= ?> equivalent to automatically HTML-escape the contents, and adding a new <?! ?> type thing to pass through the inside unescaped.

It's less "cool" than this, certainly, but making the default reasonably safe and forcing you to ask for the dangerous level of output rather than defaulting to dangerous and having to ask for safe is a lot easier to implement.

</comment><comment><USER9> The sentiment here seems to be overwhelmingly positive. Call me a cynic, but this reminds me of "magic_quotes" all over again: a "feature" that tries to help, but masks the fundamental problem.

<comment><USER6> What is the fundamental problem it masks?

<comment><USER10> The separation of presentation and logic.

Anyone who's spent the 1990s coding Perl CGI will tell you just how big of a step backward this is.

<comment><USER11> That seems to be unrelated to the concern here (as belied by the grandparent citing magic_quotes). XHP (like plain PHP, for that matter) can be used in a way that, for all intents and purposes, separates the concerns of presentation and logic. It's more a matter of convention than constraint.

<comment><USER10> > separates the concerns of presentation and logic

WHAT? The explicit purpose of this is to combine the presentation (HTML) and logic (PHP) layers.

<comment><USER11> The purpose of a "layer" is not determined by the language it's implemented in, but by what the code actually does. Code that handles nothing but presentation is by definition separate from the business logic, even if the presentation code and business logic are implemented in the same language. It is trivial to implement this architecture with PHP and even easier with XHP.

</comment></comment></comment></comment></comment></comment><comment><USER12>
      That is, it is impossible to generate malformed webpages while using XHP.

While the purist in me thinks this is great if everyone _else_ uses it, the immense amount of productivity lost when I first started using kid templating (e.g. <http://turbogears.org/about/kid.html> ) really burned me on this whole concept.

Sometimes I really do want to make a quick test page without crossing all my i's and dotting all the t's. Importing non-perfect markup from a designer is a big pain, too, in this kind of templating system.

And, though it's unfair to say so, some companies do well enough without 100% valid XML markup: [http://blog.errorhelp.com/2009/06/27/the-highest-traffic- sit...](http://blog.errorhelp.com/2009/06/27/the-highest-traffic-site-in-the- world-doesnt-close-its-html-tags/)

<comment><USER4> Saving 14 bytes per request is something only a very few sites need to think about...

For the rest of us, clarity and semantically correct code are much more useful.

<comment><USER3> Wasn't there just a thread complaining about how the end tags make HTML so much more verbose and difficult to read, and that's why people are writing preprocessors like HAML and XHP? I've found that the code is much _clearer_ when you omit your end tags.

As for semantic correctness - it's in the HTML spec, and every major modern browser handles it correctly. Sometimes I wonder if Google's the only folks who actually read the W3C specs, there's been so much cargo-cult advice passed down between web developers.

The "always close your tags" advice came from the early 2000s, when people were pushing XHTML as a way to make your HTML pages XML compliant (the big buzzword back then). It gives essentially no benefit to users, no benefit to developers, costs you bandwidth, makes your pages slower, and clutters up your markup.

<comment><USER13> If you don't close your tags,

foobarbaz box

how can you tell the difference between,

foobarbaz box

and

foobarbaz box

<comment><USER14> The HTML tag closing rules specify they only get closed when they have to be. So neither of your solutions is correct. It is:

foobarbaz box

<comment><USER15> my solution was to merely demonstrate the difference between what a programmer writes and what gets sent as an http response.

</comment></comment></comment></comment></comment></comment><comment><USER16> See also: Rasmus Lerdorf's discussion of XHP: <http://toys.lerdorf.com/archives/54-A-quick-look-at-XHP.html>

"...when you combine XHP with HipHop PHP you can start to imagine that the performance penalty would be a lot less than 75% and it becomes a viable approach. Of course, this also means that if you are unable to run HipHop you probably want to think a bit and run some tests before adopting this."

</comment><comment><USER17> Scala does basically the same thing with XML:

<http://www.scala-lang.org/node/131>

...although I doubt it does escaping by default. Should be simple enough to add while you're converting the scala.xml.NodeSeq (iirc) to text.

For an API that required both XML and JSON output, Scala's built-in XML support had us wishing the JSON version of the API was as easy as the XML version.

</comment><comment><USER18> I'm going to give it a try, simply because of this: Facebook Lite site was written entirely with XHP.

</comment><comment><USER19> BTW for those of you interested in installing on Linux, you'll need php5-dev (so on deb/ubuntu machines a quick apt-get install php5-dev solves it). Run phpize from the root, then the normal ./configure, make, make install etc...

<comment><USER20> has anyone gotten this to work on OSX?

I get strange errors after I build and add the extension to php.ini

LOG: <http://pastie.org/817528>

<comment><USER5> Working perfectly for me on OS X snow leopard. It compiled cleanly.

<comment><USER20> Got it compiled properly now, had to get one of the versions without the lexer/parser files included.

However I'm still getting 'xhp_a' class not found errors with the basic tests from the wiki, the same as the other comments in the sibling thread.

It seems to happen on several platforms so its probably a configuration error somewhere.

Any help would be appreciated.

EDIT: Figured it out. You need to include 'init.php' from 'php-lib' in your php scripts. I copied the directory from the xhp source to my site directory and included them from there.

</comment></comment></comment></comment><comment><USER21> maybe I've misunderstood, but this seems to advocate mixing inline HTML and php logic - isn't that a huge step backwards in terms of web software architecture? I thought we were all using the MVC model by now...

My head just hurts thinking how utterly unmaintainable all that spaghetti code must be.

<comment><USER22> Not really. You can still separate MVC style. Templates have always had some display logic, which is ok. What you don't want is intermixed application logic.

<comment><USER10> In my opinion this "fuzzy" separation is exactly what frameworks like Django (and many existing PHP MVC frameworks) tries to avoid - they specifically disallow things like arithmetic in their templating language for this reason. As soon as you get more than one person working on a site, you're going to have an overly ambiguous demarcation point between the presentation and the logic layers and it's going to wreak havoc on the development process. It will take an enormous amount of discipline to have a parallel design/code workflow.

Does this offer any benefits to XML comprehension beyond syntactical sugar to allow echo avoid the use of quotes and to remove the god-awful <?php ?> syntax (which puts it at par, at the very best, in my opinion)? Does it handle XML syntax errors gracefully? Can you do native transformations on bound variables, for example, or do any more sophisticated XML DOM-ish tag functions? The post doesn't mention anything about any of these issues, which is where the real advantage would lie. If any of that were possible, you could put the browser DOM (and validation) one step closer to the application logic. As far as I can tell this just attempts to ambiguate the VC in MVC, where Django tries to replace V with T (template).

As far as I'm concerned this only increases the squinty-eyed "WTF" factor between PHP and other languages.

<comment><USER22> The article claims that it's stored in DOM and can manipulated as such. To me the big win though is that using this means things should get escaped properly by default.

<comment><USER10> I might be crazy but I swear I didn't see that they addressed everyone of my concerns... wtf?

</comment></comment></comment></comment></comment><comment><USER23> Ugh, I dislike this a lot. I'm one of the guys who actually likes PHP, so this may be a bit skewed, but what's wrong with PHP's existing _alternate_ syntax? Most people don't know about it, but it's clean and easy to follow:

      <?php if ( true === $some_value ): ?>

display this div

      <?php else: ?>

display this div instead

      <?php endif; ?>

This way, you can keep basic logic in your templates (its inevitable and convenient), it's still PHP (there's endforeach, endfor, endwhile, etc.), and this method of templating is very clean.

You can now have a class that sets variables through __set(), loads up a .phtml file, starts output buffering, renders the file with those variables, and then returns it.

You can extend it further to automatically sanitize output variables for XSS and whatnot, cache output, etc. This way, you don't need some overly verbose system like smarty to do what PHP does already. XHP just looks like another smarty: solving a problem that I really don't think exists.

Edit: Ok, I probably shouldn't say I dislike this a lot, I do love seeing Facebook sticking with PHP and ultimately helping it out.

<comment><USER24> That sort of code can get really messy when you have to put PHP code inside the DIVs.

I think I might like the more concise, readable syntax that XHP offers for interpolating {$variables} (and any PHP code for that matter).

</comment></comment><comment><USER25> I'm using PHPTal right now to achieve more or less same effects, but it's not the easiest solution - it becomes a bit cumbersome for long fragments.

XHP looks very promising because it solves one of my problems with PHPTal - generating complex content in the loop (in PHPTal having multiple conditions in loop is possible, but not exactly elegant)

For example:

      <?php
        $list =
;
        foreach ($items as $item) {
          if ($item->bold) {
            $list->appendChild(
{$item}
);
          } else if ($item->foobar) {
            $list->appendChild(
{$item}
);
          } else {
            $list->appendChild(
{$item}
);
          }
        }
      ?>

</comment><comment><USER26> Another awesome example of the lengths people will go to compensate for a lack of macros.

I would so much rather see (define table (html-table (map [tr (td _)] rows)))

then

$table =
; foreach($rows as $row) { $table->appendChild(
{$row}
); (assuming this is even possible?) }

<comment><USER27> I was just about to make this comment.

I think one of lisp's adoption problems is that it makes things that are just simply amazing become commonplace.

</comment></comment><comment><USER28> Sure, let's take two clusterfucks, php and xml, and smash them together! Great idea!

(Actually, this looks rather handy.. but there is a certain amount of initial WTF.)

</comment><comment><USER4> very, very cool. i can't wait to dig into this more... it looks like even the basic examples are cool, but there's lots of stuff under the hood waiting to be discovered.

<comment><AUTHOR> it is indeed one of the coolest things i have used. the fact that you have all the HTML stored as objects and available for manipulation makes all kinds of crazy post-processing (just before rendering) possible.

</comment></comment><comment><USER29> seems to me that if they went to the trouble to make it understand xml syntax and error out on invalid code, they should have just made it auto-close tags. on pages where there are heavily nested divs and other things, auto-closing the tags would make the code smaller while still generating valid xhtml and not bothering the developer with such trivial things.

         echo
blah;

<comment><USER30> While I understand where you're coming from, I feel like that would result in incredibly confusing markup and only lead to increased headaches down the road. I'm glad they left that out.

</comment></comment><comment><USER31> This sure would make working with WordPress themes easier.

<comment><USER32> The useful abstraction might mean that they wouldn't need to be GPLed, especially if combined with a sane view/template separation (like Django's: the template just gets a dict as input and nothing else).

</comment></comment><comment><USER33> looks like E4X, which security is a problem

<http://sla.ckers.org/forum/read.php?2,20408>

Any code mix operation & data is dangerous. That's all how overflow exp, injection and XSS works</comment>


The Fintech Bubble - <AUTHOR> https://joi.ito.com/weblog/2016/06/14/-the-fintech-bu.html <comment><USER2> The comparisons between Bitcoin and IP as in the internet are always infuriating because of their insulting simplicity and ignorance.

Bitcoin and block-chain technology may well prove to be analogous to Gopher, an experiment that seemed like a good idea at the time but was ultimately crushed by a superior idea, the then World Wide Web with HTTP. It's too early to say.

The other thing to keep in mind is IP is a language, it's not a _currency_. IP addresses might be a sort of currency today, but during the explosive growth of the internet these were pretty much free, all you had to do was ask and you were given thousands of them.

Imagine what the internet would be like if you had to "mine" IP addresses. If a handful of early adopters controlled 80% of the IP space, if they were the ones now charging rent to those seeking to utilize that space, would there be such rapid uptake? Would you be happy leasing your IPs from some third party who was simply fortunate enough to be there first and stake a claim?

The thing that's made the internet so prevalent, so pervasive, is how little friction there is on using it. In many cases using IP was significantly less fuss than going with competing protocols. Bitcoin is not always easier than the alternative, it's not always better, it's just _different_ and that's not necessarily a good thing.

<comment><USER3> > If a handful of early adopters controlled 80% of the IP space, if they were > the ones now charging rent to those seeking to utilize that space, would > there be such rapid uptake? Would you be happy leasing your IPs from some > third party who was simply fortunate enough to be there first and stake a > claim?

This is effectively exactly what happened with IP. There are a bunch of (many now-defunct) companies allocated huge portions of the IPv4 space, and they get to sell those addresses to people that need them. It's not ideal, but you can hardly claim that it has hurt adoption.

I think the ownership distribution issue is the least of Bitcoin's problems. There will always be people who are rich for no justifiable reason.

<comment><USER2> The impact so far has been minimal despite the constraint of supply, the cost of IPs is still marginal. It's also a situation that has unfolded recently, long after the rampant success of the platform.

It's also possible to make more efficient use of limited addresses now either through NAT, or IPv4 to IPv6 bridges, where once again IPv6 permits large numbers of addresses to be issued with zero cost.

> There will always be people who are rich for no justifiable reason.

There are a lot of people that profited in a huge way on early internet plays "for no justifiable reason", but that didn't hinder growth because it didn't constrain supply. Someone hoarding Bitcoin does.

<comment><USER4> And someone hoarding Bitcoin can seriously disrupt the Bitcoin economy by releasing it in massive amounts at a later point. Even an uncoordinated (deliberately) collection of hoarders can screw it all up, see market crashes. Bitcoin, having little in the way of a stable economy to be valued on, is too closely tied in value to its current exchange rates. This leads to it being more of a commodity (like stocks) than a currency. So if someone sees the price drop, they sell (at the now reduced price), which triggers others to sell, and others still.

This is not the mark of a stable currency or even a potentially stable one. Until a significant population can conduct the vast majority of their business in BTC, it's not a viable currency.

<comment><USER2> Yeah, it's things like that which make the dynamics entirely different. If someone flooded the market with IP addressees there wouldn't be people losing their minds about the collapsing value of their holdings, they'd be celebrating.

<comment><USER5> Interesting. Naive "econ 101-ism" would suggest that Bitcoin's marketplace is "better," with its finer-grained and more evenly publicized price discovery, (i.e. efficient markets.) But it seems this situation is worse for Bitcoin itself, since mass-involvement in price discovery can induce bubbles and panics, and therefore less confidence in the underlying product/service.

<comment><USER2> The thing that was so revolutionary and powerful about the internet was the elimination of scarcity. No longer were things walled off behind pay-by-the- minute systems (Compuserve) or provided on a cripplingly expensive subscription basis (LexisNexis), instead it was made free, open, and accessible to everyone with a way to connect to it.

Bitcoin seems to be following the "classical" economic model where preserving scarcity is paramount, it only has any value whatsoever because of the artificial constraints placed on the currency. If Bitcoin's transaction ledger was instead simply a record of exchanges (e.g. A paid B $40, C paid D £30) and worked as a proof-of-payment system it would probably be more successful.

Locking people into Bitcoin as _both_ a transaction tracking system and a currency will likely be its downfall. Consider a free-market alternative: Anyone can provide their own currency or facilitate conversion to an existing fiat currency, but they can use the blockchain to manage transactions and resolve disputes. Blockchain participants (miners) are rewarded for their contributions by a small share of the transactions performed in whatever currency was transacted. They're free to be selective about which transactions they're willing to process: It's a truly free market.

There's no incentive to destabilize the blockchain, history can't be re- written, double-spends can be ignored by the parties providing the endpoint of the transaction. There's no stored value at all to steal. There's also no way for a single entity to dominate the network and dictate terms, a significant problem now with Bitcoin being driven by mega-miners in China with peculiar requirements that are often contradictory to the long-term health of the network.

<comment><USER6> I like the idea of preserving public records with a block chain. However if the 'currency' of that block chain is in fact based on it tracking other assets as securities then it calls for a constant need to evaluate the actual value of those backing securities. This makes it so that there is not one value (BTC or equivalent) but instead a portfolio of assets (like stocks/bonds).

<comment><USER7> Archive.org concept + Backblaze storage appliances + replication. Way more efficient than Bitcoin or a blockchain in preserving public records. Also, has been working for some time in real world under large usage even without the Backblaze boxes. :)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I don't understand, at TipRanks (our FinTech startup) we have been busting our asses off to get a steady revenue stream and partners. We've been at it for years and we finally have something we're proud of and works well - but it was certainly not what I remember the .com bubble days as.

We won a lot of big awards like Finovate (twice!) and Benzinga awards and we won sevaral events (like a large IBM Watson one) - but that doesn't translate directly to success. We're only now starting to see "real" success 4 years in but we're in no illusion that 'we made it' or anything like the "good ol'" .com bubble days.

Working with banks is hard, working with brokers is hard, working with financial institutions is hard - contracts take over a year to sign and consumers are very skeptical when you ask for their money.

</comment><comment><USER9> A lot of the press and mindshare goes to the public blockchains like Bitcoin, but a ton of investment and work is being done on decentralized ledgers and solutions for financial institutions.

Digital Asset Holdings[1], for example, is building a distributed ledger for Australian Securities Exchange (ASX) to process post-trade settlement using HyperLedger.

[1] [https://digitalasset.com/](https://digitalasset.com/)

<comment><USER10> Why is this better than what already exists?

<comment><USER9> Post-trade settlement is a very manual and time consuming process, a new solution built on a distributed ledger has the potential to drastically cut costs and reduce settlement time.

<comment><USER11> For a financial institution, why is the blockchain better than existing distributed systems like paxos or gossip protocols?

<comment><USER9> I'm not an expert in those protocols, but since the blockchain is essentially just a shared ledger, it maps cleanly to their existing needs.

</comment></comment></comment></comment></comment><comment><USER12> Some comparisons in the article are outright preposterous. If a Cisco for the blockchain emerges, it centralizes infrastructure and negates the benefits of using the blockchain.

The Blockchain is supposed to leapfrog the status quo, directly jump to SDN vs go through the Cisco --> SDN cycle again, metaphorically speaking

</comment><comment><USER13> I can't really speak to comparisons in fintech or blockchain-related technologies as I'm no expert in this field...But i do agree in the general case that more attention should be placed on the infrastructure as opposed to only edge/applications.

</comment><comment><USER14> Stopped reading at: "I think that as a community we need to increase our collaboration and diligently eliminate bugs and bad designs without slowing down innovation and research."

<comment><USER7> Why? It's true. Most tend to go to one extreme of the quality spectrum or another. A small number of companies and people find middle grounds that knock out serious problems while maintaining time to market. Then, can keep fixing stuff in reasonable time before it becomes a big problem due to design & policies being made to do that. These groups trying to go all in on unproven stuff _really should_ dial down the innovation a little bit for caution and peer review in its place. Smaller-scale experiments before the big ones (eg DAO), too.

<comment><USER14> A middle ground wasn't advocated, he was basically saying "let's keep the pace of innovation constant, but improve quality". Putting incremental effort into quality and testing probably requires you slow down your rate of experimentation, no?

<comment><USER7> Well, sure. How much depends on what you're working with. Adding a single design or code review step in an otherwise feature-driven company is shown to knock out all kinds of issues. DAO came down pretty quickly. That much time for review with some bug bounties might have prevented some issues it had. They could still be developing on it in the process. Just not putting money in for real until it passed what peer review they could get.

Of course, it's an example where there's all kinds of potential for problems that could take a serious amount of time to work out. Can't keep innovation pace high with something like that plus ensure quality. So, the trick is usually to leverage as much proven stuff in one's innovation as possible. Easy to do with software at least.

<comment><USER14> Great point! What you're saying is that we can get some benefits for 0 effort if we employ the right software tools. Totally agreed.

</comment></comment></comment></comment></comment><comment><USER15> 3 weeks old, which is an eternity in FinTech/cryptocurrency. Doesn't even address DAO "hack"

<comment><USER4> It's addressed as both a potentiality (before it occurred) and as a footnote/update.

</comment></comment><comment><USER16> Bitcoin has no real use or value.

As a means to 'store wealth' \- not really. There are 100 other things that make more sense than bitcoin.

As a 'medium of exchange' \- it will never be a common currency so it has no real value there. (A shopkeeper cannot price his 5% margin Milk in Bitcoins as the price fluctuates too much vis-a-vis the dollar, which he must also price his milk in).

The only real advantage of Bitcoin is total privacy, which 99.9% have no problem with, only people doing illegal things generally need this.

The small benefit of the fact you can bypass credit card charges etc. is entirely offset by the lack of de-facto security in Bitcoin - although it is 'technically secure' \- for the laymen, using it and securely storing 'bitcoins' is not straightforward. That major Bitcoin repos have been hacked is evidence of that.

The banks are into 'block chain' because they saw how quickly Bitcoin spread - and they can't afford to not be part of a wave if it happens, but it won't.

It's funny that so many of bitcoins backers have absolutely no understanding of finance, currency, monetary policy etc..

It's also funny how ideological people are about bitcoin:

" I thought that Bitcoin was similar in many ways to the Internet. The metaphor that I used was that Bitcoin was like email - the first killer app - and that the Bitcoin Blockchain was like The Internet - the infrastructure that was deployed to support it but that could be used for so many other things. I suggested that The Blockchain was to finance"

This is not particularly rational.

What we need are strong, well backed, resilient and responsibly managed currencies.

The only real systematic problem with today's currencies are:

A) the oligcarchy of payment systems like visa grafting 1%-ish off the top and

B) monetary policy decisions that ultimately favour the banks.

It would be nice to get rid of A, but with bitcoin there is no 'monetary policy' and that's a much worse position than having central banks with the ability to do some degree of intervention, even if it's not perfect.

The article is a good example of this - everyone talks about technology, but don't bother to even mention finance, likely because they don't have a clue.

Fintech of the blockchain sort is in a 'bubble' because bitcoin does not solve any 'problem' for 99% of people.

Even in 3rd world countries with scam currencies, the solution will migrate towards simply using the currency of the nearest nation with a credible currency, namely dollars, Euros, and possibly in the future, RMB.

<comment><USER17> > As a means to 'store wealth' \- not really. There are 100 other things that > make more sense than bitcoin.

Not much. Wealth storage medium has to be rare (with predictable rarity), easily divisible, easily transferable, easily verifiable against forgery. Bitcoin fits the bill perfectly. It's hard to invent better medium of storage.

> As a 'medium of exchange' \- it will never be a common currency so it has no > real value there.

It _is_ a common currency _now_. I earn my living in Bitcoin. I can spent it easily through BTC-linked debit cards. Today morning I bought a pack of milk with such card, and it was debited in BTC. In the country I live in, some municipal payments and bills can be paid by Bitcoin _directly_.

> The only real advantage of Bitcoin is total privacy

Bitcoin is 100% transparent. All transactions and balances are visible to everyone. When the money source is established, it almost impossible to "launder" it, as it is fully trackable. As of now, there is almost zero privacy (not that it is a good thing). You still can buy Bitcoins for cash in some dark alleys, but the price will be worse, and amounts are limited. Whatever privacy protections Bitcoin had in its beginnings, now almost completely eliminated. It is tax collectors' dream.

<comment><USER16> "Wealth storage medium has to be rare (with predictable rarity), easily divisible, easily transferable, easily verifiable against forgery. Bitcoin fits the bill perfectly. It's hard to invent better medium of storage."

No - this is completely false. All of it.

Owning bitcoins is effectively speculative. It fluctuates _wildly_ against all other currencies, commodities. It has no basis for appreciation, or predictability.

Your position is totally upside down - it's hard to imagine a _worse_ store of value than Bitcoin.

\+ Real estate, commodities, government bonds, equities, standard currencies are all 1000x better than 'Bitcoin' as a 'store of value'.

"It _is_ a common currency _now_. I"

NO. It is _not_. Can you pay your rent in Bitcoin? Can you buy milk? Can you walk down to any car dealer and buy a car? Can you report your earnings in bitcoin? Can you pay your taxes in bitcoin? Less than 0.01% of goods in the USA can be bought with 'bitcoin'\- it is _not_ a currency either in the technical or common sense.

Bitcoin is not 'legal tender' or 'de-facto tender' in _any_ economy of the world, ergo, it is _not_ a currency.

Why are you paid in bitcoin? Why not gold? Why not Diamonds? Why not porc- futures or T-Bonds? You have to transfer your Bitcoins/gold/diamonds/corn- shares into a real currency in order to use it. It seems pretty crazy to be 'paid in bitcoin' unless you were trying to skip on taxes. Otherwise (assuming you live in the USA) - you should rationally want to be paid in USD. Rationally - it makes more sense to be paid in almost any currency over Bitcoin. Dollars, Swiss Francs, Danish Kroner, Euros, RMB - they all make 'more sense' to be paid in than Bitcoin even for a US resident.

"Bitcoin is 100% transparent. "

Technically - I agree with you - but in practice, it is not, because it is not tracked or regulated, ergo, it is effectively anonymous, which is why so many 'black market' sites use bitcoin as a medium of exchange.

In fact - without 'black market' exchanges, bitcoin would probably not exist.

There is absolutely no reason whatsoever to use bitcoin.

Also - I suggest you might not know what a 'store of value' or a 'currency' is, these are established financial concepts.

Most people behind bitcoin has no grasp of what currency is. They often compare it to 'internet technology' like IP. The lack of financial literacy among the Bitcoin bloggers is staggering.

<comment><USER18> If you were in Venezuela and everywhere accepted bitcoin, would you rather have bitcoin or Venezuelan bolivars?

<comment><USER16> "If you were in Venezuela and everywhere accepted bitcoin, would you rather have bitcoin or Venezuelan bolivars?"

If Bitcoin were the de-facto currency of Venezuela, sure bitcoins would make sense. But it's not, so it doesn't.

Moreover, there is no reason for anyone in Venezuela to use Bitcoin when they can much more easily and rationally use USD. Like I say - the rational alternative for a bad currency is a strong currency of a nearby entity. In Venezuela, the default 'hard currency' is dollars. In Algeria it's Euros.

<comment><USER18> They can't get USD because of capital controls, why else do you think they can't get food?</comment></comment></comment></comment></comment></comment>


High Speed Networking: Open Sourcing our Kernel Bypass Work - <AUTHOR> https://www.bbc.co.uk/rd/blog/2018-04-high-speed-networking-open-source-kernel-bypass <comment><USER2> Many people don't understand how or why the linux kernel is the bottlebeck at speed higher than 10 Gbps.

The problem is that the linux kernel can't process many simultaneous small connections.

Just to be clear: \- linux can easily transfer at 40 Gbps \- linux chokes at around 1M packet per second per cpu socket.

Thats right.

So linux can easily transfer at 40 Gbps one or few simultaneous flows

But! It can't transfer several flows at 40 Gbps.

The bottlebeck is the number of packets per seconds it can inspect.

So if you are sending 100 big transfers, you will reach 40 Gbps.

If you send 5M small transfers, linux will die.

This is why netmap is handy.

It offloads the packets from linux directly to the app

Bbc is sending xM small requests per second, hence millions packets per seconds.

In conclusion, netmap is good if you need a lot of small simultaneous connections.

I reached 40M connections on chelsio 40 Gbps nic using netmap on FreeBSD 11.

<comment><USER3> Thanks, I've always wondered under which conditions BSD networking performs better compared to Linux. It's the number of simultaneous streams as opposed to raw bandwidth for fewer streams.

<comment><USER2> Well BSD kernel will also choke at more or less the same limits as linux kernel.

The key point here is that a netmap driver bypass the kernel and therefore open the door to many millions packets per seconds or millions requests per seconds. Not many Gbps

</comment></comment></comment><comment><USER4> Next time management asks why the driver for your product should be open source, point out that it makes your product much more attractive to people who will improve and promote your product for free.

That is, sales will improve.

<comment><USER5> Sales improve because the potential userbase has increased, not because of free contributions.

Imagine you are google and you have created your own custom build system. You now want to hire more people that are familiar with it. Unfortunately the potential applicant pool is exactly 0 because nobody outside of google can even start to learn how to use the google specific tools because they simply don't exist outside of google.

<comment><USER4> The big barriers to adoption of a new product, service, or whatever are:

1\. People knowing about it.

2\. People needing it.

3\. People trusting it.

Like a fire needs heat, oxygen and fuel, new products survive only when they get all three corners of the triangle. If your product is cheap enough, some people will try it when they think that they have a need for something like that; trust comes eventually. Open source builds trust that in the worst case, people using your product will have a glide path out instead of a sudden brick wall.

In the instant case, Mellanox gets a highly visible, reputable customer telling everyone in their industry that Mellanox NICs are high-performance, are trusted, and can be adapted to their needs. Anyone who reads this article and thinks about high-performance NICs will have a bit more trust in the Mellanox brand as a flexible system.

</comment></comment></comment><comment><USER6> Lots of people missing the point in this discussion, the goal of this is to send Uncompressed video over closed IP networks in a studio for example. I talked about some of the problems at Demuxed last year (referencing BBC R&D's work): [https://www.youtube.com/watch?v=A4L5xEXXlas](https://www.youtube.com/watch?v=A4L5xEXXlas)

<comment><USER7> I don't think many people missing this point. I got the point from the article itself and even before this when I saw BBC I figured it was going to be related to video.

</comment></comment><comment><USER8> One of the sibling articles explains that part of the project involves trying to cut labor costs on covering massively multi-sited events:

[https://www.bbc.co.uk/rd/projects/nearly-live- production](https://www.bbc.co.uk/rd/projects/nearly-live-production)

The idea is explicitly that you would run the equivalent of a TV control room on a web app that knows how to switch between video feeds (potentially from fixed cameras without human operators) and then can output video to... whoever is your audience.

The "moving window" of near-live editorial decisions is pretty interesting as well, and seems geared towards giving non-professional editors a chance to fix mistakes.

<comment><USER9> How does a web app know how to switch between video feeds, or cameras know where to point?

Maybe we're talking about different kinds of events, but there's actually a lot of creativity that goes into camera framing, movement, shot selection, timing of cuts, etc. to end up with something that's actually interesting to watch...

<comment><USER10> The app is not choosing. The operator/director is choosing. The thing is that you give yourself a buffer before broadcasting.

"The user can pause the action at any point in time and seek back through the session to fine tune edit decisions using a visual representation of the programme timeline. On resuming, the play-head seeks forward to the end of the timeline. This functionality is made possible by ensuring the time shift window (DVR window) of the camera feed is infinite so that all live footage is recorded and can be randomly accessed by seeking.

Once the operator has established a sufficient buffer of edit decisions, they can begin broadcasting them. [...]

A research goal is to investigate how big the window of time should be between the broadcast play head and edit play head to ensure the operator has enough time to perform edits without feeling rushed and whilst keeping the programme as close to a live broadcast as possible. We call this the 'near-live window'"

<comment><USER11> More on building similar web apps here [1] and on getting a computer to play director here [2]

1 - [https://www.bbc.co.uk/rd/blog/2017-07-compositing-mixing- vid...](https://www.bbc.co.uk/rd/blog/2017-07-compositing-mixing-video- browser) 2 - [https://www.bbc.co.uk/rd/projects/ai- production](https://www.bbc.co.uk/rd/projects/ai-production)

</comment></comment></comment></comment><comment><USER12> > unique challenge here involves handling IP packets (around 1500 bytes each) > at data rates of between 1 and 8 Gigabits per second

This reminded me of something. At this point it seems like Jumbo frames are never going to be widely adopted, are they? Otherwise this seems like the perfect application - massive datarates, controlled hardware/software, high- quality wiring...

<comment><USER13> Working with Mellanox cards for a few weeks; the MTU matters a lot. The difference between an iperf test measuring 14 Gbits/s on MTU 1500 vs. 40 Gbits/s on MTU 9000.

We got a couple of Connect-X5 cards, which allow switchless connections, akin to a ring topology. A lot of neat things, at just stupid line speeds, and latency levels I haven't seen in software, ever.

<comment><USER14> Interesting. I bought a "real" netgear switch a few years back (geared to the small business market) and did some tests with jumbo frames enabled, and saw only a slightly under 10% difference in performance pushing 10GB files from my laptop to my NAS.

Everything else was consumer level though. I did ensure that everything was flipped to jumbo frames. I/O shouldn't have been the factor since it was SSD on both sides.

Mellanox has some interesting stuff, I used to work with it back in my HFT days.

</comment></comment></comment><comment><USER15> BBC R&D gave a talk on this very project a couple of years ago at a UKNOF meeting, it was very interesting:

[https://m.youtube.com/watch?v=yLL8wl8YUwA](https://m.youtube.com/watch?v=yLL8wl8YUwA)

</comment><comment><USER16> Last kernel hacking I had to do some work with 10Gbps NICs, so 80Gbps is just so attractive to my eyes.

There are different pass-through/fastpath patch for different chips to avoid memcpy, or do zero-copys, but they are all kernel patches, kernel-only.

An alternative method will be BPF/XDP and DPDK for which you will need modify the kernel drivers somehow for good performance. Wondering if Netmap does that already or is has nothing to do with them.

All of them are addressing Dataplane packet move, hope I can have an environment to experience these close-to-100bps network in my next projects.

In the meantime, I am wondering, why do you pass 4K uncompressed video using IP packets...

</comment><comment><USER17> Wonder why they didn't use DPDK instead of rolling their own MLX specific thing.

<comment><USER18> DPDK is a very recent thing...

<comment><USER19> Also netmap is _extremely_ easy to get going. It's a man page and some great examples and the deva are superbly helpful. I found DPDK daunting in comparison (it really is a different beast though, a real toolkit).

One nice thing about Netmap is it can fall-back to emulation mode and work with any NIC. This can be really helpful if you want a single codepath but don't always need the performance. DPDK might support this too now, I haven't looked at it for quite a while.

<comment><USER20> Netmap is easier, but when _everyone other than you_ is on DPDK that's kind of a hint that you're painting yourself into a corner.

<comment><USER6> Except for minor services such as Verisign's DNS which uses netmap, sure.

<comment><USER21> Source? Couldn't find anything saying that.

</comment></comment></comment></comment></comment></comment><comment><USER22> Can someone ELI5 the major challenges of delivering "broadcast quality" video over IP compared to cable? It seems crazy that pushing HD content over a standard aux cable is faster than downloading HD over IP. We have been pushing HD content to our TV's for 10+ years, but many people still have trouble streaming an HD movie from Netflix.

Is this simply due to the overhead of IP transport supporting bidirectional communication? That is, a TV broadcast only needs to support a fixed set of N unidirectional flows (channels), but IP needs to support a dynamic set of N bidirectional flows?

<comment><USER17> As you said, broadcast is usually done with IP multicast, so it's not really bandwidth intensive. The netflix example is different, there you have a large group of people who all want different streams. At netflix's scale serving that many simultaneous connections from any reasonable amount of datacenters has the capability to saturate DC uplinks at peak hours. Hence why they've resorted to caching appliances in IXs.

<comment><USER22> Actually, I didn't realize that broadcast was done with IP multicast. I was thinking it used a separate, older technology. So does that mean that generally speaking, modern ISP's that bundle Internet + Cable push the cable content over the IP transport using multicast in the layer 2 DOCSIS network?

<comment><USER23> I used to have a fiber + TV package. It was definitely multicast. I found that when I swapped their router for my own I had to make sure IGMP was handled in order for TV and on-demand to work.

<comment><USER24> Yes, I did the IGMPProxy dance too!

I was amazed that a bit of software that is basically in all home routers is so old, unloved and misunderstood.

Multicast is a funny thing. For years people thought it was the future until they realised 1) it requires the WAN end to support it and 2) people to watch stuff at the same time.

</comment></comment></comment></comment></comment><comment><USER25> There's a lot of orgs out there developing broadcast IP tech in house. Would be interesting to see an industry wide consortium on this

<comment><USER26> There are some consortiums that are starting to form: [http://www.videoservicesforum.org/activity_groups/RIST_poste...](http://www.videoservicesforum.org/activity_groups/RIST_poster_for_VidTrans2018Feb25.pdf)

</comment></comment><comment><USER27> So if this lossless video over ethernet thing ever trickles down to consumers, what happens?

Can my computer monitor become just another network device plugged into Ethernet like my printer already is?

In my living room, can I ditch the video routing part of my AV receiver and just plug everything (streaming devices, video games, cable box) into a very fast ethernet switch?

<comment><USER28> Quickest Ethernet is up to 400 gbps now, you can probably get by with a pedestrian 10gbit switch :)

Hard to see uncompressed consumer video catching on though since compression works so well.

<comment><USER29> Afaik thunderbolt is packet switched?

</comment></comment></comment><comment><USER30> am i reading this right? are they coming up with a way to use IP to broadcast "television" in the sense that, if this was finished and open source that "anyone" could feasibly run their own "television channel/station" (edit: over IP) ?

<comment><USER31> Not exactly. This is about how to pass video between interoperable machines.

Traditionally within a broadcast house, video+audio was sent between machines using HD-SDI using BNC coax[1]. For the first generation of HD, this ran at 1.5Gb/s. For 1080p/59.94Hz, a new standard was developed to run at 3Gb/s. For 4K at 59.94Hz, there is a 12Gb/s standard.

HD-SDI routers are extremely expensive. Each input and output from a device has to be individually cabled to a router and some devices can have many dozens of I/Os. There has been a push to switch from using ridiculous numbers of cables to using IP solutions and off-the-shelf IP routers. SMPTE 2110 provides a framework for doing this using RTP [2].

4K needs roughly 12Gb/s, so to carry a single video, you need at least 25Gb/s networking. If you want to carry many signals, the network bandwidth goes up fast -- that's why BBC is interested in 100Gb/s links.

Also keep in mind the traffic is not "bursty". These links may be nearly saturated 24/7\. Most off-the-shelf routers are not designed with enough buffering to handle fully saturated links on all connectors.

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

[2] [https://en.wikipedia.org/wiki/SMPTE_2022](https://en.wikipedia.org/wiki/SMPTE_2022) (older IP standard)

</comment></comment><comment><USER32> If this is for a more-or-less closed system, I wonder why it uses IP, and not an RDMA-type network (Infiniband etc.) which already is kernel-bypass and works routinely at around 100G, 1μs latency. There's nothing special about the Mellanox drivers amongst the Openfabrics ones in having free drivers in Linux, but they generally require blobs or separate firmware.

</comment><comment><USER33> Wouldn't products like openvpn benefit from using this? Or am I missing something?

</comment><comment><USER34> All paid by [https://en.wikipedia.org/wiki/Television_licensing_in_the_Un...](https://en.wikipedia.org/wiki/Television_licensing_in_the_United_Kingdom)

<comment><USER35> I never understood why they stick with this model instead of just levying a tax on citizens (like my beloved CBC). The BBC has been more than just a TV station for a long time; and I hear people in the UK are dead tired of having BBC license "collectors" coming round every 2 months to harass them into paying fees for the flatscreen TV they have hooked up to an XBox.

<comment><USER36> If you tell the BBC licence collectors (phone/letter/in person) that you're not watching TV, they stop coming.

The license collectors remain a favourite grumble of anti-government or anti- tax people, most people aren't affected. (Most people buy the license, most people who don't need to instead tell the BBC roughly every 3 years.)

<comment><USER34> after two years then will come back, and if they have reason to believe you are watching tv they can still come.

people can watch netflix and still be bothered by those people.

</comment></comment></comment></comment><comment><USER37> I will be curious to see how well the new Google kernel, Zircon, performs compared to Linux.

I have my doubts a micro kernel can come close to the Linux kernel efficiency.

Zircon is the new micro kernel that is part of Fuschia.

[https://github.com/fuchsia-mirror/zircon](https://github.com/fuchsia- mirror/zircon)

<comment><USER29> Isn't this a bit of an odd comment, on a story about kernel bypass for high performance networking?

<comment><USER37> Why? Think it is very relevant.

<comment><USER29> You doubt a microkernel can approach Linux kernel efficiency, yet here a typical kernel task is delegated to user-space for efficiency under Linux ; an approach that is similar to how networking might be handled by a microkernel?

I agree that it'll be interesting to see how fuchsia turns out.

<comment><USER37> Yes definitely have my doubts. But hope it works out. Just love Flutter and hope Zircon works out.

But we have to see it actually happen.

</comment></comment></comment></comment></comment><comment><USER38> Cool.</comment>


Get inspired by captions to create 10-second videos - <AUTHOR> https://testflight.apple.com/join/EqjxrW7W <comment><AUTHOR> Vadi is an IOS app that allows you to use captions written by other users to create 10-second videos. Captions can be any kind of text between 10-50 characters. Phrase, topic, question, song...</comment>


Show HN: Technically Sentient – A Business Focused A.I. Newsletter - <AUTHOR> https://inside.com/technically-sentient <comment><AUTHOR> I run an AI company, and have a dozen or so AI angel investments, so I have a really interesting perspective on what is happening in the field. This newsletter is focused on AI and robotics from a perspective that is more lightweight tech, and more business focused. I focus on legal issues, strategy, business models, etc. Some of the newsletter commentary gets blogged at www.technicallysentient.com/blog if you want to check out some samples.</comment>


PNG format co-designer Glenn Randers-Pehrson has died - <AUTHOR> https://sourceforge.net/p/png-mng/mailman/message/36447670/ <comment><USER2> Oh wow.

I was working with Glenn on GitHub and I didn't know.

[https://github.com/glennrp/libpng/pull/177](https://github.com/glennrp/libpng/pull/177) was my last interaction with him. He seemed to really care about libpng and making it better.

</comment><comment><USER3> PNG is a really underappreciated format. It's amazing how an 8-bit PNG can make a lot of icons super small without losing quality. Without PNG being held up as open software we would most likely not have the graphics we take for granted now.

I don't know him as a human being, but I would hope he is a great one, too.

Thank you Glenn.

<comment><USER4> PNG is basically zip with some extra tricks. The advantage in PNG is not how well it compresses.

<comment><USER5> > _PNG is basically zip with some extra tricks._

Sure, if with _" some extra tricks"_ you mean _" four relatively simple scanline filters[0] that nevertheless Paretro Principle[1] the heck out of more complex forms of lossless compression"_.

Especially Paeth is amazing in how it makes gradients so much cheaper than naive approaches with such a simple formula.

Similarly relying on DEFLATE is smart too, as that means any improvement to that format can be safely applied to PNG as well, like with zopflipng[1].

[0] [https://www.w3.org/TR/PNG-Filters.html](https://www.w3.org/TR/PNG- Filters.html)

[1] [https://github.com/google/zopfli/blob/master/README.zopflipn...](https://github.com/google/zopfli/blob/master/README.zopflipng)

<comment><USER4> Sure it's smart and well thought-out. It's not worth the Nobel prize though.

The achievement in PNG is in beating the de facto standard when it was created, GIF. That's pretty difficult because GIF is almost good enough, except for features that are hard to explain to non technical people. They don't care that GIF was covered by software patents and they don't know about 1 bit transparency and color palettes. They know that GIF is supported in all software they care about, and that GIF has animation to boot.

</comment></comment></comment></comment><comment><USER6> I've noticed a lot of us despair about whether we can contribute as an engineer as we get older. I didnt know Glenn but to be a badass coder _and_ maintainer of hugely popular library at his age is truly inspirational.

RIP.

</comment><comment><USER7> I was always impressed at the level of legacy support in libpng. Even 1.0.x still gets security updates now and then.

RIP and a job well done.

</comment><comment><USER8> I prefer PNGs to almost any other format in my documents, since they seem to be almost lossless and also dont bloat the size. Such a great work must surely be a product of a brilliant Mind. RIP Glenn Randers-Pehrson.

<comment><USER9> > they seem to be almost lossless

The should be just plain (completely) lossless unless your image encoder is doing something evil behind your back.

<comment><USER10> I thought there are "lossy" encoders that do things like dither and reduce the colorspace?

<comment><USER11> There are, but those are not the ones one thinks of by default when talking about PNG. If they do, they should clearly tell you they are doing something nonstandard.

</comment></comment></comment></comment><comment><USER12> This appears to be his LinkedIn page: [https://www.linkedin.com/in/glenn- randers-pehrson-77110a101/](https://www.linkedin.com/in/glenn-randers- pehrson-77110a101/)

Started out as a geophysicist for a Texas oil company, then served in the military, then a number of physicist gigs with the government, including with the army and at Livermore Laboratory. His most recent gig is "(Volunteer) Software Developer and Maintainer" \-- Jan 1995 - Present"

</comment><comment><USER13> Was first exposed to .PNG in Macromedia Fireworks. Have loved it more than the other extensions ever since.

<comment><USER14> Me too— I thought it was cool how Fireworks used PNG as its native format, with extra metadata to keep layers and text editable.

Thanks Glenn; I still export to PNG all the time.

</comment></comment><comment><USER15> The very first PNG image is no more. It points to this:

[http://homepages.rpi.edu/~randeg/paleo_pngs.html](http://homepages.rpi.edu/~randeg/paleo_pngs.html)

</comment><comment><USER16> Huh, right next to the death of Todd Boll. Really sad day today.

</comment><comment><USER17> Rest in peace, Glenn.

</comment><comment><USER18> Losslessness at rest we salute you.

</comment><comment><USER19> Is there some reason we don't have a black bar on HN for this? Given the ubiquity of the PNG format, I would think his death is deserving of it. RIP.

<comment><USER20> Usually they're for household names ("household" within our industry anyway). That said, maybe we'll get one once the admins wake up. :)

</comment></comment><comment><USER21> Thanks for all the work Glenn.

</comment><comment><USER22> This and Todd, can we get the black bar (or did I miss it?)

<comment><USER23> ...

</comment></comment><comment><USER24> I don't like the way libpng dumps all the package code into a single directory. Internal headers, public headers, source, and samples.</comment>


Ask HN: How to respond to "whats the biggest technical challenge you've solved?" - <AUTHOR> I'm curious how people respond to this question, especially front end developers. I've been interviewing and struggling with answers for this. It's not that I have never had challenges but many of them have been very craft centric such as "this has to look and feel smooth on many different devices." And a lot of time the challenge is "this needs to be done quickly by this date" or "we don't have any tests so can you figure out how this API should work, document that and add test coverage."
I tried asking myself how would my colleagues answer this question about their work and I also can't answer so I don't think it's just a matter of me not taking on challenging work.
I think I just lack any context or framework for what would make a good answer. <comment><USER2> My take is the interviewer is looking for

\- did candidate ask others for help, or stayed quiet (team player)

\- did candidate finish the task even if was demotivating (self-motivation)

\- how did candidate deal with stress, e.g. a deadline or pressure from management

\- how deep did the debugging go. Surprising number of engineers don't know how to create smaller test cases, don't know how to do stack traces or run debuggers (I'm also bad that this).

\- did candidate strive for an elegant solution, e.g. add test or documentation so it never happens again, or got it done and moved to the next task immediately (creating a stable infrastructure)

\- my personal bonus is: if problem could be solved by just spending money (e.g. upgrade hardware, get consultant in, buy book, travel to another office to talk to a person who build it) was this considered? Spending some (company) money can be a fast-track compared to optimising software.

What the technical challenge was doesn't matter.</comment>


We need a programming language for the rest of us  - <AUTHOR> http://www.leavesofcode.com/2011/06/we-need-programming-language-for-rest.html

<comment><USER2> >> In short, we need a language for those of us who are skilled in fields other than mathematics.

The only language I ever used where I felt my knowledge of mathematics was inadequate was Haskell* . Other than that I don't see the reason why the author feels like programming languages require advanced mathematical concepts. In my opinion it's not the language itself, it's what you're using it for that may require math. And when that is the case, there's absolutely no way you can try and avoid it -- you have to understand how you're solving the problem in order to actually solve it, and this will have to be true regardless of what language you express your solution in.

Anyway, he mentions C a lot, and to me that language was more of an abstraction over how computers work as a machine rather than an abstraction over some mathematical concept of computation. Mind you, my only experience with C is reading K&R and fiddling around with pointers and memory allocation a few times, so by no means can I claim I actually know what I'm talking about. It's just to me it felt like I was concerned with getting some metal to do what I wanted instead of expressing something mathematical, and therefore, I can't follow this person's critique of the language.

* And even in the case of Haskell, a lack of knowing anything about Category Theory did not stop me from getting a basic idea of how and why Monads are so fundamental to the language. It does not stop me from being able to write something in Haskell, etc.

<comment><USER3> The article is almost painfully clueless, but one thing that he gets right is that "current" programming languages require skills in math. That is true as long as we make the following (non-controversial, I hope) assumptions: programming in Objective C or Javascript is making use of formal logic, and formal logic is math. One of the commenters claim that math is a sort of formal logic instead of the other way round, but that's neither here nor there.

What he doesn't understand is that this is not an accidental feature of the existing programming languages; it's an inherent property of programming languages with enough power, i.e., Turing-complete languages.

Let's leave aside his claim that too many library functions is a bad thing. He also seems to think that such and such a language is difficult because the syntax is difficult, but we know that you can have a very simple language in terms of syntax -- a Turing machine, a bare-bones Lisp, or a C-like language with just assignment, increment, if and goto, for instance -- that will still give rise to very complex programs.

Of course, just because 2 programming languages are Turing-equivalent doesn't mean they're equally good or equally easy to learn or expressive. Most people would agree that for most purposes C is a better tool than Assembly, and that $FAVOURITE_LANGUAGE is better than C. Still, if you can _really_ code Javascript then you should be able to code in Objective C. The only way that he can possibly use Javascript but not Objective C is if the limits his usage of Javascript so much that it is not really being used as full programming language.

What he wants (but doesn't know) are non-Turing-complete DSLs. Just as he can do stuff in HTML/CSS, he might be able to use another DSL to do whatever it is that he wants.

PS: also see this comment and the linked short essay by Dijkstra:

[http://www.leavesofcode.com/2011/06/we-need-programming- lang...](http://www.leavesofcode.com/2011/06/we-need-programming-language-for- rest.html?showComment=1308074712429#c5674906976509442222)

'On the foolishness of "natural language programming"'

[http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EW...](http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD667.html)

<comment><USER2> Yeah, I read that Dijkstra paper a while back, I was even considering mentioning it somewhere in my comment, but lost the energy to do so due to the time.

As for formal logic being used in programming languages, while that is true, I am not sure that is what the author was referring to when mentioning "advanced mathematics". Maybe it was because he mentioned calculus early on and that somehow threw me off course, or maybe because I myself wouldn't look at it as something "advanced". Don't know, truthfully, I have no idea what he meant by "advanced mathematics", so I wont deny that it could have been formal logic.

Anyway, I see the point about DSLs and how they could be helpful to the common individual who doesn't want to devote so much of his or her life to mastering an all purpose language. I suppose that's great if you can actually accomplish everything you want that way, but in practice I feel like it would only get a person so far before they were out of options while still needing more. I always looked at DSLs as conveniences and extras to simplify the parts of the problem you don't care to fully concern yourself with. Beyond that scope though, it seems that an all purpose language is still going to be required for the non trivial aspects of coming to a solution, and to also glue all the trivial DSL components together. But hey, we should take any help we can get.

</comment></comment></comment><comment><USER4> It's funny that if you agree that many programming languages suffer from a paradoxical "shield of complexity" like the author describes, than the obvious solution is better technology like natural language parsers, etc. (Ways to translate more common human expression into machine-specific coding). However, the technology to do that would be an order of magnitude more complex than what exists today, so the framework/base/foundation of technology needed to make day-to-day programming more accessible to everyone would also suffer from it's own perpetual "shield of complexity".

Whether you see the irony in that or not, is besides the point. Basically, arguments about programming being too complex are null and void if the technology needed to solve it would always be increasingly more complex.

Unfortunately, I think that's how history advances in general. At the time the printing press was invented, most people were unable to read and write. Reading and writing was a TECHNOLOGY accessible only to elites. Over time, that technology and associated skills become accessible to almost everyone, but based on even more advanced technology that enabled the masses to learn. The same might come to pass in regards to programming skills, where everyone in the future will be able to program, but a smaller crowd will be working on even more advanced stuff to allow us to all learn those skills, ad infinitum.

</comment><comment><USER5> A bunch of nasty comments on that link that I believe are unfair and unwarranted. I agree that learning Objective-C is one of the most difficult tasks for a new programmer, but since it's the only way to create good iOS apps, there's no substitute, so suggesting Ruby or Python is unhelpful.</comment>


'Facebook: The Inside Story' Offers a Front-Row Seat on Voracious Ambition - <AUTHOR> https://www.nytimes.com/2020/02/25/books/review/facebook-the-inside-story-steven-levy.html <comment><USER2> [https://archive.md/Ml4oM](https://archive.md/Ml4oM)</comment>