A Faster Facebook for iOS - <AUTHOR> http://newsroom.fb.com/News/A-Faster-Facebook-for-iOS-1b4.aspx <comment><USER2> Facebook made the mistake of optimizing for their developers' sense of efficiency -- at the cost of user experience -- rather than optimizing for their users' experience.

Given the resources available to them, switching to UIWebView was a ridiculous trade-off. I'm glad to see they rectified this decision.

The lesson to be learned is this: at the end of the day, it's the product and user experience that matters. If you sacrifice product quality for some notion of engineering perfectionism -- whatever it might be -- you're not doing your job as a professional engineer.

<comment><USER3> Choosing platforms to optimize developer experience enables you to get more features out the door faster, which is usually the right decision when you don't know precisely which feature set the market is going to value. After a year or two of experience, it's a lot easier to go back and pick a different platform to optimize for something else.

<comment><USER2> Trade-offs to accommodate your resource or skill contraints are just that -- trade-offs. They're not optimal solutions for your users or your products. Singular dedication to user experience may have an intangible value, but Apple and others have consistently demonstrated that the value is high.

This isn't a trade-off Facebook needed to make. Whether it's a trade-off your organization needs to make depends on your resource availability, skills, and target market. However, there's no value in dressing up the trade-off as anything other than a trade-off.

The target market and product factors into the question of resource allocation. Nest would not have made such a splash if they decided to skip user experience and focus on fast feature roll-out, and Dropbox would not have succeeded to nearly the same degree (if at all) without first-rate native user experience.

<comment><USER3> I reject the idea that Nest and Dropbox were in similar positions as Facebook. The entire value proposition of Nest is simple (and simplicity). Same with Dropbox. It is harder to make a case for how Facebook could have had a "simple" value proposition 2 years ago.

You're making a case for why Dropbox didn't have to go through the time-to- market-driven experimentation Facebook did. That is indeed an advantage to being Dropbox. It isn't a very good indictment of Facebook's strategy.

<comment><USER2> Facebook started with a native client. They switched to HTML due to internal organizational politics. I'm not sure what you're arguing -- that somehow Facebook lacked the resources to invest in user experience _and_ rapid mobile development from the beginning?

It's not as if mobile was unproven at the time they decided to switch away from their native mobile client.

<comment><USER4> > _They switched to HTML due to internal organizational politics._

Sorry, but how do you know this? Also, politics in of itself is rarely the real reason why decisions are made. Someone who seeks to gain benefit by making decision (which is deemed therefore political) can certainly be a reason. So, I'd be curious as to what benefit some individual or individuals sought to gain by making this decision.

<comment><USER4> @flatline - couldn't respond to your thread below.

> _It's not difficult to determine_

I'm really curious as to who benefits from this internally at FB? Seriously, I'm having a hard time determining who?

<comment><USER2> I'm not sure if you're being obtuse; this is basic organizational politics.

Pretend that Facebook's hitherto web-centric engineering team is external to Facebook -- they're a consultancy. Now imagine Facebook comes to them and says: _We want a mobile application._ Who benefits if they manage to convince Facebook to pay for them to produce a web application?

Let's reel it back to reality. How do people _inside_ an organization benefit if they expand their area of purview, responsibility, and increase their value to the organization? Likewise, what power dynamics come into play when a new, potentially distinct engineering team garners additional purview, responsibility, outside of your domain, skills, or control?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> Just updated - it's quite noticeably faster, and feels much more native than their previous shortcut of lots of UIWebViews. I commend the Facebook iOS team! This app has regained its throne as the model of iOS UX.

Let this be a lesson to us all: when putting user experience as the first priority, the nirvana of writing your UI once in HTML and having it work universally still isn't there.

<comment><USER6> > Let this be a lesson to us all: when putting user experience as the first > priority, the nirvana of writing your UI once in HTML and having it work > universally still isn't there.

And it will never be. HTML just sucks for application development.

Why on earth exchange the benefits of using the hardware resources properly for the mess that HTML+CSS+JavaScript is? To mess the customer's experience?

Don't be afraid of touching C, C++ or any other language with native code compilers and at most rewrite the UI part. Or shell out some money for tools like Mono or similar.

Although I am forced to code Web applications at work, I am a firm believer that web should only be used for communication protocols and documents as such.

<comment><USER7> I love the energy itself that people are putting into making the web more of an app development platform. It's commendable how strongly and energetically they push to get there, building cool demos and frameworks that on a relative scale (i.e. from the web of ten years ago to the web of today) seem magical. But, frankly, more and more I feel like you, and more and more all that effort seems wasted on bringing everything up to par with old desktop patterns and techniques when we could all instead push everything somewhere new.

Like you I write web apps, but I'm old enough/lucky enough to have had some other experiences, and to be quite honest I find even Gtk+ is more pleasant overall than the MV* framework of the month. That we have folks now trying to write AutoCAD or Photoshop in JavaScript just like a loss for our industry.

<comment><USER6> Same here.

My first programming languages were Spectrum BASIC and Z80 Assembly shortly thereafter.

</comment></comment></comment></comment><comment><USER8> It has constantly amazed me that Facebook's mobile app experiences are so, so poor.

At the same time, having watched my friends swear at Facebook on their smartphones and yet _continue to use the app_ , day-in, day-out, maybe Facebook are more clever than I give them credit for; I haven't seen people move elsewhere because of the problems.

<comment><USER9> Inelastic demand lets you screw users in all kinds of creative ways. Also see: craigslist, crappy dating sites, and news.yc.

<comment><USER10> What are the creative ways in which HN screws us?

<comment><USER11> It's not very "creative", but the site is pretty awful on an iPhone. You have to zoom in an order of magnitude to be able to click up/downvote, and the layout doesn't shrink to fit the smaller screen at all.

</comment></comment></comment></comment><comment><USER12> Here's to the hope that an android counterpart is not far behind.

<comment><USER13> I've found the Facebook app on my GNex is faster than it was on my iPhone 4, but that might be chalked up to phone speed differences rather than the Android app actually being better.

<comment><USER14> Android WebViews still get to use full-on V8 (where the equivalent Nitro on iOS is limited outside Safari); which likely helps web-based apps on Android.

Despite that, the Android FB app, and most other WebView-based apps on both platforms, tend (IMHO) to be rather dog-slow and buggy anyway. The App Store in iOS6 is one as well, and it shows.

</comment></comment></comment><comment><USER15> The "photos-overflow-outside-the-white-card-theyre-on" effect has always bugged me. It looks like a rendering defect or something. I get that they're trying to maximize screen real estate, but I think it just looks terrible.

<comment><USER16> The worst part is the way it chooses to resize/stretch images.

Some are just ugly for example ecards are all screwed up. Others could seriously piss some people off. Quicky scrolling through my feed I saw two imagines that were originally of a female friend standing somewhere, taken in portrait orientation. On the new feed they appear as zoomed in "body shots" with the head and below the knees cut off.

<comment><USER11> > Quicky scrolling through my feed I saw two imagines that were originally of > a female friend standing somewhere, taken in portrait orientation. On the > new feed they appear as zoomed in "body shots" with the head and below the > knees cut off.

This sort of thing is especially odd given their face recognition on every photo. Surely they could have it center over the faces.

</comment></comment></comment><comment><USER17> It's an extraordinary improvement. Does anyone know if it was written in native Objective-C or if this is a very optimized HTML5 version (or hybrid, like the LinkedIn app)

<comment><USER18> It's Objective-C with some fallback rendering for HTML5 stuff ([https://www.facebook.com/notes/facebook-engineering/under- th...](https://www.facebook.com/notes/facebook-engineering/under-the-hood- rebuilding-facebook-for-ios/10151036091753920))

</comment></comment><comment><USER19> Yes, the app is faster. Engineering backpedaled and rewrote the app to become fully native again. Speed should be a top requirement for mobile apps <http://news.ycombinator.com/item?id=4424212>

</comment><comment><USER20> Has anyone there found info about what libraries Facebook has embedded into this app? For example, if you go to Privacy and Legal in the Camera • app, you get a nice list of every open-source project they embed. I can't find it in this new FB app...

<comment><USER21> It's still there, just less obviously accessible: Settings app -> Facebook -> About.

</comment></comment><comment><USER22> No love for Android users? :(

<comment><USER23> And therein lies the rub. Native development comes with its drawbacks too.

</comment></comment><comment><USER24> Google's cached version: [http://webcache.googleusercontent.com/search?q=cache:http://...](http://webcache.googleusercontent.com/search?q=cache:http://newsroom.fb.com/News/A-Faster- Facebook-for-iOS-1b4.aspx)

(down at time of writing)

</comment><comment><USER25> Congrats to the team at Facebook, overdue, but it's a massive improvement.

</comment><comment><USER26> Used it, it truly is miles better. They can now finally say they're serious about mobile with a straight face.

</comment><comment> SG- I vaguely remember when Facebook previously had a nice native iOS app long ago and their main or only iOS dev ranted about the App store and refused to do any more iOS development.

Some time after a terrible webapp was released. Not quite sure why someone else there couldn't take over maintenance of it.

</comment><comment><USER27> Facebook app lost 100% of their iOS dev team when joe hewitt stopped developing for them. They decided to let interns in charge of native libraries like Three20 (which has become a mess since then) and let web people in charge. It took them to hire someone from Apple to get their things together and do something valid on that platform. What's crazy is that nobody around them was able to tell them that mobile constraints makes it a entirely different think than the web. You just need to code one "hello world" with one button using phonegap to realize that uiwebview isn't anywhere close to native sdk. On the other side,the fact that Apple decided not to update UIWebView to nitro was probably a big matter for them...

</comment><comment><USER28> Did they added monetization strategies into this app (ads, sponsored stories, etc)? I'm not an iOS user, but after their harsh stock decline I would've expected to see aggressive monetization on the mobile app/web.

<comment><USER29> Facebook are making currently making $183M a year off mobile & they haven't rolled them out worldwide yet either.

They were appearing for me in the old iOS app & are only be shown every 150 or so (at the moment in the tests they are performing) which has been confirmed by Facebook's CFO David Ebersman who said Facebook are "being very careful about the volume of sponsored stories in the news feed because it's so core to the user experience."

</comment></comment><comment><USER30> Just tried, very good! A big step forward. I hope they'll go the extra mile and release a full featured desktop client as well, starting with osx possibly.

<comment><USER31> The desktop client is their website.

</comment></comment><comment><USER32> Why the hell did this take so long. I really don't understand. Surely facebook understands the importance of mobile. Glad they finally did it though..

</comment><comment><USER33> Not sure why these companies release there apps for iOS first when Android has the market share. It makes absolutely no business sense.

<comment><USER28> Despite more uniques coming from Android, maybe iOS user show more engagement.

<comment><USER34> I believe that's what the statistics say. eg, something from a Google search just now:

[http://www.netmarketshare.com/operating-system-market- share....](http://www.netmarketshare.com/operating-system-market- share.aspx?qprid=9&qpcustom=iOS,Android&sample=29)

</comment></comment></comment><comment><USER35> I tried the new app on the iPad 1 and personally I still prefer the web page - it still feels smoother for scrolling. Another thing I don't like in the app is the chat list on the right that is always visible even if I'm offline. Is it better on the newer iPads?

</comment><comment><USER36> It seems strange that they'd use a font size of 11px on that page.

<comment><USER37> It seems strange that they'd use .NET/aspx on that site.

</comment></comment><comment><USER38> This is a fascinating read. I love the level of detail, talking about solutions to performance problems like caching the heights of rendered strings.

</comment><comment><USER39> Facebook gives me a feeling quite like the one I feel I would have observing off-white eggshell paint dry or maybe munching on a packing peanut.

</comment><comment><USER40> There are still a few issues

[1] The application doesn't work well in landscape mode

[2] No feature to edit comments, this was existing as a feature in the previous app.

</comment><comment><USER41> It's about time. I'm surprised that their terrible mobile app hasn't hurt them in marketshare more.

<comment><USER42> Well if something, it would make you fall back to check Facebook on its full browser version, forcing you to see ads, which would be a good move for them.

</comment></comment><comment><USER43> Is it me, or is line spacing on the iPad _really_ tight?

</comment><comment><USER44> Why start with iOS and not Android? Seriously!?

<comment><USER45> Probably because the users expect better on iOS. They certainly complained louder. Also, my guess is the iOS user base might be higher value - as in they click on more ads and the iOS app brings in more money.

If the iOS app is more responsive, users tap on more ads, and Facebook makes more money.

</comment></comment><comment><USER46> Finally! Huge improvement.

</comment><comment><USER47> Android users waiting...

</comment><comment><USER48> Bye Bye HTML5!

</comment><comment><USER49> about bloody time!

</comment><comment><USER50> A faster, more terminal cancer. Oh happy day.</comment>


Japan Wants to Allow Crypto ICOs [video] - <AUTHOR> https://www.bloomberg.com/news/videos/2018-04-09/japan-wants-to-allow-crypto-icos-video <comment><USER2> I mean, it's not like the US doesn't. It's just that, practically speaking, there are very few differences between an ICO and an IPO, so there's really no reason why they shouldn't be considered a security.

<comment><USER3> I agree with your distinction but, its mainly the issue of ICOs not issuing a S-1 with the SEC since they are primary being used to generate funds (legal or not legal).

The Ethereum website has as their "hello world" demos on their website how to make your own token. Obviously not everyone is playing by the rules because we should be having a whole bunch of S-1s that should have been filed.

<comment><USER4> With over 20k tokens released so far, perhaps this is what should be done. DDOS-ing a SEC would be a nice way to force them to make explicit exceptions for fundraisings of a certain size.

In Europe, from July 21st 2018, you'll be able to do equity crowdfunding below €1M with no prospectus and registration - Kickstarter style. Above that, but below €8M, states will have an option to have extremely simplified procedure, and many of them will take that option (Germany €8M, Poland €5M, and so on).

<comment><USER5> > In Europe, from July 21st 2018, (...)

That's very interesting. Do you have any authoritative source that you could share? I'd like to learn more about it. Thanks!

</comment></comment></comment></comment><comment><USER6> I'm skeptical of Bloomberg's take, or at least that the details will really match it.

I've loosely dealt with Japanese financial regulations (while working on some projects in the insurance industry). My impression and the impression I got from people working much more closely with said regulations than me, is that they're very strict and rigid, much more so than working with US regulations.

I think it's likely that they might "allow" them, but with strict and stifling regulations that eliminate most interest in them.

</comment><comment><USER7> Interested parties:

[https://www.scribd.com/document/375623623/Call-for-Rule- maki...](https://www.scribd.com/document/375623623/Call-for-Rule-making-on- ICO-Proposal-by-ICO-Business-Research-Group)

</comment><comment><USER8> Can someone please mark this with [video]

<comment><USER9> Updated. Thanks!

</comment></comment><comment><USER8> Surely they're allowing ICOs so that their economy starts moving again?

<comment><USER10> The Japanese economy is doing quite well actually: [https://www.nytimes.com/2017/11/14/business/japan-economy- gd...](https://www.nytimes.com/2017/11/14/business/japan-economy-gdp.html)</comment></comment>


How to Write While Traveling - <AUTHOR> http://lithub.com/how-to-write-while-traveling/ <comment><USER2> I've been traveling for the past year. Mostly through South America, the Subcontinent, and East Asia. I'm also sitting on a novel draft that I put together over that time. Writing on the road is tough, but there's no magic to it. Keep a journal and write what you see. Let it bubble around a little bit and write something creative when you can synthesize it into a story.

</comment><comment><USER3> I found the stars to be a bit distracting. The book might be better off using thin lines, or, since all the entries are 1 paragraph, just using the small bit of space between paragraphs to signify the breaks.

<comment><USER4> Perhaps this is meant to mirror the distracted nature of experiencing a place while traveling.

</comment></comment><comment><USER5> Piqued my interest. Would have been nice to be able to get a sample of just one of these entries as part of the article.

<comment><USER6> I think the whole post was one. It said at the bottom it was excerpted from the book.</comment></comment>


Comparison of the Go and Erlang concurrency models (2011) - <AUTHOR> http://www.informit.com/articles/printerfriendly/1768317?_ga=1.175054754.1418968640.1417677887 <comment><USER2> We are using Erlang and trying out Elixir on one of our projects, and so far it is working out very well - a big chunk of that comes down to the way concurrency is handled especially in the context of letting things fail, accepting they will fail, and designing with that in mind. A similar attempt with Go was perhaps not so successful with the need to bear in mind how Go models errors and failure within code, which ended up cluttering up the code quite considerably.

</comment><comment><USER3> Pretty good article, but a few things stood out to me as questionable:

> In the CSP model, message delivery is instantaneous and synchronous. The Go > implementation is slightly different: Messages are buffered in channels in > much the same way that Erlang buffers messages for delivery to processes. > [...] Go unfortunately misses out on one of the things that makes CSP easy > to reason about. The synchronous nature of CSP message-passing [...].

Go has both buffered and unbuffered channels; unbuffered channels are the default. Most code uses unbuffered channels, because, as the author correctly points out, unbuffered channels are much easier to reason about.

Sometimes you do want buffered channels though, although you quite often want a buffer size of only one or two.

Buffered channels are the reason why goroutines are not coroutines in the traditional sense (there was a sibling question asking about that). Unbuffered channels and GOMAXPROCS=1 (the default) give you coroutines. Go gives you more if you need it.

</comment><comment><USER4> Very neat!

> Go calls its threads goroutines as a pun on coroutines, to indicate that > they're lighter than real operating-system threads.

A pun? Maybe. But the point of calling them go-routines instead of co-routines is that they _are not coroutines_.

There isn't a requirement of cooperation on the programmer's part as there usually is with coroutines (at least as I experienced them in Python, having to place Yield() calls to let other coroutines run).

With goroutines the cooperation is handled by the implementation/compiler -- i.e. Yield() calls are automatically inserted by the compiler -- rather than by the programmer manually by hand.

<comment><USER5> > With goroutines the cooperation is handled by the implementation/compiler -- > i.e. Yield() calls are automatically inserted by the compiler -- rather than > by the programmer manually by hand.

The compiler only inserts yeilds at some call sites. It's not a total solution like real preemptive scheduling, so you still need to be careful.

<comment><USER6> That's old information; every function call causes the check now.

<comment><USER7> Correct from 1.2, except inlined calls, see here [http://stackoverflow.com/questions/21102078/golang- methods-t...](http://stackoverflow.com/questions/21102078/golang-methods-that- will-yield-goroutines)

and [http://dave.cheney.net/2014/06/07/five-things-that-make- go-f...](http://dave.cheney.net/2014/06/07/five-things-that-make-go-fast)

</comment></comment></comment></comment><comment><USER8> This is probably the most lucid and approachable discourse I've read on the topic. Thanks a lot for sharing this!

</comment><comment><USER9> Here's a Yahoo! Pipe that should pull David Chisnall articles out of the Informit feed: [http://pipes.yahoo.com/pipes/pipe.info?_id=0dfcf30249eedd880...](http://pipes.yahoo.com/pipes/pipe.info?_id=0dfcf30249eedd88084891578b43f205)

</comment><comment><USER10> Would be nice to mention it's from 2011 in the title.</comment>


It is statistically likely humans are doomed in the near future - <AUTHOR> http://en.m.wikipedia.org/wiki/Doomsday_argument

<comment><USER2> This is actually an idea I came up with on my own: If increasing technology causes human population to increase exponentially until a civilization- destroying catastrophe, this implies that most humans will be born shortly before the catastrophe.

<comment><USER3> Sensible projections put the peak global population at ~15 billion some time in the next 50 years. Wikipedia puts all humans ever north of 100 billion ( [http://en.wikipedia.org/wiki/World_population#Number_of_huma...](http://en.wikipedia.org/wiki/World_population#Number_of_humans_who_have_ever_lived) ).

So crisis averted.</comment></comment>


Native Clojure with GraalVM - <AUTHOR> https://www.youtube.com/watch?v=kjZP_wBQJ2U <comment><USER2> Cool demo here:

[https://www.youtube.com/watch?v=kjZP_wBQJ2U&t=6m40s](https://www.youtube.com/watch?v=kjZP_wBQJ2U&t=6m40s)

piping a few cli tools together and inferring a spec for the node package json format. Those cli tools are small & fast native binaries compiled by GraalVM.

</comment><comment><AUTHOR> slides: [https://janstepien.com/native-clojure-with- graalvm/](https://janstepien.com/native-clojure-with-graalvm/)</comment>


Umair is wrong: Entrepreneurs are the problem, not VCs - <AUTHOR> http://www.thisisgoingtobebig.com/2009/01/umair-is-wrong-entrepreneurs-are-the-problem-not-vcs.html <comment><USER2> pg has commented on this in the past when asked, "Why does YC almost entirely fund web 2.0 startups when there are so many other areas of technology to explore?" And his answer was, basically, "That's what we see." Though he followed up with, "And that's what we know how to judge." Specifically in the context of, why they don't fund enterprise startups, when there's so much money to be made there.

</comment><comment><USER3> Hold on a second.

When someone says, "venture capital is broken" what they're really saying is that there is a systematic problem with the way venture capital is allocated or how risk is managed. As a financial intermediary, that's basically what a VC does: allocate capital and manage risk.

VCs have sole responsibility for investing and managing the capital that they raise for which they get paid handsomely (often 2% of AuM annually and 20% of profits, if any). Entrepreneurs have no control over and get no remuneration for allocating capital or managing risk.

So what if there are too many "me too" entrepreneurs seeking funding. So what if there are a bunch of wacko founders pitching "hover boards." So what if innovation is dead. If VCs can't allocate capital or manage risk then they should decline to invest and return the money to their limited parters.

Stop blaming entrepreneurs for something that isn't their fault. There's plenty enough to blame them for that is their fault.

<comment><USER4> Just from personal experience as an entrepreneur this comment is spot on. Actively looking for funding for most smaller startups is a waste of time - success-oriented entrepreneurs are always better off just starting the business and pushing it to profitability on their own. At that point there is not usually a scarcity of ways to get additional capital, because people will clamber over each other get a piece of a profitable growing company.

But at that point there is little sense in taking funding unless: (1) the business model expects exponential growth in costs, or (2) the founder wants to diversify risk or stop eating ramen by trading some equity for immediate cash. So self-selection is working against the interests of venture capitalists. It is bringing them into contact with people who spend significant amounts of cash to focus on getting funding instead of actually rolling out a business.

There are plenty of opportunities out there. If I can see them and the VC industry can't that is their problem and it is their job to solve. One simple case in point: how many times has a VC actively solicited pitches from people on Hacker News? I can't think of a single case. Yet the comment section on Umir's site is filled with VCs whining about the lack of decent business plans? Wow.

</comment></comment><comment><USER5> The issue is on both sides - there are both "lemming" entrepreneurs and "lemming" vcs who deserve not to be funded/funding others and there needs not to be finger pointing.</comment>


The difference between a developer and a programmer.  - <AUTHOR> http://metaphorcrash.blogspot.com/2008/07/difference-between-developer-and.html

<comment><USER2> Lengthy and arbitrary. I can make up definitions for two common terms and write an article about that dichotomy too, but that won't make it worth reading.

The article can be summarised in a simple sentence: To be a good technologist (let's use a neutral term), you need to be able to do more than just write code.

<comment><USER3> I disagree that it is arbitrary, and with your summary. There is a very real difference between what is labeled "programmer" and "developer". I have been working with a very bright intern lately. He is a very technically proficient programmer... but he lacks the big picture view. Every task is approached and estimated by the time it would take to solve a comparable coursework assignment; but the real world is messy. Figuring out the big picture of his project -- the system -- took far more time than any of the interesting technical challenges. Only in hindsight does he understand why certain "obvious" high-level design decisions were as emphasized early on.

I liked the thesis that development gets harder as programming gets easier, but I think it misses the mark as it strays toward 'because kids these days don't know about coding to the metal'. I think the problem, as has been lamented here in the past, is the speed of prototyping versus implementing. I have had to sit through a few too many discussions across from a former developer, or development manager, and having to explain that while he was able to construct a mock-up that looks like what we want, in minutes!, we have not even gotten started on a real solution. Within hours, almost anyone here could simulate the basic Twitter functionality... but scaling it to half their size?

<comment><USER2> Sorry, maybe I didn't express myself correctly. The arbitrary part is the naming. Since that's presented as the main insight of the article, it taints the whole.

It would have been better, though less catchy, to talk about, say, junior developers, and senior developers.

<comment><USER4> That would not have been better, because it implies that seniority implies competence.

What differentiates a programmer from a developer in the author's parlance isn't merely experience. A lot of newcomers to the field today build prototypes and put them into production, and believe that they got it right because their software is in production. That it's a maintenance nightmare doesn't enter into their minds, and as a result, their next project also turns into a maintenance nightmare.

That's a big problem where I work; we have a lot of software clear written by people without even a vague clue about web development (e.g. they don't use the HTTP session for anything, instead using lots of Java code to maintain session data), and instead of learning to write better software, they learn to repeat the same mistakes.

<comment><USER2> Just because you've been a developer for 10 years doesn't make you a senior developer. In my first job, I was the junior (obviously), and was working with this Iraqi guy who had the title "Senior Software Engineer", and had about 5 years of experience. His code was some of the worst I've seen in my life. Particularly galling since his salary was 50% higher than mine (and I was on the high end of junior!).

<comment><USER4> "Just because you've been a developer for 10 years doesn't make you a senior developer."

That was exactly my point. It makes you senior, but not a developer.

</comment></comment></comment></comment></comment></comment><comment><USER5> He should probably fix his wordpress theme before writing heady theories about software development.

</comment><comment><USER6> Perhaps it's just semantics, but I prefer to be called a "computer programmer".</comment>


No Formats, no Format Wars - <AUTHOR> http://www.loper-os.org/?p=309 <comment><USER2> This is ridiculous. Even if you handwave away security concerns of running arbitrary native code fetched from the web as the operating system's problem, you have locked yourself into a single hardware architecture with (presumably) a single API for those binaries to run against. Even if you expect these things to run on metal you need a standard hardware configuration that exposes known I/O devices, etc. In a world where x86 coexists with ARM, PPC- derivatives and the occasional MIPS machine (not to mention dozens of other variations) native executables are not a sensible option unless you pass that buck to the server and have it spin off a custom binary for any client that may come along.

Ok, ok- so we use a VM that everyone agrees on and- wait, we're back where we started, aren't we? Except, of course, we have a ton of mandatory overhead because browsers are no longer specialized to deal with the kinds of media users expect in a browsing experience.

Unless you honestly expect that everyone, everywhere will use identical computers for everything, standardized formats will always be necessary.

<comment><USER3> > Even if you handwave away security concerns of running arbitrary native code > fetched from the web as the operating system's problem

Between ye olde Java sandboxing, hardware and software OS virtualisation (Qemu, VirtualBox, VMWare etc.), JavaScript, NaCl, and other examples, it seems clear that this is a problem we now know how to manage.

> you have locked yourself into a single hardware architecture with > (presumably) a single API for those binaries to run against

NaCl appears to have a grip on this problem. Write portable code in one of several languages supported by LLVM; compile with LLVM to the native NaCl format that exists for various CPU architectures, and to Portable NaCl ("PNaCl") bytecode. LLVM can be replaced by another compiler that targets NaCl.

> In a world where x86 coexists with ARM, PPC-derivatives and the occasional > MIPS machine (not to mention dozens of other variations) native executables > are not a sensible option unless you pass that buck to the server and have > it spin off a custom binary for any client that may come along.

All the server really needs to do is to pre-compile (or be given) a set of NaCl binaries for the presently popular archs as well as a PNaCl bytecode executable for everyone else, but yes indeed, it might also dynamically compile native binaries for minority archs it knows how to support in response to client demand. If the compile is too slow to serve the first such request with a native binary, then the server can serve the PNaCl code until the new native code is ready.

(As a matter of fact, it wouldn't really be necessary to replace every single HTML file with executables. But that's another story.)

> Even if you expect these things to run on metal you need a standard hardware > configuration that exposes known I/O devices, etc.

It seems that NaCl provides a syscall-like interface with its "service runtime". Something similar could surely be created for a runtime based on hardware VMs (in other words, something like Ethernet emulation in implementation terms but with an API more suitable for a Web-browser plugin).

This part of the design is a weak spot of course, as it can break and fork and version and vary across implementations, but compared to the sinking sands of the browser interface it should prove much smaller and more stable. (HTML files which are genuinely documents rather than webapps are relatively robust against some API breakage but, again, it wouldn't actually be necessary to turn every HTML document with an executable blob.)

> Ok, ok- so we use a VM that everyone agrees on and- wait, we're back where > we started, aren't we? Except, of course, we have a ton of mandatory > overhead because browsers are no longer specialized to deal with the kinds > of media users expect in a browsing experience.

Portable C or C++ compiled to NaCl should be decently fast for almost all purposes. Failing that, there's always the possibility of hand-writing raw NaCl code as an optimisation for popular architectures. (Or writing 100% native assembler if hardware virtualisation is being used instead of NaCl.) Failing that, even if a few high-performance AV formats have to be hardwired into the browser alongside WebGL (or whatever), we're still nowhere near being back where we are - in a madhouse world where a cartel of browser vendors empowers a tin-pot Napoleon to dictate, among many other things, how we will all mark up our documents, down to the minutest details.

</comment></comment><comment><USER4> You're only thinking about one dimension of the problem. In reality, you will run up against the "expression problem", in that your immediate use will be more apparent, but orthogonal un-thought-of reuses will become harder or impossible. A java/flash applet executes instructions and is a step towards the kind of universal object format you talk about, yet it is harder or impossible to index, style, and adapt to local UI conventions.

The primary feature of declarative protocols/formats/languages is to convey a common meaning of data without specifying _how_ it should be interpreted. Try to pull meaning out of imperative code and you'll run up against the halting problem. We _could_ just be happy with our binary blobs, but moving beyond take-it-or-leave-it single-purpose content is exactly what as allowed "the web" the flourish.

Programmable logic as a standard PC feature would be great, but there would still be video ASICs for low power decoding or high-quality realtime encoding. also how would you propose to set a standard format for FPGA bitstreams when the balance of topology/block capability/timing is ever-changing. Once again we'd need a common declarative format as a base, and software tailored for the different nodes.

<comment><USER5> Re: FPGA bitstreams: Here's one attempt at standardization in spite of the hostility of chip vendors: the "MPGA":

[http://web.archive.org/web/20050414203105/http://ce.et.tudel...](http://web.archive.org/web/20050414203105/http://ce.et.tudelft.nl/~reinoud/mpga/README.html)

<comment><USER4> Interesting, but seems that even fully developed, it would be limited to cases of when only a (lower requirement) portion of a chip needed online reconfigurability. Even one of the mailing list messages admits the routing is severely limited compared to the host, and timing hadn't been characterized. (that "ascii bitstream" format is quite cute)

If one was to flesh this idea out and create a "universal bitstream" -> specific FPGA "compiler", at what layer do we stop and declare that we have reached the proper primitive abstractions? What happens when technology moves on from those primitives, and more performance is demanded by the majority of the applications? An older CPU can go about its business a bit slower while an older FPGA trying to run new code won't even fit the design.

</comment></comment></comment><comment><USER6> What is described is already reality - I see it every day.

I work for a company writing its own video codecs, who have a format that downloads a 70KB jar file before streaming the video. It's a Java applet (and still supports Java 1.1 - we've been doing this for a number of years now) and largely allows the model that Stanislav wishes. Is it ideal? Probably not. We can't do fullscreen or hardware-optimised playback. We have to implement our own controls that are out of place of the L&F of the OS and browser. We need people to install the Java VM. On Java versions older than JDK6u18 we still only get to use 64MB of memory (on a 2GB machine? Hah!). Not always going to work on your latest smartphone.

On the flip side, I also see a lot of video container formats where people try to standardise something as generic as possible. Particularly OMFI (Bento), Quicktime, AAF. The simplest AAF File which simple refers to a piece of video content elsewhere is 250KB, because it has to define a complete vocabulary of items that it might deal with in the file, and jumps from pointer to pointer to actually get to the data. It's pretty much the closest we have to Stanislav's 1961 Air Force quote example, with everything short of actually including a decoder specification for the audio and video content. It's a minefield to work with. It's too flexible for its own good, and reading or writing it is anything but a trivial task (cue large libraries, larger than video decoders, to do that. Anything but ideal).

So, one side involves a virtual machine to standardise hardware, and the other needs large libraries to parse and emit even the simplest of files. I've seen this world, and I think I'd rather have well-implemented standard decoders working on simpler wrappers instead.

</comment><comment><USER7> The writer obviously hasn't had to deal with input validation of anything ever.

Formats exist so that programs can make good assumptions based on content. Given a good format, the content can be transformed or fitted to the device - for example, web pages on smartphones vs computers.

Also, given a format, the programmer is freed to make performance enhancements that aren't dictated by a specific platform or set of technologies. Want to write a CSV parer in Ruby? Go right ahead! Need to rewrite it in assembler for speed? Sure! You can't easily do that with a closed platform/tech like Flash or MS's binary formats.

<comment><USER5> What input-validated your PC's operating system when you booted it?

<comment><USER7> Last I checked, CPU's generally don't react well to executing random data as instructions.

<comment><USER5> Mine is perfectly well-behaved in response to random/mistaken instructions. Executed under VmWare, where they belong. (during OS prototyping, etc.)

<comment><USER8> And I bet you just have all the answers don't you? I'll even bet that you think everyone else is stupid for not seeing the OBVIOUS solutions that you're presenting!

Damn those corporate conspiracies to keep programmers down!

<comment><USER5> I haven't many answers; only questions. And someone appears to think they are interesting, as I do not submit my articles to this site, and have tried to discourage others from doing so:

<http://www.loper-os.org/?p=91>

And to explain the present status quo, we need no conspiracies. Only people who laugh off the very idea of re-thinking foundations.

No one is asking you to throw out your PC. I only ask that you _think_.

<comment><USER7> Taking a better look at your site, I must apologize for my original statements - I was overly crude and insulting, which was not fair. (I'd edit it, but HN won't let me...)

While I don't agree with exactly where you're coming from, you are pushing the envelope in ways that I'm frankly not used to, and making people think, which is quite noble.

That said, I'm a firm believer in data being separate from code, so that the code can be innovated/iterated on in ways independent of data. Tying them too closely together allows less than ideal programming and laziness lead to data and code interdependence which becomes a nightmare to deal with.

If you can solve the problem of dumb/myopic programmers being let loose with the tools you propose, I'd love to hear it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Yeah, replacing all data formats with a new, dynamic, "meta" format is going to make everything simpler and more compatible.

Pass the pipe, please!

<comment><USER8> Classic crackpot formula.

<comment><USER5> Yes, because even to hint at how we might climb out of a local-maximum optimization valley is the act of a raving lunatic.

<comment><USER2> There's a pretty serious difference between arguing for reduced abstraction in software (which can be quite reasonable, and is probably more like what the author actually envisions) and arguing for _no_ abstraction in software. The latter comes across as ignorance of the purpose of layers of abstraction.

The author points to Alan Kay's anecdote about a simple, standardized way for formatting data on cards in 1961 and then immediately turns around and uses it to argue that standardized formats do not improve interoperability. Sounds hypocritical to me.

<comment><USER10> The user you are replying to is the author.

</comment></comment></comment></comment></comment><comment><USER11> Could Native Client be the way forward for this approach?

Link: <http://code.google.com/p/nativeclient-sdk/>

<comment><USER12> The development team proposed NaCl as a potential solution to many of the format problems. We could make a lot of custom compression formats that would be better than gzip. A multitude of image formats tuned for various categories of images or videos.

Fast JavaScript could go a long way in that direction too <https://github.com/antimatter15/weppy> With types and WebGL hardware access who knows.

NaCl project has social forces going against it. People want a homogenous platform. Platforms solve a social problem, developers become familiar with the same API, make libraries for it, make development easier, etc.. NaCl would have to play that game and it takes a long time. By the time it's done it won't be a good fit for problems of the day, just like high level VMs today.

</comment></comment><comment><USER10> e: interesting; HN won't let me post my full comment. It just times out. I'm going to try posting bits of it at a time, as edits.

e2: I give up; HN just won't let me post the whole thing. I've moved this comment to a pastebin, at < <http://pastebin.com/bVn91ApU> >

<comment><USER5> > this model is the polar opposite of Free software. Instead of users having > absolute control over what runs on their system, they have practically no > control at all. They surrender everything to the first webpage they open, > and to whatever agent is controlling that page at a time.

If you read my "laws of computing" piece:

<http://www.loper-os.org/?p=284>

do you still believe this?

For the impatient: I advocate a switch to direct hardware execution of exclusively high-level (human readable!) code. Does it get more user- modifiable than that? I'd like to know.

<comment><USER10> > _I advocate a switch to direct hardware execution of exclusively high-level > (human readable!) code. Does it get more user-modifiable than that?_

What sort of code the hardware executes is irrelevant to whether that code is Free. JavaScript is high-level and mostly human-readable, but it's trivial to obfuscate JavaScript such that modification by the user is difficult or impossible. And JavaScript is a relatively limited language; a LISP-like language executed directly by the hardware could be even more difficult to modify.

<comment><USER5> > it's trivial to obfuscate JavaScript such that modification by the user is > difficult or impossible.

This is a moral, rather than technological problem. Anyone writing any kind of code can choose to make life less-pleasant for those who will read it.

Under current architectures, you do not even have the option of making life pleasant for those who wish to read _the code that is presently running_ on their machine, _at the time it runs._ In fact, the very idea sounds like schizophrenic soapbox heresy to most people. Which is a crying shame.

<comment><USER10> You're missing the point. Currently, I do not have to run proprietary software to use the Web. Under your design, I would have to surrender control of my computer to arbitrary third parties to use even the most basic features.

<comment><USER5> What kind of control do you presently have over your computer, that would be taken away?

Current CPUs come with hypervisors; running native code need not lead to any loss of control. Sanely designed CPUs would give the user yet more control.

</comment></comment></comment></comment></comment></comment><comment><USER13> _> you don't need anything more complex than something like X Windows_

I'm not sure X would be my prime example of simplicity...

</comment><comment><USER14> Quick, someone patent the meta-format.

<comment><USER5> Think big! Skip straight to patenting the Turing-complete computing machine.

</comment></comment><comment><USER15> Ah, I understand now. It all makes sense! To get out from under them thumb of the evil Formats, we must subjugate ourselves to an even greater, larger and more complex (but singular) Format! What could possibly go wrong?</comment>


Arrow functions coming to chrome 45 - <AUTHOR> http://wingolog.org/archives/2015/06/18/arrow-functions-coming-to-chrome-45

<comment><AUTHOR> Earlier discussion was here[1], but as rightly pointed out by davexunit, description of the implementation is much more interesting than just a commit message.

[1] [https://news.ycombinator.com/item?id=9739100](https://news.ycombinator.com/item?id=9739100)</comment>


San Francisco Assemblymember Chiu wants to ban towing cars - <AUTHOR> https://www.sfchronicle.com/bayarea/article/Chiu-s-bill-bans-towing-or-booting-vehicles-and-13902167.php <comment><USER2> That's a good start. Another thing I would like is if the owner has AAA or some other towing service then the city would be required to call them to tow it.

Also there is little reason, except corruption, for the cops to not send the owner a text or recorded message to move their car before towing it.

</comment><comment><USER3> My gripe with towing is that personal property is held hostage. You should, in all cases, be able to get your property back immediately, without paying at that moment, and then deal with fines, fees, or bills separately whether via court or otherwise.</comment>


And You Will Know Us By The Trail Of Patent Trolls - <AUTHOR> http://yglesias.thinkprogress.org/2011/01/and-you-will-know-us-by-the-trail-of-patent-trolls/

<comment><USER2> The funny thing is that we're not the first nation to try an IP-based strategy towards monetizing its scientific know-how. Post-World-War-II Britain had all sorts of stuff going on: the first passenger jet aircraft (the de Havilland Comet), lots of early computer work (the Manchester group in particular invented index registers and the most reliable RAM technology before core; the LEO was the first machine actually used by a business), and even Watson, Crick, and Rosalind Franklin doing DNA. But rather than trying to foster businesses built around these innovations, the government instead pursued a strategy of trying to monetize licenses for them.

There's a book from MIT Press which describes how this went in the computer field in particular. It's a very dry read, but it's one of these things where the title tells the tale: "Innovating for Failure".

MIT Press page here: [http://mitpress.mit.edu/catalog/item/default.asp?tid=6166...](http://mitpress.mit.edu/catalog/item/default.asp?tid=6166&ttype=2)

<comment><USER3> I didn't know there was precedent for the moronic positions of most university tech transfer offices. Ah, humans: making the same mistakes, over and over again.

</comment></comment><comment><AUTHOR> You can see how very far we are from any kind of sensible patent reform here. Yglesias seems to understand, but check the comments.

The general progressive public is still entriely under the illusion of the patent bar. They really believe PTO would never allow you to patent mathematical laws, algorithms, laws of nature, business processes, obvious extensions of established methods, well-known existing practices, and all the other corruptions common in software patents. Quite a lot of them argue that such abuses must not exist because there are supposedly rules against them.

<comment><USER4> When you create laws to regulate an industry, the first thing that will happen is that the law itself will be brought by said industry.

</comment></comment><comment><USER5> Actually, the line that struck me from last night's speech is how the President expressed his belief (with a careless laugh) there will be no "pat downs" on high speed rails vs airports, when the reality is they are already doing it at some bus stations and seaports (not to mention how he thinks they are just simple "pat downs").

[http://www.youtube.com/watch?v=9ZdEmjtF6HE&feature=playe...](http://www.youtube.com/watch?v=9ZdEmjtF6HE&feature=player_detailpage#t=1696s)

<http://www.youtube.com/watch?v=gOv8Zh3OvSg>

But that's a topic for another thread I guess.

</comment><comment><USER6> My favorite example of the broken patent system is United States Patent 6368227: Method of swinging on a swing.

Abstract: "A method of swing on a swing is disclosed, in which a user positioned on a standard swing suspended by two chains from a substantially horizontal tree branch induces side to side motion by pulling alternately on one chain and then the other."

Link: <http://www.freepatentsonline.com/6368227.html>

And some news coverage: [http://www.newscientist.com/article/dn2178-boy-takes- swing-a...](http://www.newscientist.com/article/dn2178-boy-takes-swing-at-us- patents.html)

<comment><USER2> My own pet example is the peanut butter and jelly sandwich patent, which the J.M. Smucker corporation really and truly did sue to enforce: [http://www.ipfrontline.com/depts/article.aspx?id=14617&d...](http://www.ipfrontline.com/depts/article.aspx?id=14617&deptid=3#)

That link is to a pro-patent website which notes that Smucker failed to enforce the patent (against a grocer from Michigan), after multiple rounds of reexamination, and concludes, of course, that the! system! works! Strangely, they fail to mention the amount of money and time lost to the grocer in fighting Smuckers's overreach...

</comment></comment><comment><USER7> Reading the title, I was really excited thinking this was going to be a Boondock-Saints-esque vigilante justice mission against patent trolls. Needless to say, I was sorely disappointed after clicking through.</comment>


WebGL Meincraft - <AUTHOR> http://dev.pocoo.org/~mitsuhiko/webglmc?hn <comment><USER2> That seems nice but it's taking, also, all my CPU time on my windows machine. I don't get it, yesterday there was another WebGL demo on HN and it did exactly the same thing. Is that something which we have to live with in the future ? Is WebGL going to be too much CPU intensive, so much that nobody is going to be able to run that ? Or is this 'demo' asking too much of WebGL ?

<comment><USER3> The high CPU usage is expected because I spawn off four background workers that peg all your CPU. It's not intended for public consumption yet, so don't jump to conclusions.

When I have finished this it will perform better.

> Or is this 'demo' asking too much of WebGL?

The WebGL part is only half the story. It uses webworkers for the perlin noise generation and this is currently very slow in JavaScript.

</comment></comment><comment><USER4> This page consumed all the resources on my Late 2010 MBA pretty quickly. Not that the real minecraft runs well, but it's far more playable than this version.

Whether that's WebGL or the programming is something I don't know.

<comment><USER3> > This page consumed all the resources on my Late 2010 MBA pretty quickly. Not > that the real minecraft runs well, but it's far more playable than this > version.

Well. There are a couple of reasons for this. First of all: yes, it should keep 4 CPUs busy. I spawn of four background workers so it pretty much hogs everything.

That said, not only the world generation is slow right now, also the VBO generation is because I do some very conservative invalidation which causes some VBOs to be generated multiple times.

I have a lot of stuff that I can do to make this faster and my local version already performs better but I caused some bugs in the coordinate system conversion and my frustum culling. I have to iron this out first before I update the live demo.

This version (rendering wise) on my Mac does actually render faster than Minecraft at equal rendering distances.

<comment><USER5> If and when you write a blog post about this, I think it would me more interesting if you'd write about how you generate your vertex buffers and organize your draw calls, etc than describing the world generation algorithm.

Everyone, and their dog, have been writing Minecraft-style world rendering demos for a few years now and there are also quite a few blog posts that describe the world generation algorithm. They're always an interesting read, but I would be more interested in how you get that stuff to the GPU and how do you render it.

Also some insights about WebGL limitations would be welcome. Would your task have been easier if you could memory map your vertex buffers or use instanced draw calls? This is the kind of stuff I'd love to hear about as a graphics programmer.

<comment><USER3> Yeah, the world generation is not that interesting in my version anyways. The interesting stuff is how it uses web workers to move that into the background and how the VBOs are updated (or will be once I have finished that).

</comment></comment></comment></comment><comment><USER6> Both my cores were pegged but if you can get this to perform as good as Minecraft and turn it into a game I might buy it. Especially since us Linux users don't have as many good games to choose from.

</comment><comment><USER2> I noticed something : when the viewpoint is lookint at a flying block wich is not that big, it's lagging the same as looking at the entire world. Is is rendering something in the background which is out of the view ? I'm not saying it's not a nice demo, actually I like the feeling very much. This perlin noise is pretty enjoyable. But I can't understand why it's that slow ;(

<comment><USER3> > I noticed something : when the viewpoint is lookint at a flying block wich > is not that big, it's lagging the same as looking at the entire world. Is is > rendering something in the background which is out of the view?

Yes it is. I have experimental frustum culling implemented but something with the coordinates is wrong and it starts to cull things it should not.

> But I can't understand why it's that slow ;(

Because it's work in progress and in many parts the implementation is just not finished yet. I need to fix the frustum culling, I have to improve the front to back rendering, have to switch to transferred objects for the web workers where possible, speed up the critical code paths and fix the Chrome performance bugs that come from too many VBO switches.

</comment></comment><comment><USER7> Hello both my cpu cores pegged at 100%.

<comment><USER8> May I suggest running this in a Virtual Machine such as VirtualBox. Then you can control how many cores are pegged by how many you have assigned to the VM, and leave the rest of your machine responsive for other things.

<comment><USER9> That's an awfully heavyweight approach to something that can be solved just as well using the existing CPU affinity functionality of your OS.

</comment></comment></comment><comment><USER10> Was this done with 3D perlin noise?

Give us some technical details of the project please.

<comment><USER3> It's perlin simplex noise and there will be a longer blog post about how it works. It's just work in progress :-)

</comment></comment><comment><USER11> Hooray for floating islands! (seriously, I love that these exist in M(ine|ein)craft. It makes the world a lot more interesting)

Very CPU heavy. For those wondering, it does work, it just takes a while for anything to appear.

</comment><comment><USER12> You should prevent propagation of up/down arrow key events in the game canvas, which (I believe) cause the browser window to scroll up/down.

</comment><comment><USER13> Pretty sweet! Can't wait for the details

</comment><comment><USER14> completely non responsive, did not finish rendering first scene after waiting for about 4 minutes.</comment>


The feds need to shutdown the Bitcoin scam now - <AUTHOR> http://blog.codesolvent.com/2017/12/the-bitcoin-scam-needs-to-be-shutdown.html <comment><USER2> This is wrong on so many levels, I don't even know if I should start "defending" bitcoin and the rest crypto currencies...</comment>


Facebook Platform TOS - Section 3 - Fees: We can take any cut we choose. - <AUTHOR> http://developers.facebook.com/terms.php <comment><USER2> Brilliant. That's why Facebook is going to be one of the major web players soon. I can see them challanging Google in a few years. It'll be interesting to see Facebook's aggresive bully style head to head with Google's do no evil style.

</comment><comment><USER3> It's funny how Facebook says this and at the same time they say that apps will be able to keep all of their revenue.</comment>


Covid vs. US Daily Average Cause of Death - <AUTHOR> https://public.flourish.studio/visualisation/1712761/ <comment><USER2> Can you break down by age? Don't know if that data is available. 10-20, 20-30,30-40,50-60, etc.

Also, a breakdown by area/zipcode would be interesting as well.

would percentage of total deaths be a better way to describe the relationship?

</comment><comment><USER3> This would be much more interesting if there was actual daily data on other causes of death.

<comment><AUTHOR> Daily data on the other causes of death isn't likely to fluctuate much day-to- day except for influenza.

The total deaths for heart disease in 2017 was 648K (just going by the graphic) which is higher than current estimates for COVID19 deaths in 2020 given current measures in place, so in that regard, the chart is misleading.</comment></comment>


Show HN: Build iOS and Android games in Objective-C with SpriteBuilder - <AUTHOR> http://www.spritebuilder.com/ <comment><USER2> This looks really good! A couple of things that I noticed watching the video and reading the site:

\- are you responsible for creating the variables in the xcode project yourself, and ensuring they're exactly the same as the ones in the SpriteBuilder project? Couldn't that be done automatically for me?

\- saying that it converts to Android when really it uses Apportable, which requires a license (and cash for some purposes), seems a little disingenuous. Unless you really have added something to help with that which I didn't see. (Please correct me if I'm wrong).

<comment><AUTHOR> You can use any Objective-C compiler with SpriteBuilder. We happen to make a really good one, but it's not the only option for compiling Objective-C on Android.

<comment><USER2> Oh right, I see now that you are in fact the Apportable guys. Fair enough ;)

</comment></comment></comment><comment><USER3> I love how Apportable was in the license comments. Also why define instance variables when auto-synthesized properties would do fine?

I love the editor, I hope you guys add support for SpriteKit as well.

<comment><AUTHOR> Thanks for your suggestions! SpriteKit support is under consideration for a future release.

</comment></comment><comment><USER4> Looks well-done. Do you/they use Entity-Component-System engine design?

</comment><comment><USER5> This seems like a fork of Cocosbuilder [http://cocosbuilder.com/](http://cocosbuilder.com/)

<comment><AUTHOR> Yes, the CocosBuilder project has been renamed SpriteBuilder. The creator of CocosBuilder now works at Apportable.</comment></comment>


Bill Gates wants to give the poor chickens. What they need is cash - <AUTHOR> http://www.vox.com/the-big-idea/2017/3/14/14914996/bill-gates-chickens-cash-africa-poor-development <comment><USER2> > time and again, the research has shown that the poor make good investment > choices when given the opportunity.

I find this interesting. Does anyone know what research the author is talking about?</comment>


Helium - <AUTHOR> https://www.usv.com/blog/helium <comment><USER2> "The Helium vision is the most ambitious we have seen in the blockchain space since the advent of smart contracts on Ethereum: Helium represents a fundamentally new approach—one with a radically reduced cost structure—to deploying and managing wireless networks at scale."

[https://multicoin.capital/2019/06/12/helium- series-c/](https://multicoin.capital/2019/06/12/helium-series-c/)

<comment><USER3> "Consumers plug-and-play hotspots in their homes and businesses. Labor cost is $0".

But in doing so, these customers most likely would break the contract with their ISP, or they'd have to upgrade to a contract that does allow them to "redistribute" Internet access.</comment></comment>


LHC Micro Models: Build Your Own Particle Detector - <AUTHOR> https://build-your-own-particle-detector.org/models/lhc-micro-models <comment><USER2> Ugh. No particles will ever be detected by these plastic toy block sculptures.

While a non-functional _LEGO_ version of something the resembles a experimental equipment might be fun for some people, none of these things are actually particle detectors.

<comment><USER3> Right, I was about to make the exact same comment (in much less charitable terms).

I do not think we are anywhere close to a DIY _subatomic_ particle detector, but a kit that would allow you to, let's say... test for common minerals in tap water, would be a cool gift for a STEM inclined teenager.

<comment><USER4> You can make DIY cloud chambers pretty easily.

<comment><USER3> Thanks for the keyword, let me ask google now.

</comment></comment></comment></comment><comment><USER5> Well, they can detect particles. Particles that are attached to lots of other particles and moving at a sufficient velocity.

</comment><comment><USER6> Unfortunately, despite reaching 10k votes and being considered by the Lego Ideas team, they decided not to turn this into a set. :(</comment>


Would you recommend starting from HTML5 & CSS3 for beginners? - <AUTHOR>

Hello,
I am a middle school student trying to dive into the world of web designing and developing.
I have been interested in (using) the web since I was little, but now I want to be in the "creating" side. After researching about web design and development, I believe it is better to start from markup languages before script languages. And I was wondering, should I start from learning the new HTML5/CSS3 or  should I stick with current version of HTML/CSS first? Are HTMl5/CSS3 something that beginners should definitely avoid? Or it doesn't really matter which one I start with? And it would be also great if you can recommend me a good book on HTML(5)/CSS(3) or a website about them!
Thank you very much in advance :). <comment><AUTHOR> I don't really have a knowledge of HTML, but when I compare the current HTML and HTML5, seems like HTML5 is more simpler?

<comment><AUTHOR> I agree, that's what I thought too.

But I don't know if starting from HTML5 will make a bad habit for beginners.

</comment></comment><comment><USER2> he he</comment>


Ask HN: How to access vagrant from browser in localhost? - <AUTHOR> In vagrant, set hostname as test.my.domain. Installed an application in it. Want to access it from browser as http://test.my.domain. Except set /etc/hosts, is there any tools for mapping it?<p>/etc/hosts example<p>``` 192.168.1.100 test.my.domain ``` <comment><USER2> [https://github.com/cogitatio/vagrant- hostsupdater](https://github.com/cogitatio/vagrant-hostsupdater)

</comment><comment><USER3> [https://github.com/mattes/vagrant-dnsmasq](https://github.com/mattes/vagrant- dnsmasq)

<comment><AUTHOR> It looks good. But showing: This repository has been archived by the owner. It is now read-only.

</comment></comment><comment><AUTHOR> It doesn't support markdown.</comment>


Why incentives are irresistable, effective, and likely to backfire - <AUTHOR> http://www.fastcompany.com/magazine/132/made-to-stick-curse-of-incentives.html

<comment><USER2> I much prefer this story about silly metrics:

[http://www.folklore.org/StoryView.py?story=Negative_2000_Lin...](http://www.folklore.org/StoryView.py?story=Negative_2000_Lines_Of_Code.txt)</comment>


How to Convert Blender Models to WebGL in 4 Simple Steps - <AUTHOR> https://www.soft8soft.com/blender-to-webgl-in-4-simple-steps/ <comment><USER2> Can I use 3ds Max or Maya to do the same?

<comment><AUTHOR> Yep, you can use Verge3D for 3ds Max plug-in. Maya is not supported yet.</comment></comment>


Show HN: "Install on DigitalOcean" button for open source apps - <AUTHOR> https://github.com/seven1m/do-install-button <comment><AUTHOR> Hey everybody. I built this small Sinatra app because I wanted a simpler way for people to install my software OneBody[1] on DigitalOcean.

I'm not sure my little VPS will hold up under the strain of HN, but you can see the app in action at [http://installer.71m.us](http://installer.71m.us) and even use it to install itself (how meta!) on DigitalOcean.

This uses the new MetaData[2] feature of the DO API to pass a config string to be processed by CloudConfig[3].

Once that is done, there is a small bit of code running on the VM to tell this app when the install is finished so you get a progress bar while you're waiting.

To be clear, DigitalOcean is doing all the real work -- this app simply acts as a hand-off between your app.yml config file on GitHub and the DigitalOcean API.

[1] [https://github.com/churchio/onebody](https://github.com/churchio/onebody)

[2] [https://www.digitalocean.com/community/tutorials/an- introduc...](https://www.digitalocean.com/community/tutorials/an-introduction- to-droplet-metadata)

[3] [https://www.digitalocean.com/community/tutorials/an- introduc...](https://www.digitalocean.com/community/tutorials/an-introduction- to-cloud-config-scripting)

<comment><USER2> Hi! So I clicked on Deploy to DO button, I now have a VM up and running.

But now what? I can't even SSH into it as I don't have the pw. I hit port 80 and all I get is the same "install it on DO page".

I thought it'd do a 1 click deployment, I'm stumped :(

<comment><AUTHOR> If you have an ssh key set up in your DigitalOcean account, then that is the key set up on the root account. If not, you should have received a password email from DigitalOcean -- use that.

        ssh root@the-ip

<comment><USER2> thanks i got in ssh.

but as for the app, I hit the IP and i just see the "DO Install Button" page. [http://cl.ly/image/032E0s0S122I](http://cl.ly/image/032E0s0S122I)

is this expected?

thx for the awesome work btw, i am just so anxious to try it out, atleast for one of the church i know who could def use something like this.

<comment><AUTHOR> You might be more interested in installing our church app OneBody. You can do that by clicking the "Install on DigitalOcean" button in the readme here: [https://github.com/churchio/onebody](https://github.com/churchio/onebody)

</comment></comment></comment></comment></comment><comment><USER3> Love it! This is the exact type of thing that we hoped would come from providing the MetaData service.

Please submit it to our projects page so we can highlight it:

[https://www.digitalocean.com/community/projects](https://www.digitalocean.com/community/projects)

</comment><comment><USER4> I'd be interested in adding this button once it gets offical support from DigitalOcean.

I added the Heroku Button[1] to a self-hosted OS app I wrote[2] and it seems to be useful (over 100 "recent deploys" per Heroku). It would be great if there was some affiliate commission as well - if someone signs up for a VPS to run an app, would be awesome to get a small kickback from DigitalOcean.

[1]: [https://buttons.heroku.com/](https://buttons.heroku.com/)

[2]: [https://github.com/swanson/stringer](https://github.com/swanson/stringer)

<comment><AUTHOR> Matt, thanks for the feedback!

I'm not sure _this_ app would get official support from DO, since it's a bit hacky. I imagine DO would add their own install-button support at some point in the future (at least I hope so).

This app _does_ set a referral cookie whenever someone chooses to install an app using it.

<comment><USER5> that is referral for the hoster of the button, not the project installed via the button, correct?

<comment><AUTHOR> Yes.

</comment></comment></comment></comment><comment><USER6> _Something Something_ WebIntents.

Why is "DigitalOcean" a choice made by the app, instead of by the user? Can there be a standard for this sort of installation metadata?

<comment><AUTHOR> There _could_ be a standard, but I don't think it exists today (at least not one that is supported by the services I hope to use, e.g. DigitalOcean, Amazon, Google).

This is a tool that scratches my own itch -- certainly not something I care to be the end-all of service-agnostic app installer.

<comment><USER7> Soon each person will have a computer in the cloud. There is no reason why apps shouldn't be as easy to install on any user-provided server as on desktops. I am very excited about this and would be interested helping code it.

<comment><USER8> I think [https://sandstorm.io/](https://sandstorm.io/) is the leading project in this area.

</comment></comment></comment></comment><comment><USER9> How are you planning on handling support for this going forward?

I have no specific need, I'm just always curious about how folks transition from, "I have a neat idea" to "I want my neat idea to work for most people".

</comment><comment><USER10> same button for azure: [http://www.bradygaster.com/post/the-deploy-to-azure- button](http://www.bradygaster.com/post/the-deploy-to-azure-button)

<comment><USER11> Upvoting, in part because as much as I don't understand why an open-source project would want to advertise a particular vendor, if one insists on Facilitating Deployment (while doing unpaid advertising), one should probably take effort to facilitate this deployment to as many vendors as possible. Thus Azure and Heroku too (linked in your comment to comment) if it's possible in similar way, and maybe there are more too.

edit: ah, I see from other comment that there's apparently possibility of gaining some "cash" from DO for the ads: [https://www.digitalocean.com/referral- program/](https://www.digitalocean.com/referral-program/) although seems only useful if one's using the DO platform himself (works as a discount).

</comment></comment><comment><USER12> I have written something similar, it deploys Enferno (enferno.io) a flask based app on ubuntu (not necessarily digital ocean)

it's an ansible playbook that configures the server and installs all requirements, and sets up nginx, python for you.

whoever is interested, here is the source code:

[https://github.com/level09/enferno- ansible](https://github.com/level09/enferno-ansible)

</comment><comment><USER13> Very neat. We did something very similar with the devo.ps button, allowing you to define configurable settings: [http://devo.ps/blog/deploy-your-meteor-apps- on-digital-ocean...](http://devo.ps/blog/deploy-your-meteor-apps-on-digital- ocean-in-5-minutes/)

We have yet to properly document the feature, but we've used it in a few places already.

</comment><comment><USER14> Great use of OAuth, API, and user data!

</comment><comment><USER15> I like the idea, but runcmd could be dangerous as well as setting sudo permissions.

<comment><USER16> It's _installing a brand new VM_. By definition, it's got more than just root, it's got enough permissions to bring up new VMs entirely. Being worried about whether it has sudo permissions or something inside the VM is beside the point once you've stipulated that.

</comment></comment><comment><USER17> This is very cool, nice work!

</comment><comment><USER18> Will definitely use :)

</comment><comment><USER19> This is quite cool.

</comment><comment><USER20> This is pretty exactly what I use fabfiles for.

</comment><comment><USER21> Why not just use docker for this? Then you can install anywhere that has docker.

<comment><USER18> This response annoys me a little bit. "Why not just use docker?" gets thrown around so much at the moment, as if Docker is the alpha and omega of app deployment. Is it just me? Docker's awesome. I love Docker. But it's not the Messiah of app deployment. Not that DO is, but that's not the point.

<comment><USER22> You could treat a $5 DO instance as a big "container" in itself :)

</comment></comment></comment><comment><USER23> I'd definitely fund a company based around this.

<comment><USER24> Based around what, one click VPS/PAAS deploys? There are a lot of tools out there that can do this. Vagrant with a bash script is the simplest that comes to mind.

<comment><USER23> You'd probably be able to create a marketplace around these types of services which wraps monitoring/uptime/alerting/management/autoscaling/software updates etc into one interface.

<comment><USER25> You're looking for Bitnami: [https://bitnami.com](https://bitnami.com)

<comment><USER26> Yes :) We support AWS, Google, Amazon as well as local development. A bunch more coming soon

</comment></comment></comment></comment></comment><comment><USER27> Does this kind of go against the spirit of open source?

<comment><AUTHOR> For OneBody, we have 6 different ways to install the software.[1] We're definitely not forcing anyone to pay DigitalOcean to host our open source app, but it sure is nice to give people that option when they don't want to mess with running their own host.

[1] [https://github.com/churchio/onebody/wiki/Installation](https://github.com/churchio/onebody/wiki/Installation)

<comment><USER6> Why is "church" (specifically) built into the onebody product? The software would seem to be organization-agnostic, suitable for any community group. "Church" is certainly a reasonable target/majority use case for marketing, but it seems strange to exclude other cases where a group of people come together in a buildng, take classes, plan events, etc, where the software could work fine.

<comment><AUTHOR> I agree somewhat, though OneBody does have church-specific features built-in, such as _favorite bible verses_ and _prayer requests_ etc. It is specialized for church communities, though you can turn that stuff off and use the software as a general community social network if you want.</comment></comment></comment></comment>


Lenovo Thought It Knew How to Fix Tarnished Brands–Then It Bought Motorola - <AUTHOR> http://www.wsj.com/articles/lenovo-thought-it-knew-how-to-fix-tarnished-brandsthen-it-bought-motorola-1484586006 <comment><USER2> > Motorola held a special appeal for Mr. Yang. It was the brand of the first > cellphone he bought in the mid-1990s.

I wonder if Yang's decision to stick with the Motorola brand doomed the entire effort. Once a brand loses its market cachet (for whatever reason), it's very difficult to restore it. Steve Jobs managed to revive the Apple brand, but apparently Yang is no Steve Jobs.</comment>


StudentPay: Receive student discounts automatically on your purchases and payments - <AUTHOR> http://www.studentpay.co/ <comment><AUTHOR> StudentPay enable student automatically get student discounts when they pay for goods or services online, with a simple click of the button. We enable retailers, business, or organizations offer and manage student discounts easily by adding a "StudentPay checkout button" as part of their payment options, free of any charges</comment>


With the iPhone Sputtering, Apple Bets Its Future on TV and News - <AUTHOR> https://www.wsj.com/articles/with-the-iphone-sputtering-apple-bets-its-future-on-tv-and-news-11553437018 <comment><USER2> With all the hardware news of last week, my guess is the focus will be on services and the rumors are all about a TV service. I find this news depressing--what ever happened to the company that desired to make a bicycle for the mind? A TV service is what they come up with next?

Here's hoping it's better than I think it will be.</comment>


Breaking into startups – podcast to share with your non-tech friends - <AUTHOR> https://itunes.apple.com/us/podcast/1-albrey-brown-self-taught/id1180897172?i=1000378378594&mt=2#3 <comment><AUTHOR> My friend was inspired by breakingintowallstreet.com (which he used to get a job on wall street) to create a similar set of advice on how you can get a job in tech without having a traditional background or growing up in the valley. It's for folks who want to learn software engineering and for folks to want to learn about non-tech jobs in the industry. I'm curious to see how the HN community likes the content / mission.

</comment><comment><USER2> I do a little bit of audio/video stuff in my spare time. A few thoughts here and there from the third podcast:

\- Good on them for looking for diverse folks with a wide range of backgrounds. There's not enough of that--good work. Getting more and more varied people into this stuff is important.

\- I'm guessing that Artur and Timur are ESL folks, but it might be worth spending some time practicing extemporaneous speech. I've learned from working with ESL speakers that residuals from their native languages and the halting- speech phenomenon are most obvious when they have to think and speak at the same time. A little bit of a pause (one that you can edit out, if you want to) to get one's thoughts in order before speaking might help here, and speech training can help with this.

\- Audio engineering: the levels are all over the place and some people sound a lot more heavily EQ'd than others. I'd aim for a consistent perceived volume (taking into account compression, etc.) across the board. In particular, the guest, Kevin--who's so far off-EQ that I'm not sure if he's there in person or on Skype--is really low compared to the hosts. Somebody, if not _everybody_ , should be wearing headphones when doing a podcast (get something like an ART HeadAmp 4 Pro to feed up to 8 pairs) in order to monitor while recording. If you have one or more Skype participants, get mix-minus recording working in your DAW ASAP. It matters, a lot.

\- Maybe some mic technique stuff? It sounds like at least one person (Ruben?) is eating the mic when he speaks. Back off the mic a little. Part of the volume/EQ re: Kevin that I mentioned above might be that he's too far back from the mic, so maybe a pre-'cast little coaching is a good idea.

\- Show notes need editing for grammar and word flow.

</comment><comment><USER3> I'd also recommend the `How I Built This` podcast: [http://www.npr.org/podcasts/510313/how-i-built- this](http://www.npr.org/podcasts/510313/how-i-built-this)

</comment><comment><USER4> Is there a non itunes way to access this podcast?

<comment><USER5> I found it in Overcast directory this morning. Also on Soundcloud: [https://soundcloud.com/breakingintostartups](https://soundcloud.com/breakingintostartups)

<comment><USER6> You can listen to it on the website - [http://breakingintostartups.com/](http://breakingintostartups.com/) or Soundcloud [https://soundcloud.com/breakingintostartups](https://soundcloud.com/breakingintostartups)

</comment></comment></comment><comment><USER7> Awesome and thanks for sharing. Great for anyone looking to find engineering, design & product roles at startups.

</comment><comment><USER8> Where is the RSS feed for this podcast?

</comment><comment><USER9> good stuff!

</comment><comment><USER6> mwseibel thanks for sharing!

</comment><comment><USER10> Thank you for sharing mwseibel!</comment>


What I'd like to see in OS X 10.12 - <AUTHOR> https://medium.com/@Pier/what-i-d-like-to-see-in-osx-10-12-3b58edd7e85b <comment><USER2> Some additions: no more allowing apps to steal focus, especially while typing; fix the Mac AppStore or ditch it; fix or kill "All My Files", it's useless and annoying that it's the default; separate iTunes from iPhone syncing; keep apps from popping up when peripherals are plugged in / or fully charge up and turn on (like an iPhone/iPad); please fix Safari (crashes like craaaazy [and Chrome eats my battery]).

I'm tired of my OS letting applications surprise me, popups, or modals stealing my focus.

Tired of twenty damn windows opening up everytime I plug in an iPhone—I know I can do this per device, but as a developer it's very painful.

My OS not surprising me and apps not stealing focus was a big reason why I was able to motivate myself to switch to OSX in the first place.

<comment><USER3> Thanks for stressing out on stealing focus! This is a complete nonsense that's pretty much omnipresent in OSes. How many time I've been typing a password when an app steals the input focus, and the password or parts of it gets posted where it shouldn't (I type it and press Enter mechanically).

Also, I don't think Apple will ever fix Mac App Store as it wants to keep its huge cut, and app developers will always find cheaper marketplaces such as MacUpdate.

It's ridiculous that I need to have the Mac App Store, MacUpdate, and Homebrew to do something as basic as installing apps and system components! I'm sure if Apple reduces its cut, it will get more revenue because many major apps have fled its App Store. On the phone your can twist arms, but not on the desktop!

The notification popups need to have a close button and be transparent! Sometimes they cover up important screen real estate; I can't see what's below, and I can't close them.

The inability to search within the current folder is also a joke! Sometimes a have thousands of files and search is global - just ridiculous!

Maybe I don't know how to do these things; maybe there's a way to do these things, but it's definitely not intuitive!

<comment><AUTHOR> > The inability to search within the current folder is also a joke!

You can search in the current folder. It's a setting in Finder > Preferences > Advanced > "When performing a search".

<comment><USER3> Thanks! This has to be the default behavior, and not an "advanced" setting!

<comment><AUTHOR> I agree. It's one of the things I always change on a new Mac or OSX install.

</comment></comment></comment></comment></comment><comment><USER4> I've given ShiftIt ([https://github.com/fikovnik/ShiftIt](https://github.com/fikovnik/ShiftIt)) a go for window management. So far its been stable and works for 99% of applications (Adobe products being a very notable exception).

Also, it's very minor, but I wish the "Go to folder" shortcut (⇧⌘+G) would show me a list. I use that shortcut to jump around folders a lot and it'd be great if I could use the arrow keys to jump back in history in the same way you would "cd" commands in Bash.

<comment><AUTHOR> Thanks for the link. First time I hear about ShiftIt.

About moving to folders with the keyboard I use Alfred which is a spotlight replacement and it has history of commands. You could even have your own extension (called workflows) to customise this as you wish if you know a bit of coding.

Check it out, it's extremely powerful: [https://www.alfredapp.com/](https://www.alfredapp.com/)

<comment><USER4> Similarly, I use Quicksilver ([https://qsapp.com/](https://qsapp.com/))

</comment></comment></comment><comment><USER5> Double Clicking on Top end of Window Actually Maximize the window. ( Not full screen )

Files inside Folder should align like Windows, Folder Fist before everything else.

Open up Quicktime Player, I can preview everything with Add on but i cant view MKV and other media files?

Network Stack seems to be slower then Windows10 ( No idea why ) NAS, WiFi and Ethernet performance.

Completely agree on iTunes. Worst pieces of software, it needs to die just like Flash.

Saferi, Can i have proper tab overflow like Firefox instead of this fancy unuseable way of MultiTab.

And lots of lots of other small things, to be honest if it wasn't Windows 10 having poorer drivers support, and ugly User interface, it is in many ways better then OSX now.

<comment><AUTHOR> Windows 10 is much more optimised than OSX. In my experience it runs faster and uses less memory in the same hardware.

But yeah, it's ugly, and it lacks things like Spotlight or Quick Look which make your life a lot easier.

<comment><USER5> And that is the problem, because Apple, owning both the Hardware and Software used to be the most optimized. Now Mac OSX lacks behind in performance and memory consumption, and if it wasn't for Safari being a better browser, Win10 will properly wins the Battery Performance race as well. ( Edge will likely change that )

UX on Windows 10 is better in many ways as well.Sigh

</comment></comment></comment><comment><USER6> Full-screen on one monitor should still allow normal operation on the other. And even allowing another full-screen app on the other monitor(s). It's ridiculous to waste a monitor displaying my desktop background when I'm running something full-screen.

<comment><AUTHOR> You can change that behaviour in System Preferences > Mission Control > Displays have separated spaces.

It doesn't make much sense that the options is there...

</comment></comment><comment><USER7> IMO, OS X is becoming bloatware</comment>


Trump announces tariffs: 25% on steel and 10% on aluminum - <AUTHOR> https://www.washingtonpost.com/news/business/wp/2018/02/28/white-house-planning-major-announcement-thursday-on-steel-and-aluminum-imports/?utm_term=.6492ddc58040 <comment><USER2> Two, maybe three, decades too late for aluminum. I don't think there is a single aluminum plant left in the Pacific NW when we used to have a fair number of them with Reynolds and Kaiser. Those plants aren't just going to come back online either, an entire generation of workers has moved on.

<comment><USER3> MillerCoors agrees:

"Like most brewers, we are selling an increasing amount of our beers in aluminum cans, and this action will cause aluminum prices to rise. It is likely to lead to job losses across the beer industry

We buy as much domestic can sheet aluminum as is available, however, there simply isn't enough supply to satisfy the demands of American beverage makers like us. American workers and American consumers will suffer as a result of this misguided tariff"

[https://twitter.com/MillerCoors/status/969312711371886594](https://twitter.com/MillerCoors/status/969312711371886594)

</comment></comment><comment><USER4> This is happening because Trump and his supporters want to get the US back to the 50's when the country was a huge exporter.

The problem is the 50's were an aberration. That's because all the other major industrial powers had been devastated or at least impoverished by WWII. But they rebuilt, and new industrial powers like China arose, and so we got back to the normal state of affairs of lots of competition.

</comment><comment><USER5> I was a supporter of Bernie and he planned to do the same thing, for basically the same reasons. He didn't pick this unilaterally either, the Commerce department recommended it.

<comment><USER6> Do you have links where we can read about this?

I can't find evidence that Bernie advocated tariffs at these levels. I know he spoke against "unfettered free trade" and new agreements like TPP, but I remember him talking more about taxing the import of labor (US companies using foreign labor) more than materials (US companies importing goods).

It also looks like the Commerce Dept was staunchly against this idea in 2016[1].

1\. [https://news.vice.com/article/trumps-views-on-trade-are- clos...](https://news.vice.com/article/trumps-views-on-trade-are-closer-to- bernie-sanders-than-the-republican-party)

<comment><USER7> According to USA Today Bernie did say that

[1][His campaign says Sanders also would impose countervailing tariffs on imports from China and Japan "until they stop dumping steel into the United States and stop manipulating their currencies."]

1.[https://www.usatoday.com/story/news/politics/onpolitics/2016...](https://www.usatoday.com/story/news/politics/onpolitics/2016/03/31/bernie- sanders-pledges-rewrite-disastrous-trade-deals/82473012/)

</comment></comment></comment><comment><USER8> Won't this just add costs to higher value manufacturers further up the supply chain?

<comment><USER9> Tariffs do increase costs. However, if China is actually dumping heavily subsidized steel on the market (supposedly via other countries) and driving prices below cost, and if this puts our steel mills at risk of closing (which seemingly it does), not imposing a tariff risks a supply shortage in the future when China cuts heavy subsidies and incentives. Steel mills take a very long time to build and scale to operation, and this would be devastating, more so than slightly increased prices now.

It can be argued that something similar is happening with oil, in which OPEC countries have massively increased their output, many at a loss, to prevent the U.S. shale oil industry from developing into a contender. The government has turned a blind eye to this for 2 reasons, I think

1) The supply glut has devastated the Russian economy and currency, and the enemy of my enemy etc. -- this hearkens back to Obama-era foreign policy of sanctions during the beginning of the Ukraine conflict, and cozying up to/improving our "alliance" with Saudi Arabia.

2) Imposing an oil tariff/intentionally raising oil prices in any way is a huge political no-no as the populace refuses to pay more at the pump. This is despite prices more than double the current level (considering inflation) being tolerated at the pump not long ago at all.

</comment></comment><comment><USER10> What authority does the president have for such tariffs?

<comment><USER10> Ambrose Bierce gave an accurate description of the ultimate end in this kind of trade barrier: _TARIFF, n. A scale of taxes on imports, designed to protect the domestic producer against the greed of his customers._

</comment></comment><comment><USER11> Bush 2 tried this in 2002 and lifted it in 2003 because the unintended consequences were worse. Obama also tried targeted tariffs, they were lifted. This just a way to tax specific vertical industries and reward others, picking and choosing winners. And taxes are ultimately paid by American consumers.

Also, most steel imports come from Canada, Mexico and Brazil, not China.

In a normal administration, this would get lifted when the retaliation begins and it becomes clear the only way to win is not to play. But...</comment>


Show HN: Fullscreen Calendar for Your Existing Todo List - <AUTHOR> http://textcal.com?v=1 <comment><AUTHOR> TextCal is being improved daily, any feedback would be appreciated! Thanks.

</comment><comment><USER2> Can this be selfhosted?

<comment><AUTHOR> Hi, yes it's possible if there is enough demand. For now, I'm focusing on core features first.</comment></comment>


The Evolution of the Logo - <AUTHOR> http://www.smashingmagazine.com/2010/07/06/the-evolution-of-the-logo/

<comment><USER2> Well.. You might find Logorama inspiring: <http://vimeo.com/10149605> The "Hardwired" movie (bad movie!) has an interesting begining scene devoted to Logos too...

</comment><comment><USER3> "We live in a Brand Era"

Very nice study, thanks for posting. In the first paragraph he says that 'we live in a Brand Era' but in fact the rest of the article shows that human civilization can be seen as the history of brands and branding. Maybe it is more correct to say that global corporations in the business of consumer goods 'discovered' branding and that's why branding is now so visible.</comment>


Ask HN: What is the best tutorial you've ever worked through and why? - <AUTHOR> I'm currently working on writing a tutorial on saltstack. As I think through the problems of trying to help someone else build a mental model, I feel like I don't really know enough theory of how that is done. It occurs to me that I've never read a close reading or literary/pedagogical analysis of a tutorial. I am currently drawing most of my inspiration from things that I liked about the django and angularjs tutorials, but I really would like to broaden my horizon.<p>So I want to know: are there any good tutorials I should also check out? Anyone who has written an analysis of what makes a good tutorial? <comment><USER2> Thank you for writing a tutorial - saltstack needs one and it will save people a lot of pain.

I don't know of any good tutorials or tutorial theory. However, someone once showed me a trick that works well when describing something complicated:

Start writing at the end. The end of the text should be the first thing you write.

E.g describe the final setup and then fill in all the missing information that is needed to understand the goal.

This makes what you write much more focused.

Another thing that works well is that the text starts by describing a problem. This makes what follows more interesting.

</comment><comment><USER3> I remember this page made me go "a-ha!" and understand asynchronous programming years ago. [http://krondo.com/blog/?p=1209](http://krondo.com/blog/?p=1209)

I don't think I ever finished the tutorial and fully Twisted in Python, but that mental model explained by the charts has since been very useful in all languages.

</comment><comment><USER4> I remember this tutorial fondly from the days of Win32:

[http://entropy.soldierx.com/~kayin/archive/Tutorials%20-%20b...](http://entropy.soldierx.com/~kayin/archive/Tutorials%20-%20blacksun.box.sk/coding/Windows%20Programming%20Tutorial/winprog.html)</comment>