You probably don't need that hip web framework - <AUTHOR> https://char.gd/blog/2019/you-dont-need-that-hipster-web-framework <comment><USER2> SPAs become necessary when the user experience requires bells and whistles, like cross-widget consistency of like/friend request counts (the original use case of React IIRC).

It's not "you ain't gonna need it," it's "you are gonna need it, users will judge you by your fluidity, sure it's overkill right now, but the overhead may be less than the pain of a frontend rewrite since you may need it soon."

I've often thought that if there was a way to gradually _codegen_ a _fluent_ React codebase from Django/Rails/Laravel server-focused frameworks, and move template-by-template into a rich frontend + API, a lot more people would start with those server-focused frameworks, because there wouldn't be a need for a full rewrite. It would be a holy grail for our industry and let us develop business apps way faster. Not an easy problem to solve. Email me if anyone reading this wants to chat though!

<comment><USER3> The underlying concept of React is so intuitive that I would hope that browsers provide a native implementation. Use a `<script language="jsx" />` tag or something so you still have the old fashioned API.

<comment><USER4> Web components

</comment></comment></comment><comment><USER5> I feel very strongly about this: The single most important thing for a growing software project is Using Opinionated Tooling.

Too many new projects, libraries, frameworks, etc come around and broadcast "we're Unopinionated!" like that's some great thing.

You cannot, without exception, develop complex software without asserting and extrapolating opinions about design patterns, tools, frameworks, layout, etc somewhere in the stack. Its impossible. You'll end up with an unmaintainable mess.

Medium and Large companies will naturally develop a bunch of internal opinions about things. Internal tooling. CI. Development and Deployment environments. Those are all opinions that get built up over time, based on the experiences of the people who build them. This is fantastic; its how companies like Google and Amazon have reached such massive scale, but how many other companies start failing when they try the same.

Small companies and Startups do not have these opinions. They _have_ to outsource their opinions, at least at the start. A large company might say "yeah we have our own blackboxed JS serverside framework, just use that it'll do logging, tracing, error reporting, its great." Small companies won't have that. So, use Rails, or Phoenix, or something that is highly opinionated. Learn what works. Learn what doesn't.

This is Javascript's fatal flaw. And it is massive. And it still has not been improved years later. There is an extreme lack of opinionated tooling. NextJS has been doing some very interesting work introducing a more productive and opinionated frontend development experience. The backend really has nothing similar; the closest we got was Meteor, and it has/had too many weird technical issues and poor design choices to be considered a good choice. The team behind it then mostly moved to Apollo, which reverted back to championing how unopinionated it is.

<comment><USER6> Makes sense why Apollo is such a clusterfuck then. Have you looked at Nest for Node on the server side? I'm using it for a client project right now and find it the best offering for server side javascript. The ecosystem _is_ still immature though relative to something like Rails or Laravel.

<comment><USER7> What's wrong with Apollo?

<comment><USER5> I don't feel that anything is wrong with it; it's just not the whole answer for many projects. You end up bundling tons of middleware for things like logging, metrics, tracing, authn, etc. If you use typescript, you inevitably end up wanting more type safety so you'll reach for resolver codegen, which Apollo does not do on the server (they _do_ do it for the client). And it doesn't assert any opinions about how the _rest_ of the app should be structured, such as business logic, dependency injection, etc.

Apollo Server would be a great component in a broader, opinionated server-side web framework.

</comment></comment></comment></comment><comment><USER8> At the end of the post he mentions what I think is a really under-rated approach: a "normal" server rendered application with Vue components used per- page when the UI is highly dynamic.

I've built a relatively large app this way and found it to be quite nice. Vue works very nicely inside the container elements in the page where I need it, and it's pretty easy to bootstrap the initial state into the page using the same serializers I do for JSON endpoints, so once it's rendered users can spent a lot of time on a particular screen without any further page loads.

The last bit that's nice is bundle size. It's not too hard to split bundles based on unique entry pages, so you can end up with something like 30kb of "global" JS and then a second bundle for the big meaty pages that may range from 20 - 200kb. With caching that means 90% of screens have a very small payload and load really fast, and the rest have a slightly slower first load and then the same perf profile.

This has been a highly productive way to work, I'm surprised that it's not written about more often.

<comment><USER9> Seconded. This is a great way to go.

Quite often there isn't a reason to have SPA routing. But that doesn't mean you can't enjoy lots of benefits of the fronted framework without the unneeded complexity solving something you don't really need in the first place.

</comment></comment><comment><USER10> You probably need the right tool for the job. I'd argue that react, Vue, and company are only best for true web _applications_, that is highly stateful projects that are more akin to standard desktop apps than web pages, ex: google docs.

If you need server side rendering that could be a sign that what you have is a lot of public indexable information and that most often describes a traditional web site instead. In that case your "old school" rails or laravel solutions are almost definitely a better choice.

</comment><comment><USER11> Why do we keep seeing posts like this? My team _absolutely_ needs React/Redux/Sagas/Webpack/whatever-you-want-to-hate-on-today, to ship and yeah we ship our backend with Docker. Why do I know we need it? Because we have years of experience in our workflow and we understand the problems we need to solve in the development workflow and timeline our company uses. Do you know who _doesn 't_ understand our needs? Someone writing a low-quality post about how _their_ specific needs can be met with existing technology. Please just leave me be and go focus on solving your own problems, I wouldn't be using this technology if I didn't think it worked better than anything else.

/rant.

<comment><USER12> My theory is its like this mostly because on HN because there's no downvote for posts. Everything useful that can be said about how bloated web frameworks supposedly are has pretty much been said imo, but there's a niche of people convinced every web app is actually simple and should be done using Netscape 4 era HTML.

I'm all for simplicity... but if you are developing a large web application, you probably would benefit from "heavy" web frameworks (they're not really that bad though.) What "large" is can be debated, but I'd argue most pages we use today are "large" enough. HN is a good exception. GitHub, large publications, webmail, online shops, anything dealing with realtime data... It's probably worth it.

<comment><USER7> Github is actually a great example - i think it's getting better gradually, but for a lot time it was really obvious that it was server-rendered pages with a few ajax calls sprinkled in to do small things like update the status when the tests finish. And it led to all kinds of weird edge cases and unpredictability, some things would live update, other things you need to do hard refresh to see the latest version, sometimes when using the back button it would reload the original version of the page before the ajax calls had succeeded so you'd see old data.

Clearly it wasn't bad enough to drive everyone off the platform, but there's no way you'll convince me that that was a better system that a well-written SPA built with modern tools.

</comment></comment></comment><comment><USER13> In short: Pick the right tool for the job. Some projects need systems like React; some don't. A lot of projects do _NOT_ need complex underlying systems - and some do. It's sad that "pick the right tool for the job" is somehow controversial.

<comment><USER14> funny, I just replied to another comment almost word-for-word in exactly the same terms, before seeing yours. I agree completely.

</comment></comment><comment><USER15> To be honest, I'm still fine with jQuery and Laravel. I've looked at React and Vue and while they are marvels, I ain't got that kind of time.

But, I also don't write mobile apps. I'm dealing with desktop and the rules are different there.

<comment><USER16> My takeaway from this article is to use what you know if you want to ship something. With every new project, you're given the choice to use a new stack. I think it's pretty rare that you want to ship something, have the chops to ship it, but some new magic thing is worth the time investment to make it happen.

For instance, I really don't want to take the time to learn Laravel. I get my fastest work done with React and a turnkey serverless solution.

</comment></comment><comment><USER17> "Probably" perhaps overstates the case, but it's fair to imply there should be a _question_ about if you need it, and the default answer should not always be yes.

Here's some heuristics I like:

If nearly all of your application's data presentation/processing needs map cleanly to HTTP/REST semantics for the various entities in the system... you probably don't.

If your UX involves representing/manipulating the same data in several different ways on the page and this data is going to change, _especially_ in ways that don't map cleanly to HTTP semantics, you should consider that you do need the hip framework. Probability rises depending on how frequently user interactions produce different views of the data.

If your data is a headache to represent in HTML, you probably do (also, if you don't have an adequate general automated way to represent your data in HTML from some model description, you will likely either gravitate to solving this problem one way or another, or gravitate to a hip front-end framework).

If you ask yourself what problem you're solving with your front-end framework, and the answer either includes the word "modern" or another adjective describing a merit you aren't exactly sure relates to a specific problem to be solved, then you probably can't yet make an informed decision about whether you need that hip web framework. But, OTOH, making uninformed decisions is one way of getting the experience necessary to make informed ones, so...

</comment><comment><USER18> The promise of front end frameworks is realized by startups when using a BaaS (backend as a service) - like Firebase.

The idea is that you only have to worry about one environment (the browser - yeah, I get the irony) and one deployment instead of multiple (the former plus backend deployment, monitoring, etc.).

The second you start worrying about SSR (server side rendering) you're suddenly taking on the complexity of writing a backend again.

<comment><USER19> My understanding of node's birth and rapid rise was that it was "backend tooling for frontend-devs" \- suddenly it gave the front-end teams the power they needed to launch quickly using what they knew.

I've been looking for quite some time for "front-end tooling for back-end devs" without success - there are some great frameworks like Postgrest or Hasura which take you from Database through to API interface, but then you're faced with raw Javascript and all that pain synchronising browser state with the API via a web-worker. My attempts to use Vue & React have just resulted in the exchange of one kind of complexity (raw Javascript state change) with another (learning the framework).

I'm all ears, if anyone has used anything (framework, IDE, WYSIWYG editor, some SAAS app, anything) that simplifies the journey from OpenAPI spec to a webpage with a UI that changes as the API returns things.

<comment><USER20> There are many tools that will turn backend code into interactive UI, but they generate a mess on the front-end.

</comment></comment></comment><comment><USER21> > your first version of your idea almost always doesn't need that hipster web > framework you're thinking about using.

No, but I bet your last version will have. Right before it fades into obsolescence, never to be seen again.

</comment><comment><USER22> I ve been using Jquery since long time where almost every frontend article says it's an antipattern. But it's never gonna give me up, never gonna let me down.

</comment><comment><USER23> Even though I do some Angular now and then, I still reach for RiotJS (and D3) whenever I want to build a PoC. A lot of front-end stuff is just too complex to iterate upon quickly and with minimal tooling (I keep changing machines, and the overhead of setting up new projects/workspaces every time has always been a pain, even with the umpteen Node-based bootstrapping tools of the post- Yeoman era).

</comment><comment><USER24> He mentioned that it took a long time to get going with some of the frameworks to get an MVP but the advantage of most of those is that while they take time more to learn you'll be more productive with them in the long run and there will be less spaghetti code.

</comment><comment><USER25> The frontend landscape has actually been relatively stable over the last 2 years or so, with no major new contender coming up because things on the table now are all very mature. I don't foresee this to change any time soon with React and Vue, both really robust and complete, covering up two extremes of the spectrum.

The fact these recurring shitposts always began their rants with how freaking fast things are moving (in the speed they perceived) and that they couldn't keep it up strongly suggested that they're outta the loop for a long time or they aren't good frontends in the first place. It's also really harmful to the industry; I've seen a few frontend wannabes backing out because of all these uncalled for FUDs creating mental barriers for newcomers while I've repetitively tried to assure them it's really not that unstable in recent years.</comment>


Ask HN: Which domain registrar and hosting provider do you prefer? - <AUTHOR> I'm looking for a place that's around the average $10/year or lower and has a nice web panel design to manage domain names. <comment><USER2> Long time ago tried Gandi.net because of their "no bullshit" policy and stayed with them because it's true. Also looked at namecheap but when they insisted on copy of my id it ended with me never returning.

I use Kimsufi for hosting and never had any issues. Was a customer of online.net at the same time but only until the recent price hike.

<comment><USER3> Another vote for Gandi from me for domain registrar. A lot of people don't seem to like the new web UI, but I'm satisfied with their offerings.

<comment><USER4> I'm a longtime Gandi user. But I absolutely loathe the new web UI. To the point where i'm considering moving my 200+ domains somewhere else.

At the time I chose Gandi for the 2 factor auth, and because it was a European company, but in the meantime there is plenty of other registrars offering the same.

<comment><USER5> > i'm considering moving my 200+ domains somewhere else.

Just curious, but who does that? I can only afford to renew a small handful of domains, never mind 200+. I presume they are all monetized in some way?

<comment><USER6> In my case, it's return on investment. If I create some code for one city. Why not use that code for city X.com, city Y.com, city Z.com, ... I'm not saying it couldn't be done a different way. Using just one domain.

</comment></comment></comment></comment></comment><comment><USER7> There were two large-ish stories about domain registrars around two months back which triggered some side discussions about various registrars and their pros and cons if you dig a bit:

[https://news.ycombinator.com/item?id=18059792](https://news.ycombinator.com/item?id=18059792)

[https://news.ycombinator.com/item?id=18083641](https://news.ycombinator.com/item?id=18083641)

</comment><comment><USER8> I use Netlify (specialized in JAMstack / static sites). It has a generous free plan.

They can also register your domain, and the integrated interface makes it very easy to sping up a new site from a GitHub repo, assign it a new domain name, get SSL and be up and running in ~2 minutes.

</comment><comment><USER9> I've been using namecheap. Their panel is straightforward, and prices are ok. $10/year for which tld? If .com they should be close, but above your target. For other tlds they have long price list.

<comment><USER10> I use namecheap too, been a customer for several years, find the pricing good and haven't looked elsewhere because it's met all my needs.

</comment></comment><comment><USER11> In order to set some of Fastmail's domain security features (SPF, DKIM) I needed to add some txt records to my domain. My previous registrar only had some predefined fields in their web-form (like MX- , A-, AAAA- records, etc.) but there was no way to set these custom txt records.

After some research I landed at Hetzner who allow me to just edit the BIND zonefile according to my needs. No oversimplification that takes away features but also no hand-holding. I don't know why you asked for a 'nice web panel design' but afaik these providers usually don't have the HN-audience as their target. They target those 'non-techies' who need some sort of web-presence and to limit their support-needs they usually dump-down the UI to the basics.

<comment><USER3> Another vote from me for Hetzner as hosting provider. Solid feature set, good uptime, good support.

</comment></comment><comment><USER12> I have used [https://pair.com](https://pair.com) (or their domains side: pairnic.com which now seems to redirect to [https://pairdomains.com](https://pairdomains.com)) since about 1994 and they have always been reasonably low-priced (I think it was $8-10 up front then ~$1/month for a domain) and they have always provided good support, clear policies, good documentation, and zero nonsense. I.e., just what I would want from a sustainable business that treats others the way they would want to be treated. (Same goes for their ubuntu or FreeBSD shell accounts and site hosting, etc.)

(ps: they are in the USA: Pittsburgh Pennsylvania, and maybe Nevada?)

</comment><comment><USER13> Google Domains is cheap, and has a simple, fast interface (lightyears easier to use than GoDaddy, for example). No idea on if there are many missing features. Surely they have integrated it with APIs by now so you could programmatically add domain names, if needed.

<comment><USER14> There is no documented API access for Google Domains.

</comment></comment><comment><USER15> Domain Registrar is now CloudFlare for me. Sadly it isn't yet GA, [https://www.cloudflare.com/products/registrar/](https://www.cloudflare.com/products/registrar/)

<comment><USER16> I am very much looking forward to CloudFlare registrar.

For the last 15 years, I have run OpenDomain - a project that gives domains to OpenSource projects for Free. I have used almost every registrar and I am actually a sub-registrar through TuCows and SrsPlus where I can be a domain reseller.

</comment></comment><comment><USER17> Domains:

* namecheap.com: It's cheap and easy to use. Has a lot of TLDs to choose from.

* freenom.com: Started using free domains, dropped most of them, kept a few as paid domains, which I don't regret.

Hosting:

* server.lu (now part of server.com): Luxembourg is a great location for hosting, especially with a 1Gbit port. I still have my old contract which I don't plan on terminating as long as them don't force me. Getting the full bandwidth throughout Europe. Not the cheapest plan, but one of the best dedicated servers I ever owned.

</comment><comment><USER18> > Which domain registrar

Gandi, I've used them for over a decade now and never ceased to be impressed.

> hosting provider do you prefer?

Joyent, (full disclaimer, I worked here previously) they really got containers right, just compare Fargate or ECS with Triton both as a developer and an operator. Joyent's path makes much more sense to me. Manta is also impressive, and being able to spin up a container right where an object lies is perfect for some workloads.

</comment><comment><USER19> I use Google Domains. They offer a refreshingly clean UI and they're relatively good with computers over there.

<comment><USER20> I also have a few domains on Google, but I'm actually not a huge fan it. Aside from it being slightly more expensive, outside of the domain search UI, I find the UI for managing a domain clunky, and confusing. I'd imagine it would be easier to use if I were more bought in to the Google ecosystem (e.g. GSuite) as there are tons of options for integrating your domain with google services whether or not you use them. However, I only use google domains, and all of the stuff they're pointing at are on other services (Digital Ocean, ProtonMail, etc.) so most of the management UI for me is just noise. Because of that, along with most of my stuff being on DO, I just have them all pointed to to DO's nameservers, and I do all my management through DO's DNS service (which is free) and don't have to use google's UI after setting the nameservers. DO's UI is quite a bit cleaner and easier to use (in my opinion), and the tight integration with DO's other networking tools (API access for LetsEncrypt and Floating IPs mostly) is just a nice plus.

I'll (hopefully remember to) switch my domains over to (probably) namecheap as it's usually the most recommended one in these threads to save a few bucks a year when it comes time to renew them.

</comment></comment><comment><USER21> I use what I think is a fairly small registrar called Porkbun: [http://porkbun.com](http://porkbun.com)

I like that they at least seem smakk, their panel is great, I can buy a new domain in well under a minute, and their branding is a little funny.

</comment><comment><USER22> Currently Hover for domain names (but will soon be transferring to Cloudflare Registrar when it's available).

For hosting, currently Linode, but I am also working on deploying to Digital Ocean in tandem for extra resiliency. I'll use failover GeoDNS to balance between the two.

</comment><comment><USER23> I use Route53 from AWS for DNS, that way I can always move around regarding hosting and have full access to the records, I mostly use Hetzner, AWS and DigitalOcean for hosting. Registrar is Gandi at the moment, but might move if I find a decent replacement.

</comment><comment><USER24> I use iwantmyname.com because I find their DNS configuration really simple compared to other registrars I have used. DigitalOcean for hosting, and as a business we use Cloudflare for DNS, but personally I just use the iwantmyname tools.

</comment><comment><USER25> Namesilo ... Free privacy, api, bulk discounts... cost for a .com has just about always been 8.50'ish cheaper when they're having a special... they even have 2 facter authentication and other perks...

<comment><USER26> Another happy customer of namesilo.com here! I have three domains with them for about a year. No complaints. Everything just works.

</comment></comment><comment><USER27> I've used a lot of registrars over the years, and overall Namecheap has been the best experience. I wish they supported U2F, but other than that, no complaints.

</comment><comment><USER28> [https://GreatLime.com](https://GreatLime.com)

</comment><comment><USER29> I like name.com they privacy option is reasonable compared to godaddy

</comment><comment><USER30> I'm using namecheap. No issues so far.

</comment><comment><USER31> iwantmyname.com for domains, simple registration with very little upselling or marketing gumpf

CloudFlare for DNS

Vultr or DigitalOcean for hosting

</comment><comment><USER32> Namecheap and digital ocean

</comment><comment><USER6> I'll let others pick the registrar.

(The question becomes. What do you mean by manage domain names. The full shebang. Or only the simple stuff, like email & web forwarding.)

I use domain registrars from all over the world. And am familiar with domain registrars from all over the world. It's a result of the land rushes of the early 2000's. Where names were awarded in a round robin fashion. Pre- registering* with as many registrars as possible could increase the chance of obtaining a name. For the most part I've stuck with and had good experiences with the registrars that got me the domain names I was after. So you can just about pick any registrar and get a fairly good experience.

However; they have their quirks. I transferred some names to a register because their prices were low. But then found out they renew names once a year. As they're expiring, for only one more year. So every year I'm on pins and needles hoping my credit card won't be denied for some reason. I ran into trouble with some other companies in the fall this year when a new credit card was issued to me, and the old one stopped. Just as names needed to be renewed. Just as my Amazon Web Services bill came due.

Some registrars used to have clunky interfaces. Many have upgraded and that's no longer the case.

I would want a registrar that allows multi-year registration and auto renewal. Email & web forwarding. The ability to easily change name servers and modify DNS records (you may need to provide domain ownership to your hosting provider through modification of your txt record). A registrar that makes it easy to lock and unlock a domain, and makes it easy to get the authorization code needed to transfer a domain. A registrar that let's you have your zone file when you want to transfer to another registrar. A registrar that let's you set a privacy policy so your email address isn't shown in the whois database and so you don't receive spam messages. I have somewhere shy of 140 2nd level domain names. And I used to see 140 of the same email. You want a registrar that gives you backup name servers and name servers that won't slow you up.

(I believe my .tw domains don't allow auto renewal; and you have to renew before the expiration date. A gotcha.)

There might be legal considerations. You might want to register domains in a country where the laws are different - to avoid trademark problems.

I would want a register that isn't on shaky financial footing. Where if the registrar went out of business my domains might be tied up and/or available. It's happened.

So I guess what I'm saying is there's a lot more involved then just price.

There are a lot of domains that are much more expensive then $10/yr. Maybe those expensive domains would be worth registering if you could get a more sensible name. Maybe an extension reserved for the business you're in. As an example; if you're Wells Fargo, wellsfargo.bank $10/yr. seems kind of low. Unless the registrar tacks on charges for name servers, email & web forwarding, ... I think it used to cost $35 a year through the only registrar, Network Solutions. So I don't mind paying $15 or $20 at all. My .tw names are normally $40/yr __. And other extensions can be much, much higher.

Google domains is easy to use and doesn't cost any more then the other registrars I've been using.

* I ruefully found out how credit cards actually worked after the land rushes started. They can authorize transactions on your card even though you haven't won the domain name(s). So if you want to get involved in a round robin land rush. You really want to have a high credit limit.

 __I get .tw names from www.bookmyname.com (Online SAS) in France for less then half the cost

<comment><USER6> It must have been lost somewhere in the editing, copying, and pasting. I don't see a paragraph about the root apex. I would register with someone other then the hosting company you're using. And then use the hosting company's name servers. So you then could use the root apex (jobs.us), as opposed to using a CNAME record to get to the subdomain (www.jobs.us).

</comment></comment><comment><USER33> Registrar: iWantMyName

DNS: CloudFlare

Hosting: Linode</comment>


The Web Is Becoming Unusable - <AUTHOR> https://email@example.com/the-web-is-becoming-unusable-e7aec886402f <comment><USER2> Is the author aware of the irony of posting this on a Medium blog?

Maybe I'm getting too philosophical here, but "be the change you want to see in the world" is really a valuable mentality. If all we do is complain about what others are doing while being unwilling to change our own behavior, it's not just counterproductive, it's hypocritical.

[edit] after reading through again, I believe the author is just naive (ignorant, not hypocritical)

<comment><USER3> Yeah, this case seemed even more extreme than usual. Article starts 'below the fold' and I have a tall display.

<comment><USER4> Also was below the fold for me, below a medium advertisement. ;-p

</comment></comment></comment><comment><USER5> > Second: Ads. Oh, ads. You horrible, horrible little fucking squares of > pointless content I wish I could so completely ignore. I wish there was a > global browser override to disable ads, powered by Google and Apple. Pay > $15/mo to avoid all ads on the web. Payments are made to sites you visit > (e.g. Medium style).

Maybe us software engineers with our awesome salaries can afford the $15/month for an ad-free web, but:

1\. Many either can't afford this or won't see this as a need, because

2\. Many people don't care about ads being there (see also: YouTube Red), so

3\. Content generators will continue to post ads, which

4\. Are easy to block if you're even mildly technically savvy

<comment><USER4> Last I checked I'm paying an absurd markup, much larger than $15/month, on my internet access.

There is only minimal competition as it seems to be nearly impossible for other companies to lay fiber or cable, DSL is too slow, cellular coverage is spotty, and satellite suffers from excessive latency.

The problem doesn't seem to be lack of money paid by internet users, but where it goes.

</comment></comment><comment><USER6> The cookie issue may be changing. Here is some discussion from yesterday: [https://news.ycombinator.com/item?id=23090393](https://news.ycombinator.com/item?id=23090393)

Also sounds like the author should use an ad blocker.

> We need platforms, tools, and legislation that help guide the web to a > future that isn't complete shit.

Legislation to fix UX? Or to resolve the aforementioned cookie issue? I'm skeptical that legislation is going to make any changes to UX in the direction that the author is wanting.

</comment><comment><USER7> Posted on Medium...

Brave (or at least the idea of it) seems to satisfy the author's requirements around ads. Then again, so does an ad blocker.

</comment><comment> trail-system It will come down to people committing to working a little harder to do things "right" in their computing.

Bad technology like this exists in part because people are using it.

We don't need legislation we need public awareness to translate into public action.

</comment><comment><USER8> Yes, the web is becoming unusable.

What we need are better protocols, file formats, and software. Don't lock into using your software, into complicated file formats, etc.

I set up Gopher, NNTP, etc on my computer, and you can do same if you like to do so.

<comment><USER9> Consider the possibility that bad protocols which invite abuse are the reason they succeeded versus 'better' protocols.

</comment></comment><comment><USER10> I don't have any problems using it. There are fixes for things that bother me.

</comment><comment><USER4> What shocks me is how unusable search engines are becoming.

Maybe we need to bring back human-curated directories and webrings.

And extensions that fix unusable web sites like Medium.

<comment><USER11> What is unusable about them? I often find the information I need pretty easily. I often select last year to get rid of stale information, but that can be optional.

</comment></comment><comment><USER12> I remember I was susbscribed to a weekly newsletter which showcased side- projects on a bidding basis.

But can't find it/remember the name!

</comment><comment><USER13> This article is posted behind a paywall. Lol.

<comment><USER14> Came here to say this. I wish there was an extension which just logged you into a bs account for most sites(excluding some like netflix and gmail) to get around login-walls

<comment><USER15> On Medium just disable JavaScript. It makes the website pleasing and lightweight.

The is what I call graceful enhancement, or progressive degradation.

<comment><USER2> > progressive degradation

That's hilarious! The modern web: what you get when you turn progressive enhancement on its ass.</comment></comment></comment></comment>


Up in flames - <AUTHOR> http://www.cringely.com/2012/02/up-in-flames/

<comment><USER2> Cringely doesn't identify his friend from Purdue, but there is a professor at Purdue that has a long standing fascination with lighting charcoal grills.

<http://en.wikipedia.org/wiki/George_H._Goble>

"In 1996, Goble was awarded the Ig Nobel Prize in Chemistry, for preparing a barbecue for cooking in less than 5 seconds by the use of a smoldering cigarette, charcoal and LOX (liquid oxygen). This act attracted the attention of the West Lafayette, Indiana fire department, which warned him to never let them catch him in the possession of LOX near a barbecue fire ever again."

Writeup: <http://www.humournet.com/collage.archives/collage096.txt>

Watch it here: <http://youtube.com/watch?v=sab2Ltm1WcM>

<comment><USER3> My god I remember that guy from the late 90's. There was an Internet fad around then.

Now I feel old.

</comment></comment><comment><USER4> In other dubious class action news:

<http://centerforclassactionfairness.blogspot.com/>

</comment><comment><USER5> I was really hoping the post will be about the opening photo - the industrial vacuum attached to the grill. Instead it was about something inherently boring.

<comment><USER6> Read the writeup linked here: <http://news.ycombinator.com/item?id=3637392> (Use this video instead: <http://www.youtube.com/watch?v=TBLr_XrooLs>

(But I'll quote for you: "Then we figured out that it would light faster if we used a vacuum cleaner.")

<comment><USER7> Youtube says your link is adult content and wants me to login. Believe it or not, I never logged in there, and was never asked to.

Damn Youtube, it's _How to light a grill in 2 seconds_ , not a girl.

</comment></comment></comment><comment><USER8> I don't buy the argument that you're above the law if you're a manufacturer. A credible argument for tort or truth in advertising reform across the board? For tax reform across the board? Sure.

But this whole they're so fluffy for building things in America so let's treat them specially, regardless of how superficial _special_ might seem in this cases, is an insult to the rule of law.

<comment><USER9> It's not that they should be treated specially. The problem is that by being an American company and not hiding behind offshore resources they make themselves more vulnerable to the idiocies of our judicial system.

The proper remedy lies in tort reform, but given how successful we've been with that, I don't hold out much hope.

</comment></comment><comment><USER10> The solution is to take over as much of your manufacturing process as possible. That way Weber can avoid this type of convoluted scenario.

US companies used to do a lot more of this a hundred years ago. When industry is hitting on all cylinders and there's a lot of diversity of suppliers, owning your whole manufacturing stack is usually not very efficient. However, when key ingredients / suppliers in your manufacturing system are eroding, it becomes a method for keeping your operations in the US and controlling quality.

Web should manufacture their own valves.

</comment><comment><USER11> tldr: companies that are legally held accountable for selling defective products might end up trying to evade taxes through holding companies to compensate for damages paid.

<comment><USER12> Is this actually the case? Cringely implies that the crux of the suit is a false advertising claim.

<comment><USER11> He says "the system as it is running right now doesn't seem to be working as well as it should at helping U.S. manufacturing employment" after talking about the class action suit which seems to imply that a class action suit is against the interests of the US manufacturing sector.

<comment><USER6> You need to read it again. Or read it more carefully or something.

Basically what he is saying is that the class action system is giving an incentive to move manufacturing out of the US since then there is nothing to sue.</comment></comment></comment></comment>


Symbian OS Goes Open Source - <AUTHOR> http://mashable.com/2010/02/04/symbian-open-source/ <comment><USER2> There is already a thread on this topic - <http://news.ycombinator.com/item?id=1099722>

</comment><comment><USER3> So what, it's open source now, the OS still sucks. Nobody builds symbian apps for fun, the only people using the platform are paid to.

If they'd done this 4 or 5 years ago, they might have had a chance. But now there are viable alternatives which suck less.

</comment><comment><USER4> Does this mean I could install a newer version of the OS on my S40 phone making it hackable? PS. I dissagree ith what the article say's, on the lower end phones Symbian is still the leader.

<comment><USER5> S40 != Symbian</comment></comment>


Need Beta Testers for Parse Competitor - <AUTHOR> http://rocketdb.io

<comment><USER2> I signed up but have yet to receive my confirmation email ?</comment>


Sonic.net CEO: We Delete User Logs After Two Weeks. Your ISP Should, Too. - simba-hiiipower http://www.forbes.com/sites/andygreenberg/2012/06/22/ceo-of-internet-provider-sonic-net-we-delete-user-logs-after-two-weeks-your-internet-provider-should-too/ <comment><AUTHOR> I love sonic. We used them for the reddit office. They were the cheapest and fastest option. Once one of their reps stopped by just to say hi and make sure we were happy.

I've been begging them to let me give them money for my home connection.

<comment><USER2> I have Sonic at home, and applaud this log deletion policy. There's only one thing that bothers me about Sonic, the marketing vs reality of DSL.

Their marketing: $39.95/m for speeds up to 20Mbps

Their reality: ~$50/m for ~8Mbps

Now I continue to pay despite this discrepancy. I just wish there was more of an 'under-promise, over-deliver' mindset in their marketing dept.

<comment><USER3> I presume you're referring to their DSL service, in which case performance depends upon the distance between your home and their access node.

[http://www.broadbandreports.com/forum/r26910859-New- Fusion-a...](http://www.broadbandreports.com/forum/r26910859-New-Fusion- average-speed-distance-chart)

<comment><USER4> I have Fusion on Sonic and I get around max ~750KB/sec (2.97Mbps according to speedtest.net) downloads. Apparently, I'm at the tail end of the distance from my central office. Sigh.

</comment></comment></comment></comment><comment><USER5> I used Sonic when I lived in SF. Dane himself tweeted back when I mentioned them, and their customer service has been super transparent (you can see on their support page [1] how many calls are on and waiting), extremely honest and helpful, even for a nerd like me.

I have nothing but admiration for these guys.

[1] <http://www.sonic.net/support/index.shtml>

<comment><USER6> Yes. Love these guys. Every time I call support I get to talk to somebody with both knowledge and sense. In sharp contrast to when I had AT&T DSL or have to deal with Comcast for friends.

</comment></comment><comment><USER7> My gripe with Sonic is they pull stunts on the telephony just like the scumbags such as AT&T. In my case they will not supply DSL without also supplying phone service, for which I have absolutely no use. I don't even have a physical phone to plug in and haven't for years.

They claim the phone service is "free", but you get nailed with various taxes and fees. The taxes are a legal requirement. The fees are entirely up to Sonic, although some have regulatory maximums. And Sonic charges those maximums - something AT&T doesn't!

If they were honest they wouldn't hide things like this, pretending something is free when it clearly isn't.

<comment><USER8> How do you deliver DSL without a phone line in the US?

Even AT&T delivers a phone line on their "direct DSL", they just hide the costs of regulation in the rate.

This, to me, isn't a case where sonic is to blame. This has more to do with restrictive FCC requirements than it does with Dane.

Phones are due for a regulatory rework.

<comment><USER9> You are wrong. After getting a special number ( 1-800-288-2020) i was able to order dsl from att without a landline contract and phone taxes from California. Nothing.

Catch is, the advertised price of $25/mo for 6mbps only last one year, and you have to sign up for two years, paying $55/mo on the second.

Still beats paying $40 all around for the crappy cable latency i get here (at One block from the att repeater building!)

<comment><USER10> So in both cases you pay $960 for 2 years, except in one case you don't get a phone line.

<comment><USER11> My math comes out differently.

</comment></comment></comment></comment></comment><comment><USER12> UK equivalent: <http://aa.net.uk/>

_"We have no so called black boxes to covertly monitor traffic and/or pass traffic monitoring to the authorities or anyone else. Obviously the law is such that we may have to add such black boxes, but we would resist as far as possible. We may even find we are not allowed to change this web page if ever that happens. However, I, as director, am happy to answer direct questions on this matter on irc (user RevK) or on usenet and you can get paranoid if I refuse to."_ \-- <http://aa.net.uk/kb-broadband-realinternet.html>

</comment><comment><USER13> Your ISP should, unless you live in a country that does prevent that. There's a law in European Union requiring us to keep logs between 6 months and 2 years. Oh, and there are countries like Poland, whose government asked to prolong that time, as 2 years is not enough (thankfully that was rejected).

It's still a surprise to me that USA doesn't have anything like that. It's like the first time EU is first at something ;)

<comment><USER14> It's because Law Enforcement in the US has been lobbying for longer times. From the article:

DJ: I would speculate it would be an unpopular move that might result in more friction with law enforcement. Law enforcement has been lobbying to pass laws that would require service providers to keep 18-36 months of logs. It's in their interests.

<comment><USER13> Oh cool... Polish government tried to enforce 10 or 15 _years_. We were discussing whether to keep it for them as printouts in 4 points font, or just as single copies of cheapest dvds ;) Thankfully, they were not allowed to do that.

</comment></comment></comment><comment><USER15> It's worth noting that due to the PATRIOT Act, they do not delete your logs after 2 weeks if they receive a NSL. NSLs include a gag order, so you will never know if they stop deleting your logs.

<https://en.wikipedia.org/wiki/National_Security_Letter>

The feds issue hundreds of thousands of these, and they require no warrant or judicial oversight.

NSLs can not only be issued to individuals under investigation, but "communities of interest" - so basically the social network of anyone under investigation.

</comment><comment><USER16> Interesting back-and-forth, but seeing sites like this really makes me appreciate having Readability one button away. The combination of the huge banner and the facepile on the bottom of the screen make it very distracting to read.

<comment><USER17> Not to mention my Ghostery Chrome Extension found 25 tracking sites on the page.

      * 24/7 Media
      * Advertising.com
      * AppNexus
      * Bizo
      * BlueKai
      * DoubleClick
      * eXelate
      * Facebook Connect
      * ForeSee
      * Gigya Beacon
      * Gigya Socialize
      * Google +1
      * Google AdWords Conversion
      * Google Analytics
      * Invite Media
      * Krux Digital
      * Legolas Media
      * Media Innovation Group
      * Right Media
      * ScoreCard Research Beacon
      * ShareThis
      * TargusInfo
      * Turn
      * Vertical Acuity
      * Visual Revenue

I think that's a little excessive, especially for an article about keeping logs.

<comment><USER18> Many of our programmers and writers agree. We're an advertising-based business (free online news) so I view this as one consequence of that

A small chunk of these are due to social and other 3rd party features, a good chunk plain old analytics tracking, and another small chunk are due to our "brand lift" advertising guarantees (e.g. in some cases its ensured that readers are actually seeing your below-the-fold advertisements before we charge you for them).

That said, yes, more than a few Ghostery hits are so we can, e.g., buy an ad to reach Forbes readers when you're visiting Adweek.com or something. Ghostery is great and a useful instruction tool for showing the "boiling frog" that is pixels.

<comment><USER9> Tell your programmers to get informed on the safee standard being proposed at iab. Name may change.

</comment></comment></comment></comment><comment><USER19> The link is to Page 2 of the article, could a mod update it to link to the first page?

[http://www.forbes.com/sites/andygreenberg/2012/06/22/ceo- of-...](http://www.forbes.com/sites/andygreenberg/2012/06/22/ceo-of-internet- provider-sonic-net-we-delete-user-logs-after-two-weeks-your-internet-provider- should-too/)

<comment> simba-hiiipower sorry; noticed that right after i posted.. if someone could update it that would be great.

</comment></comment><comment><USER20> I think this is a great idea, but I'm curious... -- so I'm playing devil's advocate with this question -- Couldn't there be some risk that it would be tough to build a case against someone involved in illegal activity? Like how much harder is it to build a case against CP offenses with only access to two weeks of logs?

<comment><USER21> There's no way to answer that question broadly, since it depends on which other sources of information law enforcement can consult in a given case.

For what it's worth, unless you retain data forever, it's always possible to delete it the day before you need it.

</comment></comment><comment><USER22> We have sonic.net in San Francisco. Unfortunately the speeds in our neighborhood (Haight Ashbury) are dismal. 7.5 Mbits/s, for the premium service. $90 /month.

I love the ethos of the company, but we're suffering here and will be switching soon.

</comment><comment><USER23> Dane Jasper is awesome - met him a couple times at SF Night Owls - follow him here <https://twitter.com/#!/dane>

</comment><comment><USER24> I really wish I could use Sonic.net (for my home). Unfortunately (up to) 20MBps is just not good enough.

</comment><comment><USER25> I wish we had Sonic in SoCal. Only option is basically Comcast and they fucking suck.

<comment><USER26> Don't be too jealous, I'm in Mountain View and despite being a few blocks away from Google I have the same options. It's baffling.

Only SF realistically has Sonic available to them. Supposedly some backwater in Central Valley has it too.

<comment><USER27> Most people I know in Mountain View have the Comcast Business internet connection, which is basically a different company from Comcast. (Different customer service, different billing, different equipment, etc.) Apparently you can even negotiate the rate down to $75 a month, which is a lot less than I pay for Time Warner's "we are a monopoly so fuck you with a stick" package in Brooklyn.

<comment><USER25> Why does this monopoly exist? Is it related to law? Or is it related to needing a massive infrastructure to support such a business? Why can't a company "start-up" to offer fast competition in a city like Los Angeles?

</comment></comment></comment></comment><comment><USER28> Can anyone give a recommendation if my ISP choices are Webpass and Sonic.net?

</comment><comment><USER29> Switching this week. Bye bye Megapath/Speakeasy.</comment>


Show HN: Glitter.js a library for dynamic css text effects - <AUTHOR> https://cdn.rawgit.com/lookcast/Glitter.js/62641a5f346faa2894673ecef55dcf7714ba73a8/index.html

<comment><USER2> That's very nice. Would do very well as an app in [http://eager.io/](http://eager.io/).</comment>


Show HN: Filmshape – The social network for filmmakers and actors - <AUTHOR> http://filmshape.com <comment><AUTHOR> Filmshape will be a social network for everyone involved in film and TV once the app is released. Our current focus is to facilitate the connection, collaboration and project management between filmmakers anywhere in the world. The community that could be anywhere at any given time with the pressures of crew organisation, budgets and ultimately creative exploration can use the upcoming app to network and promote their work.

You can follow us on twitter too @filmshape</comment>


Introduction to Monte Carlo Tree Search - <AUTHOR> http://jeffbradberry.com/posts/2015/09/intro-to-monte-carlo-tree-search/ <comment><USER2> UCB bandit algorithms are quite simple to understand, and the generalisation of them by the UCT algorithm to tree search spaces seems like a pretty clean idea.

I had a go at using UCT to explore a search space earlier this year (not games, but selecting a good sequence of decisions inside a simulation).

The problem I ran into with this approach was that the algorithm has no way to generalise or lift experience from one explored state to other similar / unexplored states, and my search space was large. So having to evaluate each state at least once was prohibitive.

This isn't really a criticism of how well UCT can tackle the problem as framed, but more a criticism of how much better one might be able to do with a bit more structure -- e.g. perhaps with the addition of some kind of similarity metric between states, along with some bounds or assumptions on how the values of "similar" states should relate to each other.

It seems like combining some machine learning / statistical / approximation techniques to approximate the true state->value function with a UCT-like approach to guide exploration could be very effective for the right problem, but getting it to work well might be more of an art than a science.

If anyone has any pointers to reading about this kind of thing, I'd be most grateful! I have previously read about "approximate dynamic programming" techniques, e.g. [1]

[1] [http://castlelab.princeton.edu/Papers/Powell- NRLWhat%20you%2...](http://castlelab.princeton.edu/Papers/Powell- NRLWhat%20you%20should%20know%20about%20approximate%20dynamic%20programming.pdf)

<comment><USER3> Any sequence of one of more decisions with varying results _is_ a game, but you probably know that.

Aside from estimating the value of a node from similar nodes, another option is to reduce the search space by putting them in the same information set. This means that to one player they appear indistinguishable, so the same strategy is played in all of them, while the other players might still be able to distinguish them. If your game has a huge state space it's likely that some of the state just hardly matters some of the time to some of the opponents. Other methods of fusing states have the disadvantage that all players have to care about the same information.

To implement MCTS with information sets, use the Information Set MCTS algorithm (ISMCTS) [1], which is a pretty obvious and intuitive extension of MCTS. (Has nobody really described ISMCTS before?) Whitehouse's PhD thesis [2] goes into more detail, and looks at using ISMCTS to reduce the search space in games ("ICARUS"), though I didn't read that chapter. (Earlier this year I mostly-implemented ISMCTS for Cordial Minuet, a game with simultaneous moves in addition to imperfect information. Information sets are unavoidable in simultaneous-move games.)

Also, you will find loads of papers specifically discussing speeding up MCTS for Go, many of which generalise.

[1] [http://eprints.whiterose.ac.uk/75048/1/CowlingPowleyWhitehou...](http://eprints.whiterose.ac.uk/75048/1/CowlingPowleyWhitehouse2012.pdf) [2] [http://etheses.whiterose.ac.uk/8117/](http://etheses.whiterose.ac.uk/8117/)

<comment><USER4> Excellent. I did want to eventually write something showing how to modify this algorithm to handle games with randomness, and ISMCTS at a glance looks like it does just that. Thanks!

<comment><USER3> Actually, you don't need information sets to handle games with chance nodes. Standard MCTS works just fine for those. (Don't use a bandit algorithm at the chance nodes, just pick randomly.) Information sets are only needed if you have uncertainty, either because players make simultaneous moves or a player doesn't know (or forgets) the complete state of the game.

</comment></comment></comment></comment><comment><USER5> This algorithm (in it's regular form used often in games and examples) has one interesting "downside" I was exploring some time ago - selection is performed using the UCB formula. So basically it tries to maximize the player payout. But in the most games this is in fact impractical assumption, because we end up tending to expand branches that will be most likely not chosen by our opponent. As in the example (I assume gray moves are "our" moves) - we will much more likely choose to expand 5/6 branch instead of the 2/4, that will be in fact more likely chosen by our opponent.

<comment><USER6> In a game state where your opponent will be choosing the next move, you should select the next state to expand based on a UCB formula involving your opponent's expected payout, not your own.

<comment><USER5> But this requires storing and back propagating this info for the other players - something I really haven't seen in any examples (nor in this article). We cannot also assume that game is always zero-sum game and this information is not needed.

</comment></comment></comment><comment><USER7> A quick note to the author (in case he reads this): I think the "4/8" node should be "5/8" in all images.

<comment><USER4> Actually, I think it should be 3/8, since it's supposed to be the opposing player's win count.

These diagrams were supposed to just be an update of the diagrams from the MCTS Wikipedia article, adding the correct backpropagation values, but I see there are more problems than that.

<comment><USER5> This is exactly the problem I've written about - AFAIK basic UCT algorithm does not model your opponent in the selection phase (only in simulation when some heavier than random logic is applied).

<comment><USER4> Since the win counts are only incremented for nodes "moved into" by the winning player, UCB does correctly model the opponent's behavior here.

<comment><USER5> In your example script yes, but basic UCT does not do that - simply because UCT was not meant only for multi-player games in the beginning. And this is some assumption we make about our opponents (actually that they want to maximize their payout, not to e.g. win or minimize our score). Of course this is a very straightforward "application" of UCT or MCTS to the multiplayer games that was done in works of Sturtevant and Cazenave in 2008.

But it is not so easy to know about this, e.g. this is a very recent change to wikipedia page on the topic [https://en.wikipedia.org/w/index.php?title=Monte_Carlo_tree_...](https://en.wikipedia.org/w/index.php?title=Monte_Carlo_tree_search&action=historysubmit&type=revision&diff=671256114&oldid=667621950) and very often people writing on the topic are not pointing this out at all, which I find very strange and misleading.

Also in the classic MCTS you should select move which has most visits, not the one with the highest percentage of wins.

<comment><USER4> In what appears to be the originating paper for UCT ("Bandit based Monte-Carlo Planning", L. Kocsis and C. Szepesvári, 2006),

* The choice of action to be returned is the one "with the highest average observed long-term reward"

* For simplicity, the payout value used in the paper is 1=win and 0=loss, which will result in the agents maximizing their wins. Presumably one could choose other payout values (i.e. points for that player in games that have that concept) to adjust the priority of the agents. The mathematics does not seem to forbid it.

* This paper uses as their first experiment a multi-player game. They state, "...for P-games UCT is modified to a negamax-style: In MIN nodes the negative of estimated action-values is used in the action selection procedures." It is straightforward and more generalizable to games with N > 2 players to simply record values from that player's standpoint in the first place, instead of manipulating it after the fact in this manner.

I hope this clarifies some things.

<comment><USER5> From the "An analysis of UCT in multi-player games", Nathan Sturtevant, 2008: "Multi-player UCT is nearly identical to regular UCT. At the highest level of the algorithm, the tree is repeatedly sampled until it is time to make an action. The sampling process is illustrated in Figure 2. The only difference between this code and a two-player implementation is that in line 5 the average score for player p is used instead of a single average payoff for the state."

I think this is kind of a clear statement that original paper (and after it a lot of writing on the topic) may be lacking. Of course people used this simple generalization before and it is pretty straightforward, but it is not that obvious at a first glance. And I've seen quite a lot of code examples, images explaining UCT for games and articles that were just not saying a word on this. Or even worse - just doing it wrong for multiplayer games.

Choice of action is a different topic, as I remember correctly there was also a paper proving that win rate and most robust branch are in the end performing the same ;)

Hope you will continue this series, because it is really good and code examples are really nice!

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> sounds a lot like gaussian kd-trees

[http://graphics.stanford.edu/papers/gkdtrees/gkdtrees.pdf](http://graphics.stanford.edu/papers/gkdtrees/gkdtrees.pdf)

Instead of doing a brute force nearest neighbor search, samples are propagated through a tree.

This technique is exotic, but not new.</comment>


12 Apple Watch Apps That Could Change Your Life - <AUTHOR> http://www.dtelepathy.com/blog/inspiration/apple-watch-app-ideas

<comment><AUTHOR> Awesome concepts from Digital Telepathy, ranging from blood pressure monitor to an app for creating collaborative art. Which idea do you wish existed?

</comment><comment><USER2> Awesome post. Keynote is a real cool concept for Apple Watch.</comment>


Sectigo AddTrust External CA Root Expiring May 30, 2020 - <AUTHOR> https://support.sectigo.com/articles/Knowledge/Sectigo-AddTrust-External-CA-Root-Expiring-May-30-2020 <comment><AUTHOR> So we've done some testing, and it looks like this certificate needs to be removed from the root ca bundles of Ubuntu 16.04 and earlier, as well as Debian 9 and earlier, even if these hosts are otherwise up do date (including the root certificate bundle). We've gone head and rolled out a fix, but I guess consider this a heads up.

I mean, Debian 9 isn't that old.

Its relatively easy to test -- create a host using an older, affected distribution, set the time forward to, say, 6/1/2020, and run 'curl [https://crt.sh/'](https://crt.sh/') . You should get a ceritifcate expired error

<comment><USER2> Why does it need to be removed? Shouldn't it just cleanly expire and be ignored?

<comment><AUTHOR> Yes -- but on older linux distributions curl, etc continue to try to use it

<comment><USER2> Interesting, I would've expected them to ignore an expired cert in the chain if there is also a still valid one.

</comment></comment></comment></comment><comment><USER3> I have this issue on my browser using my older Mac Book Air. How do I fix this in laymen's terms?

</comment><comment><USER4> I o</comment>


AWS re:Invent Conference Badges Tracked Attendees' Movements - <AUTHOR> https://vice.com/en_us/article/pkeyqk/amazon-conference-badges-tracked-attendees-movements <comment><USER2> People going to toilet every 30 minutes are caught. I have heard aws events are full blown las vegas style bonanza's.</comment>


P is not equal to NP - <AUTHOR> http://arxiv.org/abs/0810.5056 <comment><USER2> I run the theory of computing blog aggregator (<http://feedworld.net/toc/>). P =? NP "solutions" show up on there every couple of weeks. The community basically just ignores them because of the virtual certainty that it is flawed. Here is a meta-page discussing the attempts: <http://www.win.tue.nl/~gwoegi/P-versus-NP.htm>

<comment><USER3> Idle question: if _you_ had found something interesting on the problem, what process would you follow to try to get it verified?

<comment><USER2> I'd doubt my sanity :) But if I was convinced I had something interesting, I'd send it to my friends before making it public. If I didn't have friends who were respected theorists, I'd post it to a cs-theory mailing list. Most importantly, I wouldn't title it "P != NP"; I'd rather say, "here's a line of thought that might have implications for P =? NP; please tell me where I'm going wrong."

</comment></comment></comment><comment><USER4> <http://pdos.csail.mit.edu/scigen/>

<comment><USER5> He is a professor at Uppsala university in Sweden. The swedish wikipedia article was started in 2006.

<comment><USER5> Though after reading the paper it seems like gibberish.

Weird prank though since it seems fairly elaborate.

</comment></comment></comment><comment><USER6> Ok, the internet says P != NP... does anyone know if this is legit?

<comment><USER7> arXiv == not peer reviewed. I know I'm not qualified to judge this paper; anybody in here that is?

edit: He appears to be a professor at Uppsala University in sweden: <http://user.it.uu.se/~stenake/> .

<comment><USER8> Sorry, the key point is that the assertion:

"Therefore, P is not equal to NP, is true and provable in a simply consistent extension B" of B"

does not necessarily imply P \neq NP (the caveat being the B" and B stuff). I'm not really a complexity theory guy, but I would say WHP that this either

(a) does not apply to the most general forms of computation (e.g., what people mean when they ask P =? NP)

(b) is wrong

</comment></comment></comment><comment><USER9> the proof tries to show that p!=np as an extension B" of some Turing machine B -- just read through it and it's all over the place. wouldn't get your hopes up.

</comment><comment><USER10> P = NP, when N is 1. In other cases, I cannot say, but encryption and e-commerce wouldn't exist if it weren't for this conundrum ;)

</comment><comment><USER11> In the future (Futurama), P could equal NP :)

[http://lance- systems.com/wiki/_media/futurama/2x07-3.jpg?w=2...](http://lance- systems.com/wiki/_media/futurama/2x07-3.jpg?w=288&h=216&cache=cache)

<http://lance-systems.com/wiki/futurama-mathematics>

</comment><comment><USER12> Math graduate who knows some complexity theory here. I don't understand the paper and can't even say it's legit. Explanations, anyone?

</comment><comment><USER13> What does it mean for something to be true and provable in a simply consistent extension B" of B ?

</comment><comment><USER14> Chances are, this proof is flawed, like the other hundreds published every year.

</comment><comment><USER15> CS students love dropping four letters: P, NP, O and N. Whenever I want to judge who was a bit too focused on the surface details of computer science, and too little on the real problems, I wait to see if those 4 letters come up in a sentence.

<comment><USER5> P vs NP is a pretty real problem, complexity theory is superimportant.

People how can't do proper Big-O-analysis are forever doomed to suck at programming.

<comment><USER15> That's like saying that people who suck at changing tires of cars can never design or build a car.

<comment><USER5> If you don't undertand complexity and algorithms you will likely run in t huge performance problems at some point and that will make your whole program useless.

No matter the type of programming complexity and algorithms is involved.

So it is more like saying "not understanding how a car works will make it very hard for you to design or build one".

<comment><USER15> You're completely wrong there. Most programmers will never have to deal with performance as an issue, because most programmers don't work on web based systems, or centralised systems where huge loads impact a single server

And for such programmers that do, the real key to performance lies in getting multiple computers to work together, and not in fine tuning algorithms.

Most people can intuitively understand the factor by which a linear search is different from a binary search, without any particularly in depth study of complexity theory.

This P vs NP thing is just a way for CS students to show off with letters that make their craft seem mysterious. In the real world, one can come through without understanding this.

Not understand how a car works? That's really silly. Understanding the speed of algorithms is important, but it's a tiny tiny part of writing large complex programs. Most parts of a programs are not about number crunching, but about information management.

(Obviously, I've got an computer engineering degree, and I learned all this, I'm just pointing out that in general and in the real world it has very rarely been neccessary to know this)

<comment><USER16> What you really mean is "in my job, I haven't had to use these particular concepts," which is of course completely anecdotal, and, given the response (and voting) of other HN users, probably not a very common situation.

In my business, the difference between polynomial and NP is the difference between a thousand clocks and a million clocks, the difference between a practical quantization optimization algorithm and a totally useless one. And if you don't understand that before trying to write it, you're going to waste days of coding time on a pipedream.

NP problems are _incredibly common_ in almost all fields one could imagine. Not being able to identify them before wasting time trying to optimally solve them is a recipe for disaster and the sign of a completely incompetent programmer.

<comment><USER15> The voting of HN users will never be relevant to my opinions.

I have needed to use the concepts in my job, and I'm pointing out that these are really not what computer science is about. Anybody who focuses on algorithmic efficiency based off speed is looking at the bark of a tree and failing to recongize that the forest is being cut down.

Our problems with CS have become wider and bigger and different. We are having to deal with abstractions of very complex behaviour, and N vs NP, even though it should be understood, is not something that needs to be focused on in-depth in most programming activities today.

NP problems are not 'incredibly common' in most programming activities. They are common in most programming fields, just as molecules are common in most human beings, but it does not mean that all human beings have to bio scientists.

The reason I am arguing against this N-NP name dropping is that I believe that to properly evolve in computer science, we need to abstract away the details and focus on the bigger picture. For that to happen, we WILL need a generation of programmers that should not need to know this stuff. Just like many new programmers do not know assembler.

You're obviously preaching to the choir here, so lots of people will agree with you. But I am convinced that the only path forward we have is by wrapping complexity in aggregates, so that programmers can create even more complex machines. We need to get rid of the details for a certain class of high level programmers, otherwise we will not be able to break out of the existing models we have.

<comment><USER5> I think we turned what was an innocent and perhaps true remark to a certain degree(people like to namedrop it) into a quarrel here.

I'm not saying that computer science is all day P vs NP philosophy. I'm just saying that you have to know complexity and algorithm theory to work in the field just as you have to understand the hardware, you might get by most of the time without it but when you don't, if you don't even know where to start, you'll have a mountain to climb rather than a little tree.

* However your remark about how this should be abstracted away and people shouldn't have to know it in the same way people don't have to know assembler now, that's not the same thing at all.

<comment><USER15> Well, what I've learned from this is that people are really sensitive about their P-NP knowledge. Look at the scale of the down-moding I'm getting :)

I think I'd better stop making trying to make my point now, it apparently is not being understood.

<comment><USER17> I'm guessing most of the downvotes are due to the confusion between software engineering and computer science.

From wikipedia:

Computer science (or computing science) is the study and the science of the theoretical foundations of information and computation and their implementation and application in computer systems.

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.

\--

I think you are talking about software engineers and everyone else is defending computer scientists.

<comment><USER18> The excessive downvoting has become something of a recent fad here. I'd have put your comments to -1, but not further, because I do, like apparently many, believe that your notions are fundamentally flawed.

Complexity theory isn't hand-wavey-ultra-complicated-irrelevant CS; it's first / second semester stuff. It's fundamental enough that it's a cognate for most lots of physics, math and engineering students. That's to say, that it's relevant enough that if you're even doing something moderately related to computer science that it's worth knowing.

Are there a lot of jobs where you don't need to know this stuff? Well, I think there are a lot of jobs where you can _get by_ without knowing basic CS, but it'd still benefit you from time to time to be able to apply these sorts of abstractions.

"Why is this function so slow?"

"Its runtime is quadratic."

"Huh?"

In my particular case, not knowing fundamentals of CS theory would cut me out of being able to work on precisely the problems that I find most interesting in programming.

<comment><USER15> I understand the theory perfectly, having a pretty good degree in CE. My argument has nothing to do with my personal situation, I'm running an argument based on a theoretical situation.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


VexRiscv is a quadcore, Linux-capable RISC-V softcore for FPGA - <AUTHOR> https://antmicro.com/blog/2020/05/multicore-vex-in-litex/ <comment><USER2> One of the most interesting aspects of the VexRiscv is the way it's implemented. The VexRiscv is written with SpinalHDL, a hardware description library in Scala. But that's not the main thing: in additional to Verilog and VHDL, there are other ways to write RTL, from Python to Scala to Haskell.

What's really special is that the VexRiscv is constructed from a large number of plugins that split up the design 'horizontally' per feature instead the traditional 'vertical' way that is pipeline-stage oriented.

It makes it possible to implement all aspects of, say, a new instruction in one file, instead of spreading it over many different files.

I've written about that here: [https://tomverbeure.github.io/rtl/2018/12/06/The-VexRiscV- CP...](https://tomverbeure.github.io/rtl/2018/12/06/The-VexRiscV-CPU-A-New- Way-To-Design.html).

<comment><USER3> This is somewhat orthogonal to what you are saying, but I've wondered for a while if it's possible to achieve vertical and horizontal abstraction at the same time. When you are working on the actual implementations, horizontal style is clearly preferable, but if you want to change the abstraction, the vertical style is much easier. The limitation of just one being accessible at a time seems to purely be a consequence of the fact that we use the same representation for reading and writing code. Why can't I switch from vertical to horizontal mode when reading code? Maybe it's even possible to switch when writing?? With a plug-in like structure you certainly get some benefits but at the same time you can let go of a nice global view - it would be nice to have both.

<comment><USER2> In a way, the VexRiscv is already implemented in both directions:

While stages are specified individually, you can declare those stages to collapse together.

The VexRiscv can be specified to be between 2 and 5 stages.

In terms of readability, you still have the 5 stages separated out within the same file.

<comment><USER3> Oh, that's really cool. It seems like a nice place in the middle which I didn't really think was possible before.

</comment></comment></comment></comment><comment><USER4> Worth mentioning SymbiFlow: [https://symbiflow.github.io/](https://symbiflow.github.io/), it's a fully open-source flow for FPGAs, Xilinx support (targetting the Arty A7 that the project in this story uses for instance) is on the way so hopefully won't be long until you can build a opensource RISC-V SoC that can run Linux entirely on open source tooling.

<comment><USER5> To be clear, creating a linux capable Artix-7 image using only open source tools can be done today, right now! [https://github.com/SymbiFlow/symbiflow- examples](https://github.com/SymbiFlow/symbiflow-examples)

<comment><USER4> Awesome! Hadn't seen that, includes the DDR controller too which I thought may be one of the trickier parts to get going under Symbiflow.

</comment></comment></comment><comment><USER6> I'm interested in developing an SoC with separate DRAM controllers for instructions and data. I did some reading about RISCV-BOOM core and LiteDRAM.

I also researched the process of turning an SoC design into physical chips. I estimated the cost to be around USD $150,000 for the first handful of chips, using TSMC's CyberShuttle.

The learning curve for this technology is extremely steep. I would probably need to spend years learning the various skills.

The PolarFire SoC block diagram [1] shows a DRAM controller and a DRAM PHY.

The Arty A7 Reference Manual [2] talks about using the Xilinx Vivado to add peripheral blocks into the SoC design. Is this a way to add Xilinx's proprietary DRAM controller block, which would then need to be licensed separately?

Does Antmicro's demo use LiteDRAM to interface with Arty A7's DRAM PHY?

What would be involved in modifying VexRiscv and its MMU to support normal data memory and a separate read-only instruction memory? For someone with the necessary skills, is it a 1-month project or a 1-year project?

I checked a bunch of FPGA development boards. The only boards I found with multiple DRAM chips have the Cyclone V FPGA and cost >$1,000. Why do those boards cost so much more than the $150 Artix 7 boards?

[1]: [https://www.microsemi.com/product-directory/soc- fpgas/5498-p...](https://www.microsemi.com/product-directory/soc- fpgas/5498-polarfire-soc-fpga#block-diagram)

[2]: [https://reference.digilentinc.com/reference/programmable- log...](https://reference.digilentinc.com/reference/programmable- logic/arty-a7/reference-manual#designing_with_the_arty_a7)

</comment><comment><USER7> I'm disappointed today's general purpose CPU's and microcontrollers don't come with some integrated FPGA space, similar to how you have SRAM and other peripherals. Intel talked about it a few years back [1] but I'm not sure anything materialized.

The closest I've seen in popular chips is a few gates worth of programmable logic. Are there any hidden gems I've missed out on?

[1] [https://www.nextplatform.com/2018/05/24/a-peek-inside- that-i...](https://www.nextplatform.com/2018/05/24/a-peek-inside-that-intel- xeon-fpga-hybrid-chip/)

<comment><USER8> With the transition of compute from performance focussed to performance per watt focussed (due to cooling usually being the limiting factor), the niche for the FPGA has almost vanished.

There are very very very few compute tasks where an FPGA solves a problem with better performance per watt than both a CPU and a GPU.

I would bet that emulating a RISC-V program on x64 is far more power efficient than running a RISC-V core on an FPGA for example.

<comment><USER9> An ECP5 will sit on the order of ~100mW and you can clock those up to dozens of MHz. They can have multiple cores running in parallel (an ECP5 85k will fit dozens, probably well over a hundred RISC-V cores if you do your homework.) Even a laptop sitting at 10W is going to be orders of magnitude more power inefficient than this in terms of raw instructions-per-cycle-per-watt if you're emulating. That is not the best metric, necessarily, but there you go.

And since you mentioned perf-per-dollar -- ignoring soft CPUs, any deeply pipelined algorithm is very likely going to destroy price-comparable CPUs in terms of throughput e.g. you can do 16-to-32 bytes per cycle of AES on a dinky FPGA from 10 years ago for a few dollars, and at 50MHz you're doing 1.6GB/s, and people have been achieving this, or multiple times this, for 15+ years. Things like TDP are not a measure of "overall system design efficiency", it's a measure of thermal capacity, thermal budgets, and nothing more. (BTW, the only general purpose CPU that comes close to this number directly for AES is, like, Ice Lake, since VAESNI can turn out 16 bytes per cycle or whatever IIRC, but now you're well back into "multiple watts" territory on a multi-GHz CPU.) The reason people still use CPUs for these tasks _isn 't_ because they _don 't_ want better performance: it's because software has better agility and is easier to acquire and modify and distribute. You can have systems that are dozens of times more efficient than commodity ones for a wide variety of tasks, they will just be a pain in the ass to use, program, acquire, and build. You can figure out most of this with basic napkin math.

Stop thinking so much about individual components, and start thinking about global system design -- because the _entire system_ has its own performance criteria that may vary drastically compared to an individual component within it.

> There are very very very few compute tasks where an FPGA solves a problem > with better performance per watt than both a CPU and a GPU.

This is like stating "There are very few tasks where a car would do as well as a snowmobile." They aren't comparable for purpose. Hacker News is pop- culture-y so everyone thinks "the only thing that matters is a cool CPU running in a rack with a 7nm TSMC process that can run my Go application on Kubernetes that will disrupt The Market of Smart Toilets" or whatever they do day to day, and extrapolate from there. But I'd guess the vast majority (like, 85% or more) of FPGA field has literally nothing to do with this. A huge amount of work basically revolves around "just" interfacing with analog devices at pico/nanosecond level resolutions...

The quest for best perf-per-watt is one largely driven by datacenters and personal consumer electronics, which have both high volume and high yield, and where the largest challenges revolve around power, cooling, etc. Furthermore these systems run workloads that are largely general purpose "state machines" that use some memory and some CPU and some disk, etc, and need to try and hit a balance among all of these. There is a large amount of resource arbitrage going on. "A rising tide lifts all boats" in this case. But little of that applies in this field; people use older nodes and the same chips for 5-10+ years (or longer) straight because they need to deliver latency-sensitive solutions, customized hardware at low volume, "hardware glue" for various analog systems, highly specialized algorithmic solutions for the lowest total BOM cost, etc. They aren't aiming to replace the systems created by digital Silicon Valley software programmers.

There is a push to move FPGAs into the datacenter (see: Xilinx and their exploding revenue) but it's unclear if they will settle into specific niches or be used as supplementary devices or whatnot.

<comment><USER6> Your comments will be much better without the condescending tone. I point this out because I also talk down to people unintentionally. It's a difficult habit to break.

<comment><USER10> It's hard to get across just how out of their depth someone is without putting it fairly explicitly.

</comment></comment></comment></comment></comment><comment><USER11> As cool as this is, enough with the FPGAs and the RISC-V Arduino clones. A real, relatively inexpensive (e.g. sub $100) RISC-V SoM/board that can run Linux is desperately needed (with at least at BeagleBone Black performance levels).

I really like the idea of RISC-V and I'm willing to make the investment in software (and in fact have done so with QEMU), I just can't get any real hardware (for a non-silly price).

<comment><USER12> I think the main barrier to a cheap RISC-V board like you describe is a real Android port. By "real" I mean it needs working ART and V8 compiler ports so apps and web pages don't run at 10% of the speed of low-end ARM chips.

Once that exists, I think we'll see companies develop RISC-V chips cheap enough for low-end smartphones and other IoT devices. Those are the chips that are cheap enough to put in a <$100 board.

</comment></comment><comment><USER13> The fact that it fits in the 35T version with room to spare is pretty huge, especially since certain packages of the 35T start as low as $35 for a single chip, no MOQ.

I could see myself dropping one of these on a homemade project if I ever spend the time making a reliable reflow oven...

<comment><USER2> If you're happy that it fits in a 35T, you'll be ecstatic to learn that a single VexRiscv fits comfortably in a Cyclone II EP2C5 FPGA. :-)

It's hard to find an FPGA that's too small to fit one.

</comment></comment><comment><USER14> FPGA Noob here. I have 2 questions about FPGA's that I'm hoping someone here can help me out with:

1\. For the FPGAs i've looked at, you seem to have to initially configure them before being able to run your programs on them, kind of like EEPROM. I feel it would be much more interesting from a reconfigurable computing perspective if the devices were able to programatically re-configure on the fly as easily as it is to read and write to DRAM or Flash Memory. So what are the barriers that prevent the hardware from being able to do this?

2\. Its exciting to see projects like Symbiflow making great progress, but after reading some expert opinions[1] it seems like an extremely difficult challenge to attempt to reverse engineer hardware from commercial FPGA vendors who wish to keep their designs closed in order to protect their IP and compete. So my question is wouldn't it be a more feasible goal to construct fully open FPGA platform from scratch, just like RISC-V is doing with CPUs? What would the obstacles be here?

Thanks!

[1] [https://www.reddit.com/r/FPGA/comments/a5pzs5/prediction_ope...](https://www.reddit.com/r/FPGA/comments/a5pzs5/prediction_open_source_fpga_tools_will_not/)

<comment><USER15> 1\. I'm not sure what you mean but remember that FPGAs don't run programs as per se (HDL gets compiled to logic, not instructions). The bitstream can be modified, it just gets loaded from some flash. I'm not sure where it's done, but it's possible.

2\. The obstacles are billions and billions of R&D (and you'd need similar amounts to get a fab pick up the phone too). Reverse engineering the bitstream is also difficult because of this - Symbiflow (i.e. Trellis etc.) have got the bulk of the bitstream done (apart from specialized blocks like those for DSP), but you need to have good algorithms to decide what to do with that bitstream e.g. a fully open source flow requires intricate timing analysis.

<comment><USER16> Regarding 2: the question was about an open-source solution, so I think that "billions and billions of R&D" will translate to just a lot of time spent and no literal cost, e.g. just like GCC is free as in beer.

It is true that getting a wafer fabricated will cost a lot of money (in the millions maybe?) but this may be money well spent because the resulting FPGA design can be used over and over. I think this would be in the reach of perhaps some universities or government technology centers, if someone could formulate the case for it.

<comment><USER15> Nearly all the cool stuff in GCC and LLVM is paid for by companies (paying the salaries of developers). The software could definitely be done in this way (Symbiflow is very very nice), but keep in mind that developing an FPGA will require a lot of hardware and bums in seats.

The question is similar in scale to building an open source Intel core i7 - it's not impossible but keep in mind that an FPGA big enough (for example) to prototype any subsections of the CPU let alone the whole thing would cost hundreds of thousands.

</comment></comment></comment></comment><comment><USER16> Now the only problem left is to find an open-source-friendly FPGA manufacturer.

</comment><comment> non-entity Kind of off topic, but how much time is involved building processors with FPGA's, especially for modern architectures like RISC-V? I only have a very basic overview knowledge about FPGA's and almost none at the time about HDL's (I plan on learning!), but with the complexity involved in modern processors, I can't imagine this being a few weeks or even months or work.

<comment><USER17> RISC-V as an ISA is designed to be easy to implement. You can get a simple implementation in 3k lines of Verilog [1].

That being said, there's a huge difference between a toy / simple multi-cycle machine-mode RISC-V core and one with a modern, performent microarchitecture (pipelined, super-scalar, multi-issue, cache coherent across multiple cores, with efficient branch prediction). There's also extra work to implement RISC-V extensions that let you run any 'real' code like Linux (which requires anything from simple ISA extensions to implementing the Privileged Instruction spec which dictates additional things like the MMU and interrupt controller).

[1] - [https://github.com/cliffordwolf/picorv32/blob/master/picorv3...](https://github.com/cliffordwolf/picorv32/blob/master/picorv32.v)

</comment></comment><comment><USER18> Is Dolu1990 the primary developer of everything SpinalHDL related?

I'm genuinely impressed with his effort.

</comment><comment><USER19> This project looks amazing.

For folks writing in SpinalHDL, is anyone using Quartus? Or are you using a fully open-source toolchain? i.e. What is your workflow?

I'm interested in trying out SpinalHDL, but I'm not sure how to integrate it into what I'm doing.

<comment><USER2> I'm using SpinalHDL for all my hobby projects, and I use Intel Quartus, Xilinx ISE, or Yosys, depending on the FPGA family.

This project is an FPGA based ray-tracer that uses Xilinx ISE written in SpinalHDL: [https://github.com/tomverbeure/rt](https://github.com/tomverbeure/rt). This project uses SpinalHDL to drive an LED cube, which uses Quartus: [https://github.com/tomverbeure/cube](https://github.com/tomverbeure/cube) (it also uses a VexRiscv). And here is a small project that drives an LED matrix with WS2812B LEDs, that runs on an Upduino2 with a Lattice UP5K FPGA, which uses open source Yosys/NextPNR: [https://github.com/tomverbeure/led_matrix](https://github.com/tomverbeure/led_matrix).

<comment><USER19> Nice. I was just looking through your ray-tracer code :)

It looks like a really nice abstraction. I've been working on the MiSTer project, writing arcade cores for the Cyclone V in VHDL.

I've made a huge effort to keep things clean, but SpinalHDL could be a great way to tame some of the code.

Will start blinking some LEDs and see how it goes...

</comment></comment></comment><comment><USER20> How far down the road of something like nand2tetris can I take a FPGA ? Can I design my own system in verilog and flash it to a FPGA like this and effectively run on my own computer?

<comment><USER21> Yep, that's the point of FPGAs. The easiest way to see is to synthesize it in an FPGA tool (e.g. Vivado) which you can probably do for free. Different FPGAs have different hardware resources, but for any small designs you can probably fit them on a cheap FPGA.

</comment></comment><comment><USER22> I didn't find what clock rate it runs at. It mentions booting linux in 4 seconds, but that is hard to extrapolate into a core clock frequency.

100 MHz? 200 MHz? higher?

<comment><USER23> Doesn't that depend on the FPGA you use?

<comment><USER22> Of course, but he article author did build it on a specific system and said the boot speed, so saying that clock rate would have also been a useful data point if the platform is known. Someone using a different FPGA could use rough scaling factor to guesstimate what they might achieve for the platform they have on hand.

<comment><USER24> Added this to the article - it's 100 MHz in this design. For some more performance info on Vex in general, see [https://github.com/SpinalHDL/VexRiscv](https://github.com/SpinalHDL/VexRiscv)

We've yet to make detailed analyses on the multicore version, but in general I'd say it's pretty decent.</comment></comment></comment></comment>


Ask HN: UI Designers, How do you keep things looking SIMPLE? - <AUTHOR>

<comment><USER2> Here are some tricks I use.

First, turn away from your monitor, the visuals will distract you from your prime goal, which is to isolate the necessary CTA's on your page.

Create a hierarchy of CTA's. Then go through and challenge your assumptions there. Once complete, look at any of those CTA's that aren't required to be readily accessed, or make better sense somewhere else.

Always look to remove options, add clarity, and refine your CTA's to a simple message.

Building a workflow diagram can be helpful, but it's critical when pursuing simplicity to try and adhere to a 'form follows function' approach. That is, when you create an object, is it a CTA, does it inform, or does it create more options?

Many sites need to inform, so treat it like the elevator pitch, and you have 8 seconds to get a conversion (click). Any other information that doesn't send them to a conversion is noise, remove it. You can sell once you have their attention, so get it first, then direct them to a CTA.

The end result is always a matter of individual style, but the principles of design across all discipline is unified by the form following function mantra.

The famous quote applies. 'The artist knows when he is finished because there is nothing left to add. The designer is finished when there is nothing left to take away'.

</comment><comment><AUTHOR> With a complicated app or site, are there any good methods for boiling it down to the essence?</comment>


The Twitter API is Finished. Now What? - <AUTHOR> http://dashes.com/anil/2009/12/the-twitter-api-is-finished.html

<comment><USER2> Um, no? The Twitter API is nice, so far, but I wouldn't call it _complete_ (this coming from someone 2+ years into developing twitter apps). Even with the current Twitter.com feature-set, there are more things they could expose through the API. As more features are added, more API endpoints will be needed.

It's nice that other sites have "cleverly" appropriated the Twitter API for themselves (something that Identi.ca actually did first, I think, and was the real inspiration for other Twitter clients to allow custom API roots), but that shouldn't mean that Twitter themselves slow down when it comes to innovating/iterating their own API.

</comment><comment><USER3> > _If two companies with a significant number of users that share no investors > or board members both support a common API, we can say that the API has > reached Version 1.0 and is safe to base your work on._

This seems like faulty logic to me.</comment>