Ask HN: Why do you disable JavaScript? - <AUTHOR> As a newbie programmer, I'm learning finding what I can do with some simple jQuery pretty exciting. However, I am also aware that some people disable JavaScript in their browser.
I'm curious, for the tech-savvy HN audience specifically, why is this something you do (or if you don't any more, why did you and why did you stop)?
From a development perspective, how concerned should I be about all my functionality existing without JS? <comment><USER2> 1\. Performance - my meek single core CPU and my tendency to open dozens of tabs at once often collide.

2\. Privacy - I'm far too lazy to go the full mile, but if I can avoid most of the tracking, I certainly appreciate it. 'though I do keep some domains null routed anyway.

3\. Security - after Flash, JS is the main source of security problems, and I don't mean just attacks on my machine, but also stuff like CSRF and such.

But the most important:

4\. Peace of mind - JS is used to implement the most annoying parts of the web: popups (particularly those "inline" that can't be blocked by the browser), paywalls, preventing right-click, distracting real-time updates, etc. The web is just a calmer, saner place without JS, and I like that.

<comment><USER3> Install Ghostery and AdBlocker. They're available for most modern browsers and eliminate issues #2, 3 and 4.

<http://www.ghostery.com/download>

<comment><USER4> how does that help with security, i.e #3?

</comment></comment></comment><comment><USER5> You can safely ignore that "audience" since they comprise 0.01% of a niche. They are vocal in sites like HN and Reddit and so on but the numbers are safely ignorable from a market standpoint.

If you want to spend your development effort in something worthy that will increase your audience, your should instead make sure your sites are available to people with disabilities. They are a far bigger share of the market (any market) and you will feel better by supporting them.

</comment><comment><USER6> Unless your customers are paranoid computer geeks, you should completely ignore users who disable JavaScript. They are extremely few in number and they are already accustom to being ignored. If your site is worth viewing as you intended and are worth having as a customer, they will whitelist you.

<comment><USER7> The problem most sites have is that they don't even attempt to convince users who block JavaScript. Too many devs rely on JavaScript to do even the most basic layout and end up throwing a blank screen saying "This site requires JavaScript".

I don't expect developers to go out of their way to make the site work perfectly for me but I need to see something to convince me that it is worth a chance.

<comment><USER6> And hence, for most small businesses, I'd contest that you are not a customer worth having.

<comment><USER7> Most small business aren't rolling their own website. They are contracting the work out or just buying a prepackaged product from someone. If that person's work is so shoddy that I can't see anything about them, well then I'm glad I cannot possibly be a customer.

I'm not asking people to go days out of their way to make their websites work perfectly for people who don't use JavaScript, but please use basic best practices for website layout so I can at least have some idea of what your website is about.

<comment><USER6> > I'm not asking people to go days out of their way

But you are. If you've made the design decision to support progressive enhancement, testing a fallback for each individual element being enhanced is a minimum marginal cost. If you've made the decision to simply require JavaScript, many tasks get substantially easier and you eliminate a large fixed cost as well as the small variable cost.

But let's say, for sake of argument, that any site could magically be made to work JavaScript-free by the wave of a wand and 15 minutes passage of time.

You're still too small of a minority to justify 15 minutes for most people. Several years ago, Yahoo generously identified you as approximately 1% of global visitors across all user agents. Now consider that most visitors come from a refer with some context, so you already have some idea about what content you'll be seeing. If you don't care enough to enable JavaScript, your probably unlikely convert. If 2/3 of you turn JavaScript on (also generous) and typical conversion rates are 20% (very generous), you're looking at about 0.1% of total visitors.

Furthermore, as you prove, the category of people who disable JavaScript deeply overlaps with the category of people who haphazardly call other people's hard work "shoddy". These people make annoying customers.

You're simply not worth it.

<comment><USER7> You are again missing my point. I'm not asking for the site to work in the sense that I can do even 5% of the intended functionality. I just want to be able to see something to sell me on why I should enable JavaScript.

Also 15 minutes to convert 0.1% could (and most likely will) still be worth it. There is no magical number for this. A myriad of factors come into play. You can't just issue a blanket statement that I am not worth it when you have no idea what I am worth or the worth greatly changes from site to site.

Requiring JavaScript for your website is not a deal breaker for me. Requiring JavaScript to see a single pixel of the website is what I am complaining about.

</comment></comment></comment></comment></comment></comment><comment><USER8> Due to a long, sad history of exploited security defects, I only run javascript from authors I consider both trustworthy and competent, and who have useful behavior to add to my browsers. Basically if you don't even realize your documents are unusable without scripting, I can't assume you're smart enough to avoid attacks via malicious third-party code.

It's also a good way to find out who cares about the web, which is eroding as authors give up publishing semantic markup at stable URLs in favor of content entombed within client/server style apps.

</comment><comment><USER9> 1\. Effectively blocks all forms of annoying advertisement.

1.5. As well as all those stupid social featu... sorry, bugs.

2\. Makes pages load and render faster on my already-slow-by-now 100Mbps net.

3\. Browser uses several times less RAM.

4\. More privacy.

And you lose nothing as it is very easy to whitelist domains using some kind of plugin.

</comment><comment><USER10> i find it highly annoying if pages show different content on the same url. many bad sites with javascript do not update their url.

javascript is often used for no apparent benefit. my favourite (or shall I say anti-favourite) are websites that, when I click on an image thumbnail darker the main site, show some animation and then showing the bigger image. I have experienced it many times that disabling js would directly serve me the image and do so much quicker.

some online store I use pops up details for items when I mouse over. each time changing mouse focus. I can not get a simple list with all the details to use my browsers search function with. it also has no pagination but autoloads more items on the bottom. if I revisit the page (eg after looking at an image) I have to start at the beginning again.

javascript allows website to screw with my copying. hover the mouse on a Google result, the status bar shows the proper target. rightclick and copy to get some redirection shite instead.

phew, where do I stop...

disabling js also implicitly removes a lot of advertising, pop-up windows, always scrolling bars. when I have to use someone else's computer I often cannot understand how they stay sane.

Google steals my focus, I use backspace to navigate "back". on Google that leads to me removing characters on the search and the search automatically updating and adding more pages to the history to navigate back through.

javascript often leads to sites eating my CPU. I value my battery life and CPU temperature.

I use reddit a lot on a unreliable connection. I often happily vote, just to see later that javascript pretended my votes counted while in reality they never arrived at the other end.

javascript can be great for thing but it gets abused so much that disabling made me enjoy the web much more. if something does not work, well, chances are I was procrastinating anyways and won't miss anything important by closing the tab. I did not install flash for the same reasons.

if I have to enable js for something it is two keystrokes (in opera). I can also enable it per site very easily.

<comment><USER11> I agree with your sentiments here (except battery life, I use desktops). Javascript is the cause of nearly all my most hated "features" that websites use. Disabling it makes these websites better. Google does not try to out think you. Comment boxes do not highjack your browser's hotkeys. Websites do not tell you that you can't right-click.

The latest fad for thumbnail-image animation is especially infuriating. A plain link is easy. I can choose where I want it opened. I can easily toggle between a full-size image to one that fits my browser window. The worst offender in this regard even hijacked my middle click so I could not open the image in a new tab. It pushed me so far I actually went looking for instructions on compiling Firefox and looking to remove Javascripts knowledge of a middle mouse button. (I didn't get very far.)

Another almost equally infuriating feature is the infinite scrolling page. I hate them. They don't add any useful interaction.

The worst thing, though not directly caused by javascript, has got to be "visibility: hidden" and "display: none" style attributes. Websites love to hide things and sometimes entire pages behind them for no reason other than the fact that you can make something to click on something and have javascript show it. (Another thing I wanted to remvove from Firefox.) Some people directed me to Firebug which is great for deleting those attributes. I seem to recall Google+ doing this at its begining, now it shows me the page on the few occasions I go there.

</comment></comment><comment><USER12> In General I would say that the "marketing layer" of your site should be accessible without javascript.

Once a user registers and logs in to your web application I believe it is fair to require them to enable javascript in order to proceed.

However, if you don't need to create a full blown javascript web application then I recommend allowing your javascript to gracefully degrade so users can still use the site. In this case javascript best used to "enhance" the experience but shouldn't destroy the experience if it's disabled. Hope that helps.

Also, keep in mind that this also depends on the organization your working for. In the case of government websites with strict accessibility guidelines, sites need to work without javascript enabled because screen readers for the visually impaired have a hard time viewing dynamically generated content.

<comment><USER13> Or the "front page". Or some front interface such people are likely to encounter.

Give me a reason to trust your site. When the first thing it wants from me is to execute arbitrary code, well, usually I just say "no, thanks", unless I already have a pretty good reason (so, from a third party or prior knowledge of the site's ownership and maintenance) to trust it.

I'm fine being an edge case. I've seen too many examples of friends, coworkers, family exploited -- and put a lot of effort into cleaning up a few -- to waste my time and well-being on those bent on transforming the web from content to executable, particularly some "anonymous" executable.

</comment></comment><comment><USER14> I run NoScript because it provides the full feature set of FlashBlock, plus extra stuff. It's the easiest way to protect myself from flash/acrobat reader/java 0-day exploits, and not running tracking JS/ad JS is an extra perk on top of that.

<comment><USER15> I'm curious: how much of the web would you say is broken when you browse this way? Is there a difference between 'consumer' sites and 'pro' sites?

<comment><USER16> In my experience, it's hard to evaluate this with NoScript because you typically whitelist domains as you go. There is probably a Pareto distribution here... whitelisting a handful of domains will cover 80% of your web browsing. Once you get going, it's not very obtrusive... although I certainly have to temporarily enable or whitelist new sites every day, it's an automatic response at this point.

Often a site will link in lots of third-party javascript, and this is where NoScript gives you more flexibility. A lot of times it's easy to tell where the advertising and tracking code is coming from and leave those domains disabled. Sited usually work any way.

The worst thing about NoScript is when a "third-party" site itself uses third party (fourth party?) code, since NoScript does not seem to detect that. Of course this is a heinous practice, and it's disturbing how often it seems to occur. If I really have to use a site that does that, I typically pop into IE.

</comment></comment></comment><comment><USER17> With JS on, my laptop idles at ~30% CPU use and the battery melts; with it off, it idles at ~3% and the battery last much longer.

</comment><comment><USER18> I used Opera from version 8 to 10 because it let me quickly enable/disable Flash and javascript on a global basis. Then I found NoScript, with its fine- tuning options, and moved definitely to Firefox. It's not as annoying as some people think, just 1 or 2 clicks on a menu and reload if I really want to see the page.

I use private browsing for the privacy paranoia. No need to block cookies. I block JS and Flash mainly to protect from buggy sites that thrash CPU and memory.

EDIT: also, it has surrogate scripts to fix some sites, for instance it removes clutter from Google Search links. And ABE has almost the same functionality as RequestPolicy.

</comment><comment><USER19> I use RequestPolicy to block requests to other domains, which often prevents various JavaScript files from being loaded. This is done in order to impede companies like Google, Facebook and others tracking my web browsing on pretty much every website in existence. Third parties don't need to be informed of the pages I visit.

A side benefit is that many annoying ads are blocked, in exchange for some pain when visiting new sites with separate domains hosting their CSS, images and other assets.

</comment><comment><USER20> I do it because it reduces my attack surface by quite a bit. There have been many bugs mitigated by having no JavaScript.

All you really need to do on your site is to use a few noscript tags to send people a message saying that the site requires JavaScript to function and asking them to turn on JavaScript or whitelist your domain in NoScript.

</comment><comment><USER21> I have occasionally in the past - pages are often _far_ more responsive without it. Generally that's due to blocking social widgets or crappy scroll handlers.

<comment><USER22> Is this really true ? I would love to experiment this if I can have longer laptop battery life by disabling JS.

<comment><USER21> CSS overrides to get rid of box shadows and rounded corners can also make a significant difference in scrolling speed. Essentially every browser out now lets you define a user css file, just include something like:

      * { box-shadow: none !important;
          border-radius: 0 !important; }

etc. YMMV, and you may have to include the corner / browser specific variants, I forget the details. Box shadows with a large spread _still_ perform terrifyingly poorly in browsers, though small ones tend to be fast enough to not notice on modern machines.

<comment><USER13> Bookmarklets can do such things on a case by case basis, for any adjustments you don't want to commit universally (via user.css).

</comment></comment></comment></comment><comment><USER23> >how concerned should I be about all my functionality existing without JS?

If something seems worth using and it requires JS to function correctly, I'll go ahead and enable JS. Unless you have projects in mind along the likes of jsFiddle, I don't think you have much to worry about.

As for why: it's nice to keep my laptop quiet and power-efficient when I'm simply browsing (especially if I'm not plugged in), a task that shouldn't be resource-intensive; it's an easy way for me to prevent potential malware when I'm using Windows.

</comment><comment><USER24> Disabled people, for example (I am not, but I know several). Javascript is rarely a boon for accessibility.

Mark Pilgrim's "Dive into Accessibility" [1] is still a good primer on the subject, even though it's now a decade old.

[1] <http://diveintoaccessibility.info/>

</comment><comment><USER25> I have never met a non-tech savvy user ever disable Javascript. Heck I've never met one that even knows what Javascript is. But a lot of tech savvy people I know do disable it mostly because of the whole "do not track" paranoia. I personally don't disable it as most sites use it and I like the functionality it provides.

</comment><comment><USER26> I wouldn't imagine that many tech-savvy folks disable JS very much these days. I think most people can appreciate how far it's come and what kind of role it can play. I understand the security concerns but I think the pros greatly outweigh the cons. I could be completely wrong though.

In regard to development, it really depends on the kind of development you're doing. In most cases, just make sure the functionality degrades gracefully if a user has it disabled.

If you're building larger apps where JS plays a major role, let the user know they should allow JS to use it. IMO, unless you plan on making sure the app degrades completely this is the way to go.

<comment><USER26> If you're going to downvote this, I'd appreciate as to why.

</comment></comment><comment><AUTHOR> I really appreciate all the feedback and thoughts. It's all quite informative. Thanks!

</comment><comment><USER27> The only time I have ever disabled JS for a website, I've done it because that website broke some UI functionality I expect to work in every page. Most often, what some website does is disable right-click. They must think that is a foolproof way of "protecting" their content, and don't see it as an annoying block that makes people disable JS.

I did try an extension (for Chrome) that prevented sites from disabling right- click, but then out of nowhere it inserted an ad in a page I was viewing, so I removed that extension and went back to blocking JS.</comment>


What every programmer should know about memory, Part 1 - <AUTHOR> http://lwn.net/Articles/250967/?rss=1 <comment><USER2> If you want to read something more approachable that can serve as a gateway to this, I highly recommend Jon Stokes' _Inside the Machine_. It goes over microprocessor architecture in a very approachable way, and contains a good chapter on the memory/cache hierarchy that is sort of the light version of a good chunk of Drepper's paper, or at least will be a big help in making sense of it. If you've never been close to the metal, or you want to catch up on newer developments, consider checking it out.

Also, here's Drepper's paper compiled into a single PDF, which I think was edited a little later than the LWN publication and might have had some minor errata fixes: <http://www.akkadia.org/drepper/cpumemory.pdf>

<comment><USER3> As much as I liked Stokes's articles in Ars, I think programmers should probably skip _Inside the Machine_ and go straight to Hennessy and Patterson. _Inside the Machine_ is loaded with analogies that I find annoyingly distracting; I'd rather learn how a computer actually works than learn an analogy about how it works.

</comment></comment><comment><USER4> Very useful information, but this is way overkill for what "every programmer should know".

Every programmer should have a basic understanding of latencies.

This is slightly out of date but still gives an idea of relative latencies: <http://norvig.com/21-days.html#answers>

<comment><USER5> Exactly. This is a significant portion of a graduate-level computer architecture course. You average Rails/Node/etc. programmer doesn't _need_ to know half of what's covered during the 3 weeks of an undergraduate architecture course that's devoted to the memory system.

How many programmers in 2012 are ever even going to need to cache-optimize their code? 25%? 10%? The content is fascinating, but the title is pretty wrong.

<comment><USER6> I hear this so much, but it's just wrong. Here's a "interview style" question which is hopefully practical enough to show why:

Let's say you have a giant in-memory balanced binary tree (for your data store, maybe) with mean depth of ... 27, say. And you're deployed on a machine with 4 DRAM channels populated with (for the sake of argument) 7-7-7-23 DDR3 memory. Give me a ballpark estimate for how many reads per second you can achieve from that tree.

My experience is that virtually no one can answer this question well, and most programmer's intuition is wildly off (they think it's much faster than it is). And even the ones who get it mostly right usually just use "100 cycles" as their assumption of DRAM latency and get tripped up on the subtleties (like the interaction with the number of channels vs. precharge overlap; or the already-active row latency for sequential access which this question doesn't cover).

Reading this paper will teach you how to answer that question from first principles. Surely that's worth a few hours of your time. At the very least it's worth more than arguing on the internet about how you _don't_ need to know it.

(edit: A bonus followup question -- hopefully just as practical -- would be: "So maybe binary trees aren't great. Given a node data size of N, what is the most appropriate fanout to use in a B tree implementation?". This pulls knowledge of caching architectures into the mix.)

<comment><USER7> Sometimes the job of an interview question is to make it clear to the interviewee that this is not, after all, somewhere they want to work.

That would be my reaction to those interview questions.

As for the follow-up question, my response would be to ask why you are optimizing your B tree for a specific architecture instead of using a cache- oblivious B tree. (Yes, I can think of several reasons why not to. But if the interviewer is asking me BS questions, I want to know whether their knowledge is similarly good.)

Of course in practice I'm generally happy to use BerkeleyDB - the B tree has never been a performance bottleneck for me except when it involved disk latency. And at that point a more fundamental reorganization of algorithms becomes necessary.

<comment><USER8> Cache wasn't mentioned in the question... there might be no cache at all. ;-)

Cache oblivious B-trees aren't exactly oblivious to how DRAM behaves, and sometimes their operation actually can be counter to what works best in DRAM (though I agree that generally they tend to do better than data structures that are "oblivious" in a very different sense).

But let's ignore that for a moment. Okay, you aren't using BerkeleyDB, MySQL, or any other of the common B-trees out there, but instead you've got your hands on a cache oblivious b-tree. What is the approximate optimal fanout rate and what is the approximate number of reads per second you can achieve with the 7-7-7-23 DDR3 memory (or memory of your choice that is commonly found in modern systems)?

The question _isn't_ really about knowing the specifics of a particular memory infrastructure. It's about understanding the cost of going to memory, which is increasingly as important as understanding disk latency (you know how "disk is the new tape"? well, RAM is the new "disk").

Interestingly, a lot of databases these days are CPU bound , particularly when working with big data, but even in other cases. They aren't _really_ CPU bound, it just looks like that because of how accounting is done. When you poke under the covers, you see the CPU pipelines are comparatively idle because the CPU's are all tied up accessing memory.

Particularly if you are using AWS or other virtualization services, most web applications these days rely on servicing a majority of their requests entirely from memory. Being able to understand the performance characteristics of memory at least within an order of magnitude becomes increasingly important, because the average rate that you can service from memory becomes a critical metric for the scaling of your services.

It's more than even that though. As concurrency becomes increasingly important, locks and atomics become central to a lot of work. The last few iterations of Moore's law have changed the principles of how locks & CAS impact performance. It _used_ to be that locks were bad, because you often burned up CPU going down to the kernel, but more than that because suddenly you are wasting CPU while you wait for something else to complete. CAS allowed you to largely sidestep all that CPU wasting and you're a happy man. Then CAS got integrated in to locks so that locks only really sucked when you had contention, but now... The real expensive cost of a lock these days is the memory fence put around it. CAS is better because the fence is scoped to only the object being swapped, but _even that_ can be horribly expensive if there is contention on the object. Having a clear understanding of just how big that cost is relative to burning some more CPU, wasting some RAM, or even changing the constraints for your code, can be very important.

Trust me. This stuff really matters for any context where performance matters, and it is only going to get more important in the coming years. Memory has pretty much already trumped CPU in terms of its importance for most applications, and the number of cases for which it is more important than disk is growing at a rapid rate.

<comment><USER7> I believe you.

However I've spent most of my life working within scripting languages. And the same is probably true of most programmers in the startup world.

If you're able to get away with using a scripting language, then your problems had better not be performance critical, because your swiss army knife of choice really sucks as a saw...

<comment><USER8> First, the notion that using a scripting language means that performance isn't an issue is a canard. It ought to mean your revenue isn't directly correlated to performance, but that's about it. Indeed, if you are using a scripting language, the odds are _more_ important that you understand the trade offs, as your lack of low level options means you need to make smart choices about high level options.

Second, _very_ few startups don't end up making decisions about performance even in the early days. What? You're using a NoSQL store? Is that because you just hate yourself or because you thought it'd be more efficient/scale better than an RDBMS? Why aren't you just storing it all in memory? Wait, you can run out of that? just let it swap then! Actually, why not just store all the data in a flat file? You don't even need to sort it, you can just scan through it whenever you need to, because performance doesn't matter. Why are you using an associative array there? Do you care about having efficient lookups based on a key or something?

You see my point.

I get that some people are playing around in a segment of startup land where programming isn't really that important, but presumably your long term plan isn't for every startup you participate in to never go anywhere. What if you are a success? Do you still want to be on the technical side when you've now got a team of developers and a serious customer base? If not, that's fine and likely a great career plan, but you aren't a programmer in the professional sense (which is what the paper is referring to). If you are planning on staying on that side, either learn this stuff or expect to be cast aside and not grow with the organization, because you aren't ready for the bigger world you'd now be playing in.

To be clear here, I'm not suggesting you'd have to pick up a systems programming language. Heck, when I started my career two decades ago, when CPU's were a lot slower and interpreters weren't as efficient as they are now, there was already this notion that "oh, I'm working in an interpreted language which provides a layer of abstraction so I don't need to know how computers work". I made a good start of my career (and met a lot of people who had been doing so for quite some time) essentially kicking those guys out of their jobs because it turned out doing scripting with an understanding of the computing consequences of your choices is applicable in a very broad set of situations, but scripting without that understanding is barely more useful than knowing how to use Excel.

High level languages actually can kick quite a bit of butt in performance critical situations, because they let you focus on the bigger picture of how you are executing, where the bigger performance wins can be had (I've seen "scripting languages" winning performance bake-offs for exactly this reason), but you have to know what the heck you are doing. People often make the mistake of thinking this won't matter. They tend to have very short careers.

<comment><USER7> Within the limitations of a scripting language, of course you try to get the best performance that you can.

However in general within a scripting language you are not trying to optimize things at the CPU cache level. You're worried about overall efficiency of your algorithms, avoiding disk, identifying performance bottlenecks, etc. But the pervasive use of hashes everywhere and memory hungry data structures makes careful use of CPU caches pretty much a lost cause.

Furthermore the language does so much behind your back that an analysis of performance from first principles is very unlikely to be right. Instead you need to benchmark.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> We use this full document very often during teaching in graduate-level courses and it always helped the students understanding the underlying concepts of data access. Even though for most of the people a thorough understanding of DRAM refresh latencies is not important, it is still a very, very important read for every programmer.

Why?

The answer is easy: Almost everything in modern computers is about locality spatial and temporal locality. As soon as the complexity of the programs you write is one level above "Hello World" or in Rails-speak a simple controller method. This will become important.

It's easy to translate the concepts of aligning data in DRAM because it's faster to Rails-ish behavior. Assume that you read lot's of data from your database and you process it item by item. Inside your loop you perform another fetch from the database, again and again. If you would try to join the data (speak aligning) than you would need less requests to the database.

Any system architecture that involves handling data will at one point in time come to the situation where the programmer will think about ordering instructions, database queries or even attributes inside a c-struct (see the discussion about why short ruby strings are faster than long...) If you won't keep anything in your mind from this document, but if you remember that sequential access and exploiting locality will increase the performance, then the document made it's point.

Take the hours, read the document, and probably forget most, but take it as an inspiration, rather than an optimization guide.

<comment><USER10> I used to think about locality a fair amount back when I programmed in C.

In Java, I have no idea whether or not the fields in a copybook^H^H^H^H^H^H^H^H bean are going to be anywhere near contiguous, or not. Packing and unpacking stuff in a byte array / string gets tedious.

It's a shame low level integration isn't somehow easier in Java, like it is in C#.

</comment></comment><comment><USER11> Ahh, the "What every programmer should know about X" articles.

So, Ulrich Drepper thinks everyone should know about the intricacies of DRAM refreshing. Zed Shaw thinks we should all know statistics. Some other schmoe thinks we should know about SEO. Et cetera.

Posts like these should be titled "I worked hard and feel good about myself for knowing X, therefore everyone should know it."

It is blisteringly stupid. Every programmer needs to know WHAT THEY NEED TO KNOW.

Nobody can know everything. Why don't we all just learn what we need, build the things which interest us, and stop telling others what THEY need?

Having said that... interesting stuff. Just needs a title change.

<comment><USER12> It's on LWN. 90% of programmers who go there really do need to know memory in the detail Drepper talks about. I see your point though - I fully expected the title to be linkbait to a hastily written article.

This article, however, is the real deal. Drepper's site (<http://www.akkadia.org/drepper/>) won't win any design competitions but is a goldmine of systems programming wisdom.

</comment></comment><comment><USER13> I'm surprised to see so many people here getting hung up on the _title_ of this paper, of all things, when there's so much good information in it.

The title is just the author's opinion. Deal with it. And then read the paper anyway, because even if you don't use it directly it will help make you a better programmer.

</comment><comment><USER6> These are old, but great. Drepper's history with glibc is a little checkered, but his whitepapers (there's an equally great one on the NPTL work from back when that was being done in glibc) are gold.

Understanding the DRAM cycle is critical to performance tuning in modern code, and my experience is that virtually no application developers know how it works.

</comment><comment><USER14> I wonder if PCs will ever have non-linear memory.

To explain what I mean, suppose you have a big 2-dimensional array in memory. As it works now, if you read a cell from memory, the area in memory around it is brought into the cache. Because of the way that arrays are represented in memory, what you get in the cache is just cells from the same row (or column). This means that if you need to access neighboring cells above of below the current cell you're not making any use of the cache. The way I see it, it might be useful if the system could somehow instruct the memory to bring a different-shaped block into the cache. Maybe there will be a whole part of memory intended for 2-dimensional arrays, and where blocks of memory will be allocated as squares on the plane (instead of segments on a line). Of course, something like this would require support from the programming language, which would need to mark put 2-dimensional arrays in that special part of the memory (and allocation will be much harder, now that you need to allocate 2-dimensional chunks).

<comment><USER6> That kind of caching architecture exists for graphics hardware already. GPUs have modes where the natural breakdown of memory is 2D (basically by interleaving the X and Y bits), and indeed that improves cache locality for 2D accesses. But not by a whole lot.

The reason caches come in "lines" that are bigger than the words size of the processor is not an optimization (i.e. they're not deliberately bringing in nearby memory in the hope that it will be useful). The reason is that the logic associated with maintaining the cache (index and tag bits) is expensive, and needs to be repeated for each "thing" you have in the cache. So by making the "things" bigger (e.g. the 512 bit cache line on modern CPUs) you reduce the overhead of the bookkeeping.

<comment><USER15> _"The reason caches come in "lines" that are bigger than the words size of the processor is not an optimization (i.e. they're not deliberately bringing in nearby memory in the hope that it will be useful)."_

I do not think that is true. There is considerable chance that that extra memory will be useful. The simplest example to think of are cache lines that contain program code. The other canonical example is the "for item in array do item = f(x)" loop.

<comment><USER6> No, there's hardware to do that too (speculative reads), but it's even more complicated. Really the driver of cache line size is simple efficiency. Software has to jump through lots of hoops in practice to try to align accesses to cache lines, and that could be avoided if memory could be efficiently cached in word-sized chunks.

<comment><USER15> I still doubt that. IMO, cache lines are larger than the largest item a CPU can read because the probability that the extra data will be needed soon is high enough to offset the extra work needed to read that larger cache line and the (few) transistors needed to increase cache line size.

In some sense, large cache lines are just cheap ways to implement speculative reads.

See for example <http://dl.acm.org/citation.cfm?id=255272> (pay walled, but the abstract is clear enough):

"A significant observation is that, although increasing line sizes can result in a higher hit ratio, it also considerably increases traffic to main memory, thereby degrading the performance."

</comment></comment></comment></comment></comment><comment><USER16> If every programmer actually had to know the contents of every "what every programmer should know about X" articles before programming then we wouldn't have any programs.

</comment><comment><USER17> <http://www.scribd.com/doc/92111472>

I'll just leave this here, PDF version for anyone who doesn't want to mess with the webpage reformatting.

</comment><comment><USER18> This was posted almost 2 years ago: <http://news.ycombinator.com/item?id=1511990>

</comment><comment><USER19> It seems that every day on HN there is some post offering something "every programmer needs to know", yet the post is actually some very in-depth dive into the minutiae of the author's pet subject.

The other day there was some post on front end/client side programming with a crazy amount of things everyone needs to know. Now apparently we also have to know the characteristics of the charging/discharging of capacitors in memory.

All in all, this is WAY too in depth too have the title it has. The only way you have to know all this stuff as a software engineer is if you are working on the lowest level of something like an OS kernel or a video game engine.

</comment><comment><USER20> Today, this is what every "low level programmer" should know. If you are using a high level language with built in memory management and garbage collection, a condensed subset of this will suffice as only a fraction of the content will be helpful to you.</comment>


Caloric restriction improves health and survival of rhesus monkeys - <AUTHOR> http://www.nature.com/articles/ncomms14063 <comment><USER2> Interesting adaptation.

My guess it means more possibilities to reproduce later and/or means birthing now. Although, of course, excessive weight in humans decreases fertility too.</comment>


Ask HN: How do you deal with a boss who is stuck in the past? - <AUTHOR> I'm working for a small startup that has chosen Rails as its development platform. A significant portion of the application has already been coded by my boss and he continues to participate in development. The problem though, is that while he means well, his many years of C experience and his lack of web application development is causing me some serious pain. I am continually refactoring his code and trying, to the best of my ability, to help him understand basic principles of Ruby style, web design patterns, and basic OOP. It's getting to the point where he is becoming very defensive about his code. How the the HN community deal with these situations? <comment><USER3> _A significant portion of the application has already been coded by my boss_ ... _his many years of C experience_ ... _I am continually refactoring his code_ ...

Several responses come to mind here:

1\. Unless you're working for a very unusual startup, your time would be better spent writing new code rather than refactoring existing code.

2\. You speak of experience as though it's a bad thing. It's possible that your boss knows what he's doing.

3\. Ultimately, he's the boss. If you don't like his code and he doesn't like your suggestions, either quit or be fired.

 _How the the HN community deal with these situations?_

I think the usual solution here is to quit and start our own companies where we don't have to put up with a boss we don't like. :-)

<comment><USER4> I strongly disagree with your point #1.

I understand you want to emphasize business value and short-term returns but barring refactoring is taking it too far. Smart refactoring will pay off immediately by giving you faster turnaround for new features. And fast turnaround is a startup's edge.

I don't refactor for refactoring's sake but I do refactor every time I would benefit right away from the change. It also makes programming more interesting. Once lousy code is refactored, I can go back to solving the right problems and stop fighting with it.

<comment><USER5> I agree with cperciva's point.

There have been times I've been tempted to refactor something at Justin.TV, but most of the time it would be wasted effort:

\- Sometimes you refactor a feature only to discover people aren't using it very much, and you should just scrap it.

\- Other times you arrive at beautiful code and then find it needs to be discarded and completely rewritten in order to scale. If your traffic is growing exponentially, you'll find this happening a _lot_ , no matter how hard you try to avoid it. Figuring out in advance what bottlenecks you're going to hit is often very difficult.

I think the right approach is to just write the best code you can up-front, and live with the mistakes you make. They're minor in comparison to all the other challenges a startup faces.

<comment><USER6> I also agree.

If his employer coded the first iteration, he may have a better understanding of the problem space and not care if unimportant parts of the back end are sloppy. Or he may need to maintain and debug it himself, in which case refactoring is hurting the business and possibly introducing new bugs.

Those are all perfectly good reasons for development to happen HIS way. I would be really irritated if I hired someone to HELP me they started refactoring stuff instead of following my lead on what are priorities and teaching me in areas where they felt I was weak.

It sounds as if the latent issues here are power and compensation. If it is really about design approaches, try to make the system more modular and take care of building one of the modules from scratch yourself. Your employer is more likely to hand down additional responsibility once you've proven your approach in a restricted area.

</comment></comment></comment></comment><comment><USER7> I'm not trying to be rude, but some of tension in this situation seems to be caused by a clash of egos as much as by any technical deficiency.

In my current employment, there are many procedural deficiencies as well as technical weaknesses. But one thing that really is done right is that every piece of code that is merged into the source base is peer reviewed before it is committed. I'm a strong technical member of the team, and when I started I thought quite a bit of myself. Even so, I wrote things which were potentially confusing to my teammates. Not confusing because they are incapable of understanding, but just not having the sort of clarity which would make later maintenance easier for whoever would be tasked with it.

When I got some hard questions in code reviews I felt a bit defensive at first, but once I swallowed my pride (tastes like crow!) and realized that I really am working with talented teammates who want us all to succeed, something clicked. I was teaching others new techniques and idioms, and they were teaching me about teamwork and the importance of writing for other humans as well as myself and the computer. I do sometimes end up doing major structural refactoring of existing code, but there's always both a good business and technical reason for it. I will say that I put in my own taste and style, but there's nothing wrong with that so long as everyone can understand it.

In your situation, try hard to focus on the human element here instead of just the technical element. Have some respect for the people you work with - <USER2> should all be bringing a variety of experiences and knowledge to the table. I find it hard to believe that your boss is just trapped in the past and can't understand modern web programming. The fact that he chose Ruby and Rails for this effort indicates to me that he really is open to new ideas and opportunities. Hey, it's not CGI! You certainly have an opportunity to teach here, but you also might have an opportunity to learn something. Try to sit down and have an ego-free conversation about what's going on and see if you can find a deeper reason. Especially in a small startup, resentment and defensiveness can only undermine your collective ability to succeed. You need every strength that you can call upon in such an environment.

</comment><comment><USER8> First, you need to be nicer. Calling him "stuck in the past" and saying he doesn't get "basic principles" or "basic OOP" is needlessly insulting.

Second, stop blaming him. You're working for him, so obviously he has done some things right and deserves some respect. If you understand something he doesn't, it's your responsibility to explain and educate. If he is "very defensive" then perhaps you are bringing issues up in too confrontational a way.

Finally, be patient. Find some code that could be improved with better adherence to Ruby style, work up a changelist that cleans it up, and politely send it to your boss suggesting that you think this style has advantages, would he mind if you fixed it up? Show him how your style has advantages, point by point, and over time you will earn respect.

</comment><comment><USER9> I'd like to hear your boss' point of view before jumping to judgement.

... and I think you could probably do with hearing his point of view too.

</comment><comment><USER10> Can you give some examples of patterns that show up in your bosses code that you disagree with? Let us judge them too.

How many other developers are on this team with you and your boss? Maybe you can get them to stand up and say something too.

Maybe you can get together with your team and do peer reviews once a week. Try reaching out to your boss about a function/module you have written that you know needs improvement and seek his opinions on what could be done. You have to start thinking of him as a peer who is trying to help create a successful business and not as an antagonist to beautiful code.

Your code might be pretty, but if beautifying code takes the place of bug fixing and adding features needed to sell a product or service, it doesn't matter.

</comment><comment><USER11> How about recommendation #7 of <http://paulgraham.com/head.html> ?

<comment><USER12> That's my favorite solution. I don't really care if someone else is writing code that makes me vomit as long as the interface I have to it is good enough and that it works reliably.

<comment><USER13> You will if you ever need to maintain or expand it for any reason, and the person you might otherwise call on to do so is unavailable.

<comment><USER12> We're talking about startups here. If that unavailable person is your co- founder you're probably screwed anyway.

<comment><USER13> That could be even worse, even if your co-founder is still available. What if your co-founder is stuck on a difficult problem, and needs a second set of eyes on the code to help him out? If he has been writing vomit-code the whole time, will you be able to help?

The point behind tip #7 was to advocate having a single person in charge of editing a component, to avoid two people making changes to the design and confusing one another. The point wasn't to suggest a total lack of caring about the other developer's work.

This smells very much of political fence building, and an overly zealous drive to strictly segment responsibility.

<comment><USER12> I think the core idea of #7 is to give a vast amount of freedom to each person in their work so they can let their brain run wild on the problem without restriction. Even if that's not what PG meant, it certainly is what I mean.

I think the other great benefit is that each person can afford to become an expert in their areas, rather than each person becoming merely competent at everything. I think 3 people who are each experts at 3 different things is more powerful than 3 people who are merely competent at the same 9 things.

<comment><USER13> No problem with the idea of letting peoples' brains run wild on a problem. I suspect you and I could debate for some time about your latter point; I'd worry about things ranging from bus factors to developers who become expert in some set of things later being confined to those areas of expertise to avoid stretching their knowledge portfolio to thin, whatever that means. Maybe it is worthy of it's own conversation somewhere; maybe such a conversation already happened that I could get more insight from.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> I've dealt with such a guy during a freelance project. Heck my situation was worse. The boss and his whole team of 6 members were like an expired drug who couldn't even read the docs of a framework or language and would get excited and choose a framework in an (unstable) ver 0.1 for production env. Everytime I had to tell/explain the right way of doing things I had to explain to boss+6 guys. So I hit upon two options.

Let him run/test the web app or QUIT

Option-1: LET HIM RUN/test the webapp. When errors pop he'll surely come to you. Then explain the right way to him and don't tell him anything more than what he needs to know about the error. This is peaceful and will make your boss more happy that he has a guy who's capable of doing stuff. Days later you'll be called the hero who could do things the right way (yeah like Hancock coming thru the door and not breaking a wall to get in). I chose this. So now whenever there's anything wrong they call me for help even to this day long after the project is over.

Option-2: QUIT. There's no way you can work with these guys if you can't convince them.

I would suggest choosing the first option. Means a lot professionally.

</comment><comment><USER13> I'd have to understand more about your situation to really give any sort of advice. A few questions come to mind:

1\. Do you believe what the startup is doing is worthwhile? How much of what keeps you there is just a need for a job, and how much is due to you wanting this job in particular?

2\. Does his code function correctly? Is it overly fragile? Has it proved to be a maintainability problem in the past? Have others complained about your boss's coding style and defensiveness? If so, what action have they taken?

3\. Have others commented on how you approach your boss in these instances? Do you seem overly abrasive? Do you stand your ground when he disagrees, or do you give in as soon as he does? If the latter, do you think you would face severe consequences if you _did_ stand your ground?

Lots of questions, but narrowing down what is important to you will help me and others give you better advice.

</comment><comment><USER15> 1\. Make a best effort to reach a mutual understanding. Don't assume you are right; question both sides.

2\. (Prepare to) Move on. If your boss is truly holding things back, staying will increase your frustration while limiting your development. Been there, done that.

</comment><comment><USER16> Whenever there is an argument over whether something should be refactored, dont call a meeting(if it happens now). Just email with pros and cons(to as much detail as possible in a digestable way). Its easier to get lost in a conversation, but with email I feel its easier to convince and once pros and cons are listed for each of them, there is really a no need for argument. Usually something will come out as an obvious solution. Just my 2c

</comment><comment><USER17> I wonder if there are two programmers in the world who can agree on the best way to solve a problem.

</comment><comment><USER18> There is more than one way to do it. Design patterns, basic principles of style, all of these are only soft recommendations, don't mistify them. Try to cope with the existing code, probably you will learn from the old fart.

</comment><comment><USER19> I've been the in the same situation(s), and I just left when I couldn't handle it anymore.

</comment><comment><USER20> Have you spoken to him about it? Explain to him how your time and in turn your startup's money both of which are precious at this point are being wasted. If he still didn't get you are in the wrong boat my friend, quit.

<comment><USER21> Someone who picked Rails doesn't sound like he's _that_ far in the past, so yeah, maybe helping him try and get it, and compromising on when to nitpick and when not to in order to keep productivity high. Best of all, show him some rewritten code that's dramatically shorter and explain that this will make both further work maintenance easier and cheaper.</comment></comment>


The Vanguards Onion Service Addon - <AUTHOR> https://github.com/mikeperry-tor/vanguards <comment><AUTHOR> This is a followup to " Deanonymizing Tor Circuits".[0] I added a comment there,[1] but I doubt that it'll get seen, unless someone searches.

From TFA:

> Vanguards help guard you from getting vanned...

> Even after deployment of the new v3 onion service protocol, the attacks > facing onion services are wide-ranging, and still require more extensive > modifications to fix in Tor-core itself.

> Because of this, we have decided to rapid-prototype these defenses in a > controller addon in order to make them available ahead of their official > Tor-core release, for onion services that require high security as soon as > possible.

There's some informative discussion in this tor-dev thread.[2] And in particular, Mike Perry comments about the vanguards hack:[3]

> Yes, specifically vanguards always uses two guards and disables all path > restrictions to mitigate info-leak route disclosure attacks like the above.

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

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

2) [https://lists.torproject.org/pipermail/tor- dev/2020-February...](https://lists.torproject.org/pipermail/tor- dev/2020-February/014146.html)

3) [https://lists.torproject.org/pipermail/tor- dev/2020-February...](https://lists.torproject.org/pipermail/tor- dev/2020-February/014154.html)</comment>


Glose: A New Ebook Reader that Turns Reading into a Social Experience - <AUTHOR> http://techcrunch.com/2014/11/13/glose-is-a-new-ebook-reader-to-turn-reading-into-a-social-experience/

<comment><USER2> Hi HN,

I'm a cofounder and CTO at Glose. Please let us know if any questions or feedback! We're very excited to be launching and trying to reinvent the way we read books :)

Download link for iOS: [https://itunes.apple.com/us/app/glose/id896681871?ls=1&mt=8](https://itunes.apple.com/us/app/glose/id896681871?ls=1&mt=8)

<comment><USER3> This comment was briefly auto-killed because it was a duplicate of your previous comment. Seeing that pointed us to [https://news.ycombinator.com/item?id=8602254](https://news.ycombinator.com/item?id=8602254), which was penalized as a voting ring.

Since we don't want duplicate threads on the same page and the Show HN is obviously more of a primary source, we've turned off the ring detector on that one and will treat this one as a dupe.

</comment></comment><comment><USER4> Please don't ask people to upvote on Twitter, and especially don't tell people how to bypass the voting ring filter. [EDIT: tweet deleted]

Also, you submitted a Show HN today. No reason to submit two different links.

<comment><USER2> Just FYI I didn't submit this one, @collision did</comment></comment>


Glasgow Haskell Compiler 7.2.1 released - <AUTHOR> http://www.haskell.org/ghc/download_ghc_7_2_1

<comment><USER2> Woohoo, Monad comprehensions :):

[http://www.haskell.org/ghc/docs/7.2.1/html/users_guide/synta...](http://www.haskell.org/ghc/docs/7.2.1/html/users_guide/syntax- extns.html#monad-comprehensions)

This improve code readability when used judiciously.

<comment><USER3> What monad would you use them for? I've never seen a really good use case.

<comment><USER4> I think LINQ is a special case of a monad comprehension. Syntax checked, type checked, composeable query languages (of which the "Structured" Query Language is only one example) are good things.

So far everywhere where I might have been tempted to use a Maybe monad comprehension, applicative functors were more clear anyhow.

<comment><USER5> You are right about query languages being a good for for monad comprehensions. See Torston Grust's dissertation[1], specifically "Combinators from Monad Comprehensions."

1\. [http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.88.9...](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.88.9148)

</comment></comment></comment></comment><comment><USER6> There is some pretty cool stuff in there for a point release. It's cool that monad comprehensions are back in, but I'm most excited about Safe Haskell, which should enable enable some new types of application (safely running untrusted code).

<comment><USER7> As I keep telling people, 'Safe Haskell' is not as generally useful as they think it is. Mueval (<http://hackage.haskell.org/package/mueval>) has to do a _lot_ more than just be careful with its imports before it can safely run arbitrary untrusted code.

</comment></comment><comment><USER8> Quite relevantly to day-to-day use, ghci's got multiline input and the ability to load up scripts. No more copy-paste out of _scratch_ in emacs!

</comment><comment><USER9> Good timing, I have haskell exam in 2 hrs ;)

<comment><USER10> good luck!!! you should have finished it by now! :-)</comment></comment>


The Long, Strange Trip to Pluto, and How NASA Nearly Missed It - <AUTHOR> http://www.nytimes.com/2015/07/19/us/the-long-strange-trip-to-pluto-and-how-nasa-nearly-missed-it.html

<comment><USER2> Timelapse of the volcano on Io referenced in the article [http://www.nasa.gov/topics/solarsystem/features/io- volcanoes...](http://www.nasa.gov/topics/solarsystem/features/io-volcanoes- displaced.html) (2013). It's easy to forget Pluto & co. are not the only things unravelled by the New Horizons.

<comment><USER3> That animation and this similar photo [http://apod.nasa.gov/apod/image/0801/jupiterio_newhorizons_b...](http://apod.nasa.gov/apod/image/0801/jupiterio_newhorizons_big.jpg) are a couple of my favorite space images ever.

<comment><USER4> Wow - I've seen smaller versions of that photo amid all the New Horizons releases, but I never noticed that you can actually see the volcano erupting on Io!

</comment></comment></comment><comment><USER5> "Wait, where is it? We've been flying through space for hours."

"Weren't we supposed to angle a few degrees over at the last navpoint?"

"No, I'm telling you I was lined up with that constellation. It's on the route. I know what I'm doing. We just need..."

"There's the star pattern we were waiting for! Slow down now or your going to miss it!"

"(expletives)!"</comment>


Spinning Up in Deep RL – Workshop Review - <AUTHOR> https://blog.openai.com/spinning-up-in-deep-rl-workshop-review/ <comment><USER2> Is there any centralized place to find out about workshops like this _before_ they happen?

<comment><USER3> They tend to post about a week out on Twitter.

<comment><USER2> Not helpful. I'm a government scientist. I need thirty days. I would imagine a lot of corporate travel offices couldn't make a trip like that happen in a week either. Not to mention the long odds that someone's calendar would happen to be open on the right days with short notice.

<comment><USER3> You asked so I gave you what I had :)

I understand that. They do also tend to livestream the workshops, which is not the same as being there, but better than nothing. I imagine if you tweeted at them / emailed them they might start to understand that proactive communication is a better approach</comment></comment></comment></comment>


Trial Balloon for a Coup? - <AUTHOR> https://medium.com/@yonatanzunger/trial-balloon-for-a-coup-e024990891d5#.kucsawcoj <comment><USER2> Deliberate action contrary to valid and binding law by the executive is, itself, a coup (specifically, an instance of the form known as a self-coup or autocoup); so it's not a trial balloon.

OTOH, while actions which arguably (or even fairly clearly) cross that line have occurred in many recent US presidencies, the author here is right to raise the issue that the acts the article highlights suggest that the present violations are likely to be the leading edge of a self-coup of unprecedented magnitude in the US.

</comment><comment><USER3> This reads like a conspiracy theory I'd find on Info Wars. I really dislike the term trump derangement syndrome, but every day its becoming a better descriptor.

We need to be better than this.

Trump's very election is a coup against the establishment, and so was Bernie Sanders impressive campaign in the primary. Trump's win, and Bernie's Rise make it clear, that Americans are done with business as usual politics.

We all need to be dealing with this new reality instead of running to conspiracy theories.

<comment><USER4> These are false equivalences. Alex Jones at InfoWars believes that Clinton and Obama are literally agents of satan, of literal supernatural evil. He's so over-the-top that his videos have become meme fodder. Obama joked about them on the stump (Jones claims that Obama left an odor of sulfur because of his demonic affiliations), and _everyone in the audience knew what he meant_.

Meanwhile, we're just a few days into this administration and it has already enacted a Muslim ban (complete with an escape hatch for Christians from Muslim countries) that operates in open defiance of federal courts --- Trump has precipitated a Constitutional crisis in how the US Marshal Service, which serves the courts but formally reports to the Executive Branch, will carry out its orders.

A convenient way to dismiss an argument is to attempt to tie it clownish morons like Alex Jones. But to accomplish that, you'll have to support your argument with evidence. What supernatural powers does this post suggest compel Trump to violate the federal courts?

<comment><USER3> Its absolutely not a false equivalence. Infowars publishes tons of fear mongering articles with various shades of legitimacy, just like this article. EDIT: It's how they got so influential, they mix a lot of half truths and speculation into their articles.

A muslim ban that doesn't ban saudi arabia, india,pakistan indonesia,and somalia doesn't seem much of a muslim ban.

I'm going to quote elon musk here "Reading the source material is better than reading other people's opinions about the source material" on the muslim ban. Its pretty clear the media is acting as an opposition party to Trump rather then objective researchers.

I highly suggest you read the actual executive orders, before you start fear mongering, because that doesn't actually help anybody.

<comment><USER5> Source material _is_ important. It's also important to look at what people have said around the creation of that source material. Giuliani, in an interview on Fox News, yesterday:

[http://thehill.com/homenews/administration/316726-giuliani-t...](http://thehill.com/homenews/administration/316726-giuliani- trump-asked-me-how-to-do-a-muslim-ban-legally)

"I'll tell you the whole history of it: When he first announced it, he said 'Muslim ban,'" Giuliani said on Fox News.

"He called me up, he said, 'Put a commission together, show me the right way to do it legally.'"

I find it very difficult to dismiss out of hand that it isn't intended as a Muslim ban in spirit when Giuliani explicitly says that this exactly what he was asked to do.

The submitted post also includes two articles which include a lot of additional source material.

<comment><USER3> In the article, it says explicitly.

""" "The areas of the world that create danger for us, which is a factual basis, not a religious basis. Perfectly legal, perfectly sensible."

Giuliani reiterated that the ban is "not based on religion." """

A muslim ban not based in religion sounds nonsensical to me.

As for the conspiracy theory medium article, its easy to do in a world of big data. It's called cherry picking, and its exactly what Info Wars does to create their fear mongering articles. Vague speculation and half truths on the main premises of the paper, and then even the conclusions.

Here's an example from the medium article: "The aims of crushing various groups — Muslims, Latinos, the black and trans communities, academics, the press — are very much primary aims of the regime"

This is clear hysteria. Here's what Trump actually said on black communities while campaigning, "We're going to rebuild our inner cities because our African-American communities are absolutely in the worst shape they've ever been in before. Ever, ever, ever."

And so far President Trump as been doing pretty closely what he said.

<comment><USER5> _A muslim ban not based in religion sounds nonsensical to me._

I agree. Will you admit that sometimes people figure out ways to accomplish their goals under the cover of something else? That they know something won't be politically or legally feasible to do head on, but that they can accomplish another way if they don't express their actual intent explicitly? I think it's hard not to argue this happens. This type of accusation is thrown around all of the time from all sides.

In this particular instance, we've got explicit evidence of exactly that _from one of the people who was involved in doing it_. It's really hard to ignore this, or even deny the possibility without being disingenuous.

And this is ignoring the submitted article all-together.

<comment><USER3> No I don't. I think the executive limits worked pretty well here. President Trump may have wanted a muslim ban, but they couldn't do it.

So they tried to take Obama what did in 2011, a few steps further and are rightfully taking flak for it, just like I think Obama should have gotten in 2011.

Again though a muslim ban not based in religion sounds nonsensical.

Edit: Is there subtext I'm missing. Are you implying this is a slippery slope to a full muslim ban ?

<comment><USER5> _I think the executive limits worked pretty well here. President Trump may have wanted a muslim ban, but they couldn 't do it._

(Aside: _may have wanted_? Can't even trust what Giuliani said Trump told him?)

Great. So we're supposed to be happy with a President who stretches the law as far as he can to do what he wants. This smacks of the "well, it was legal, so what's the problem?" argument we hear all too often. Just because you can figure out a way to do something legally _doesn 't mean it's the right or moral thing to do_.

Response to the edit: Yes, I think there's something you're missing, and it's not subtext at all. Trump at minimum _wanted_ a Muslim ban. There's no reason to think he won't continue to push for one, or one that accomplishes the same goals.

Trump is very good at not clearly expressing what he means. I'm not satisfied yet whether this is intended or not. If the latter, it's sowing a lot of needless confusion domestically and abroad. If on purpose, it makes it very difficult to trust him and know what his intent is, domestically and abroad.

Evidence on HN: Trump supporters are divided as to whether this is a Muslim ban or not. You'll find comments expressing either opinion.

<comment><USER3> There was double quotes in your article about Giuliani talking about the "muslim ban", so yes I don't know what that may mean or may not mean and I didn't feel like speculating.

Also I said I don't think it was the right thing to do.

But again I have to say a muslim ban that isn't based on religion really doesn't make sense. As for region based bans, those are not really new they've been done since Jimmy Carter.

<comment><USER5> I think the double quotes you're referring to are a quote for Giuliani quoting what Trump said to him. Compare with the "Put a commission together" quote-in- quote in the next line.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> This should be upvoted way higher.

The US Executive's power is being taken over y a small cabal of extremists and kleptocrats. There is extensive history on this type of takeover.

<comment><USER7> US executive power is vested in a single individual to begin with.

The issue is whether they are following the law or not.

(Advice and consent of the Senate for cabinet positions isn't meaningless, but they instruct the executive by statute not by directives given to cabinet members)

<comment><USER6> The Executive has already made the DHS disobey a court order. If that's not a Constitutional Crisis I don't know what it.

This is _literally_ a textbook example of how autocrats take over. It has happened before and all the rules for that game are being played out right now.

<comment><USER8> This is not new.

It's interesting to note that Trump has placed a portrait of Andrew Jackson in the Oval Office, as there are many parallels between Trump's rise to power and Jackson's.

> In a popular quotation that is believed to be apocryphal, President Andrew > Jackson reportedly responded: "John Marshall has made his decision; now let > him enforce it!" This derives from Jackson's comments on the case in a > letter to John Coffee, "...the decision of the Supreme Court has fell still > born, and they find that they cannot coerce Georgia to yield to its > mandate".

source: [https://en.wikipedia.org/wiki/Worcester_v._Georgia#Effects](https://en.wikipedia.org/wiki/Worcester_v._Georgia#Effects)

A President wielding Presidential authority is not a coup, it's acting within the authority given to the office via the Constitution and Congress. If you believe the President has too much power then I would urge you to be doing all you can to limit the power of the office, not just change who is in it.

<comment><USER7> _it 's acting within the authority given to the office via the Constitution and Congress_

There's a bunch of stays issued by federal courts that are based on questioning whether the administration is doing that.

<comment><USER8> From my perspective - _good_.

I don't mind sharing that I voted for Trump. I'm not a cheerleader for him, though, my reasons for doing so are limited in scope and he has yet to act to support my interests. That said, all signs seem to indicate that he will do so.

The absolute best thing that could come from a Trump presidency is if Congress and the courts were able to significantly restrain the authority of the Executive Branch in general and the President in particular. It has grown far beyond its Constitutional bounds.

<comment><USER7> So, uh, what if he is acting outside the scope of the powers given to him by the Constitution and Congress and the courts and Congress don't do enough to stop him?

(You know, the premise of the link)

<comment><USER8> If that's the case, we're too far gone to save the Republic.

Do you think we'd have a better chance to save it in four years? or forty?

We've clearly been trending toward increased executive power since our founding. If it's too late now it'll be too late later.

<comment><USER9> "I'll vote in a morally bankrupt populist kleptocrat and then argue that if the system can't restrain him it's not my fault."

<comment><USER8> No.

There are a lot of "if"s in this discussion. Trump has only thus far fulfilled some of his campaign promises. We're discussing potential outcomes if he were to exceed his authority and refuse to yield to the rule of law. I don't believe that will happen.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Since this has been submitted several times and flagkilled on each occasion, we've turned the flags off on this one to host the discussion.

</comment><comment><USER11> It's not a "trial balloon" for a coup. It _is_ form of a coup, albeit of a softer, slower-moving sort.

For as long as people agree to go along with it, that is.

</comment><comment><USER12> He's running it like a business, this looks like just about every merger I've ever been stuck in the middle of. Not entirely surprising given his background, surely?

</comment><comment><USER13> I found this earlier today which I think gives a much fairer characterization of the recent executive orders. [http://www.investors.com/politics/editorials/are-we-going- to...](http://www.investors.com/politics/editorials/are-we-going-to-freak-out- every-time-trump-does-what-he-promised/)

The type of fearmongering and conspiracy theory generation in this article reminds me of conservatives during Obama's presidency.

</comment><comment> gingerbread-man Not real journalism! This shouldn't be on the front page-- it's full of unsubstantiated accusations and questionable interpretations of fact. The Trump administration's actions over the past few days are horrifying enough-- editorial catastrophization serves no purpose here.

<comment><USER14> It doesn't claim to be "journalism." This was published on Medium, which is pretty clearly for essays and opinions. I'll grant you that some of the speculation is pretty far out there (like the Rosneft sale being tied to Trump). But the author is trying to put together a cohesive theory that might explain the chaotic moves being taken by the new US executive branch. If you want to disagree with the theory, point out where it's faulty. But claiming it's "not real journalism" is a non sequitur -- it was never intended to be a reporting of the facts.

</comment></comment><comment><USER15> I read the article and don't know enough facts to know how accurate and truthful it might be. However, what if you saw a Hitler-like person taking power? Surely it would be much harder today given the level of communication we have today?

<comment><USER7> Hitler took power (in part) by using radio and television to broadcast his message.

It wasn't particularly sneaky.

<comment><USER16> The formula is pretty simple. "All good patriots are with me. Show yourself to be a good patriot by reporting enemy talk. When I'm in power, I will punish my enemies."

<comment><USER17> This has been employed by both sides lately. How many threads were there on not doing business with Peter Thiel?

</comment></comment></comment></comment><comment><USER18> This was a fun read. It's almost a good foundation for a best seller.

I liked Gorbachev's theory, too: [http://time.com/4645442/gorbachev-putin- trump/](http://time.com/4645442/gorbachev-putin-trump/)

</comment><comment><USER19> This all reads true to me, what is arguable here?

<comment><USER8> The central premise?

If Trump wanted to take over the US government, this is not at all the way he'd go about it.

<comment><USER20> And you know this because....?

<comment><USER8> An executive order on immigration, while arbitrary, follows established precedent.

The inclusion of existing visa and permanent residency holders was designed to stoke the fires of the media and of the left. Trump has a whole stack of things he wants to accomplish, and he's tiring out his primary opposition while simultaneously virtue-signaling to his base.

If he were wanting to instigate a coup he'd be quietly placing people beholden to him into positions of power, driving wedges between the internal divisions of his opposition, and solidifying the ground he's already taken.

Trump is nimble. He understands what's going to incite those who speak out against him, and he uses that knowledge to set them up for failure. He did this throughout the campaign and he's doing it now. You're supposed to be upset about the immigration EO. You're supposed to be upset about his SCOTUS nominee that he's promised tomorrow. You're supposed to be upset about the next thing he does.

Trump is ridiculing his opposition, and so many people live in their own personal echo chambers that they aren't even noticing.

<comment><USER21> > If he were wanting to instigate a coup he'd be quietly placing people > beholden to him into positions of power

The fact that Bannon has been installed on the National Security Council, and that attendance of the Joint Chiefs of Staff and DNI is allowed only upon request of the Council is the bigger story here.

[EDIT] And it is not so much that he is the instigator of the coup. Trump may only be the puppet here.

Genuine question: How does one recognize a coup before it's too late to stop it?

</comment></comment></comment></comment></comment><comment><USER22> Although this reads a little hyperbolically, Yonatan is generally a pretty good source of information.

</comment><comment> rm_-rf_slash During the Nuremberg Trials, former Nazi officers claimed that they were merely "following orders."

CBP officials, meanwhile, are ignoring the law and the independent judiciary itself.

How is this not treason?

<comment><USER23> Not 100% sure of this, but I suspect they don't take orders from the judiciary, rather their superiors, which are part of the executive branch. So it's possible that their superiors haven't changed the orders or are doubling- down.

Now, that is _illegal_ of course, and morally reprehensible, but they could still be construed to be "following orders".

<comment><USER8> Let me scare you a bit further, then - it is entirely within Trump's power to order Executive Branch employees to enforce whatever orders he enacts, _then preemptively pardon them from any potentially criminal acts that arise from doing so_.

<comment><USER24> I don't think this is correct - the pardon authority only applies to acts that have already been committed, as far as I can tell. He could maybe keep pardoning everyone every day for crimes they committed on the previous day. Would make an interesting paragraph in a dystopian novel.

<comment><USER8> Article 2, Section 2: [...] "he shall have Power to grant Reprieves and Pardons for Offences against the United States, except in Cases of Impeachment."

It looks to me like he has the ability. As you said, even if he doesn't, he can still make it happen as long as he's in office.</comment></comment></comment></comment></comment>


How secret languages develop in closed societies - <AUTHOR> http://www.slate.com/articles/arts/books/2013/12/daniel_heller_roazen_s_dark_tongues_reviewed.single.html

<comment><USER2> Let us converse is secret tongue of assembly, lest those higher language ruffians understand us. While article is somewhat interesting, I feel like it fails to emphasize important idea. Secret language is just one part of clan identity. Humans evolved on a planet where being alone is deadly, safety in numbers. We instinctively try to belong to a group. However hunting-gatherer groups needed to stay mobile, so until advent of agriculture no large settlements occurred. When looked at from this angle, secret language is just a sign of belonging to a particular `clan` in the jungle of larger society.

So to summarize one of the reasons people develop secret tongues is to establish identity of the clan. And one of the reasons people establish clans is because we evolutionary predisposed to. This is observed quite distinctly in aggressive/highly competitive environments such as prisons/schools/gangs.

</comment><comment><USER3> When I was in Syria a few years ago we would have to talk in elaborate metaphors when discussing anything political (especially if it was in a negative tone). I suspect other HNers who have lived in closed states understand all too well how pervasive secret languages are in certain environments.

Surpsingly enough, ive noticed myself begining to rehash certain behaviours when talking to people in America or Europe because of an innate sense that the conversation is not private anything I say could be misconstrued under the appropriate conditions.

Its a real shame too because these environments which force us to calculate what we say often stifle innovation and creativity to the detriment of society.</comment>


Cyberspace: doomed to become a "vaster wasteland"? - <AUTHOR> http://www.sfgate.com/cgi-bin/blogs/saffo/detail?entry_id=38565

<comment><USER2> I thought it was news media that was becoming largely irrelevant for being hopelessly out of touch with modern media trends. I mean, hasn't TV been getting better, not worse in the last 20 years?

<comment><AUTHOR> Agreed.</comment></comment>


Crypto Mining Can Bring in Billions in Taxes for Russia - <AUTHOR> https://www.btcwires.com/c-buzz/crypto-mining-can-bring-in-billions-in-taxes-for-russia/ <comment><USER2> i dont think they understand mining</comment>


How I Develop Things and Why - <AUTHOR> http://www.kennethreitz.com/how-i-develop-things-and-why.html <comment><USER3> > Before I start writing a single line of code, I write the README and fill it > with usage examples. I pretend that the module I want to build is already > written and available, and I write some code with it.

I write the same way. It forces you to think of how intuitive and natural your code _should_ be. I've run into so much code that makes me wonder, "did they even consider how someone will want to use this?" Software should resonate with how people expect to use it, coming in with little-to-no understanding of the actual implementation.

<comment><USER4> This is very important, but he's making a deeper point, that the README ties it to the problem it solves. It's possible to make a beautiful, intuitive, natural solution that nobody needs (not even yourself). From the user to the code, it goes:

      problem -> usability -> code

Although intriguingly, pure mathematicians create solutions for their own sake (without reference to a problem), and it sometimes (often?) turns out to have practical application anyway e.g. <http://en.wikipedia.org/wiki/G._H._Hardy#Pure_mathematics>

BTW: I just noticed you can resize the reply textarea by dragging the bottom right corner. There doesn't seem to be any JS or CSS in the HN source to do this, so I guess it must be in Firefox 9; google says chromium has it too. Seems about 1.5 years old :(

<comment><USER5> Pure mathematicians are always motivated by a problem, even if it isn't a "real world" problem.

<comment><USER4> So might they too fall prey to the same issue, of losing sight of the problem they are solving?

i.e. that the equivalent of a README would also help pure mathematicians? I guess that would be a statement of the problem: a formal definition of assumptions, and the outcome (if possible). Though I think getting to that point would be where most of the work is.

</comment></comment></comment></comment><comment><USER6> I've started following this rule for all of my personal projects. However, many of us find it difficult to apply this rule to the software we write on the job. Most of the projects we work on aren't for us. They are for customers with vastly different needs. When you are creating that type of product, I don't think this rule really applies.

<comment><USER7> Writing use cases and thinking about how the user is going to interact with your system is a very large part of creating correct and defect free software. Besides the obvious "will the user get it" it has a huge benefit when it comes time to design of your test suite.

Consider an imperative programming language where you can have null values. A null value most often means that some piece of data is optional or not required for operation. One example of this could be a form field for users to enter their real names. If you're making a social site ala reddit or something else you might want to make real names optional. Hence when someone fetches the real name field or passes it as an argument to another method it could be null.

Designing the use cases will help you because when it comes time to write the implementation and test cases you have a concrete understanding of why the value is null. If your program is sufficiently complex this real name field may end up being passed around to several seemingly unrelated modules. Having the use cases drawn up prior to implementation will help you quickly diagnose those crashes or null pointer exceptions and more generally answering the question "Why is this value null?"

Edit: Ineligibility ++

<comment><USER8> Or obviate all of the potential downfalls with null by simply sticking "anonymous" in the name field.

</comment></comment></comment><comment><USER9> Nailed it. I've been very guilty of writing applications and APIs strictly oriented towards my own understanding. Also, I like how you throw a jab at all the BS metrics companies use to try and come up with a useless startup they can flip. ;)

</comment><comment><USER10> It's always great to be reminded to step away and remember why we do what we do, it can easily be lost in the complexity of problem solving. Nice article.

</comment><comment><USER11> This is basically customer testing, except treating yourself like the customer. This can be a good starting point, but is also dangerous for a multitude of reasons you already know and I won't reiterate. It's a good way to get started thinking about your solution, but does not replace talking to real customers whose problems you're trying to solve.

</comment><comment><USER12> There are lots of ways of doing things, and more than a few of them are sensible. Without zeroing in on a specific well-defined problem, you usually won't have any hope of identifying anything like 'optimal' solutions - <USER2> alone _uniquely_ optimal solutions.

"user in mind" and "have a real problem" and "get things done" and "responsive design" and "designed for Humans" and "make it happen" and "never compromise the API" are vague platitudes which don't even provide interpretable advice, let alone specific usable information.

It can be slightly obnoxious when a battle-hardened grayhair begins to hold forth on vague general principles in this way - it can still be productive to listen insofar as knowledge is being shared. What information is being shared here, and what experience or reasoning is there to ground it as knowledge?

</comment><comment><USER13> I'm not sure if this principle is a good one for starting a business. Many of us aren't exposed to meaningful problems outside of coding, using the internet, etc.

<comment><USER14> _> Many of us aren't exposed to meaningful problems outside of coding, using the internet, etc._

Are you certain? Unless you live at home 24/7, you're interacting with the world every day. If you're like me, you regularly run into situations that are "sub-optimal" in terms of how much hassle you have to deal with to get things done.

I think the key is to stop thinking that meaning problems only exist in the realm of computers. In fact, _most_ of the meaningful problems in our world are outside of the realm of software precisely because no-one has looked at the problem and thought "hey, software could make this easier".

An example we're all painfully aware of: medical records. There's a TON of paper involved, little co-ordination between doctors, the list goes on. People are working on the problem, but the revolution hasn't arrived yet.

A different way of putting it comes from Paul Graham: "don't think that you're trying to start a startup, instead think that you're trying to solve a problem".

<comment><USER13> Well, ok, let's talk about medical records. Not many people have the expertise/knowledge to tackle that issue (they can acquire it). They're not around doctors, and healthcare to experience the pain point and understanding the nuances of tackling that problem.

On the other hand, based on our daily interactions, we're more predisposed to making a better Javascript framework, developer tools, better ways of managing our social contacts, etc.

</comment></comment></comment><comment><USER5> I didn't understand the responsive design analogy. I assume it's not the operating system that the developer responds to, so what is it?

<comment><USER15> The problem.

<comment><USER5> I don't think the analogy from web design carries over, then, does it? You're not using the word "responsive" with the same connotation.

</comment></comment></comment><comment><USER16> Sell first. Build later.

<comment><USER17> ^^^^^^^ This. It is so important to be a great idea salesperson. Even if you are writing a OSS tool, if you want contributors you need to sell the idea.</comment></comment>


Ask HN: Have you used or wrote custom software for use within your friend group? - <AUTHOR> I am an active member in a number of overlapping friend groups. Some as small as 3 best friends, others are 10ish people we go on holidays with.
I was thinking has anyone set up or even better wrote software/ systems where the use case is private usage by a group of friends?
I have had two ideas, but looking for stories and inspiration.
My first is a holiday planner that we can fully customise to our process of planning a holiday, this would save links  and discussions all over WhatsApp/discord/ google sheets/ you name it.
The second is a private photo server we can run. Have tools that help migrate photos onto our servers and have a convenient way to tag them (people, event etc) in a few sittings. Then have a nice ui with a filter for those tags.
What do you guys think? <comment><USER2> I've never gone as far as what I would consider "writing software". Whenever I've seen something software would easily solve, it's been easy to hack together with some off-the-shelf tools. Several times I've set up Google Forms (or just had everyone edit a spreadsheet directly) to collect input and then sent the CSV to a little Python script that solved some problem.

Probably my favorite was when my parents decided to pre-bequeath a bunch of their books, movies, and other items they thought their children would like to keep and weren't worth selling. I had everyone enter their prioritized preferences on hundreds of items, and implemented a little algorithm to give people their first preference, with preference towards people that desired fewer things. Saved my parents a lot of overhead and everyone was happy with the result.

</comment><comment><USER3> Edit: First of all - great idea!

At a time when I was incredibly frustrating with our time sheets system at work I started working on a new one. I never got anyone to test it out and it was never finished, but I gutted it and reused the login parts to create a system that friends of mine and I used to sign up for shared tasks.

Then I began realizing how amazingly unsecure it was (cheap hosting, no code reviews, slow patching - at that point I had way too much on my plate). I was almost begging them to replace it with something supported.

It was great fun to create something that was used regularly over time by more than 100 users but (edit: given the circumstances) also a great relief to get it away.

Today I'm also wishing to create a photo sharing solution. I'll probably try to make it on Google Cloud or Azure this time.</comment>


YC Partners Taggar, Tan And Ohanian Raise $39M For Initialized Capital - <AUTHOR> http://techcrunch.com/2013/08/01/initialized-capital-39m/ <comment><USER2> So, there's Chris Sacca's 'LOWERCASE Capital' and now 'Initialized Capital'.

Can 'ALL CAPITAL', 'MiXeD Capital', 'trailinG capitaL', and 'CamelCase CapitalPartners' be far behind?

<comment><USER3> Alexis already runs Das Kapital Capital ;P

[http://daskapitalcapital.com/](http://daskapitalcapital.com/)

<comment><USER4> File under "irony abuse" next to the Rattling Stick advertising agency: [http://www.rattlingstick.com/](http://www.rattlingstick.com/)

</comment></comment></comment><comment><USER5> Anyone have an idea how big the pool of institutional investors are? Everytime I read one of these funding announcements I feel like its the same couple hundred instituons giving their money to bunch of different funds...that end up investing in mostly the same companies.

<comment><USER6> I think you're asking about Limited Partners (institutional investors tends to refer to larger VCs, like Sequoia, accel, or a16z).

Off the top of my head, I'd guess around 15,000, such as endowments, trusts, rich families. Basically, anyone with a few hundred million dollars to invest.

I believe that getting into the top VC funds is very competitive and difficult, which implies to me that it's not the same LPs spreading it around. However, there are also funds of funds, which spread tens of billions from 10-20ish LPs across a range investment funds, and they would typically invest in a number of VCs.

</comment></comment><comment><USER7> Alexis is exceptional at giving advice around branding, marketing and brand awareness, Garry is an amazing designer and Harj is really good at strategizing. In addition, all three have vast experience as successful entrepreneurs and YC partners. They are also very well connected in the valley. Any founder would be extremely happy to have them on board. I see bright future for the fund.

</comment><comment><USER8>
      "YC Partners Garry Tan and Harj Taggar along with the early-stage firm's "Ambassador to the East" and Reddit co-founder Alexis Ohanian have raised $39 million for a separate fund called Initialized Capital, according to an SEC filing today.
      ...Taggar, who recently went part-time at Y Combinator, was not involved in raising this fund."

Am I the only one confused by this wording?

<comment><USER9> Harj is traveling right now. She means that only Garry and Alexis raised the money, but all three of them will invest it.

<comment><USER10> I'm with you. It's a confusing statement. Why include it?

<comment><USER11> To show that he wasn't fooling around with side projects when he was still full time at YCombinator?

The journalist wouldn't have put it had it not been emphasized by his sources. And if they brought it up it's likely because Harj giving less attention to YC is a sensitive topic for the other partners at the firm.

</comment></comment></comment></comment><comment><USER12> This makes sense; YC is all about paying a pittance to a huge number of people without experience or connections, and from that farm team a very small set of promising candidates emerge. Investing in that set would likely be reasonably profitable, especially as YC has already conditioned the founders to accept low valuations even though they are now in a much more exclusive pool.

<comment><USER13> _especially as YC has already conditioned the founders to accept low valuations even though they are now in a much more exclusive pool._

Actually YC startups are conditioned (by the market) to expect higher valuations post-YC than they would attract had they not been through YC.

However YC encourages founders to care more about the value offered by investor than the valuation. At the same time, PG points out that the smartest investors double down on the best companies, no matter the valuation.

The main benefit of this fund for both the investors and the founders is that they'll be talking the same language and will be able to get deals closed quickly.

</comment></comment><comment><USER14> I wonder if they will invest in some companies who apply for YC but do not end up getting in.

<comment><USER15> Why don't they just do A-rounds for YC companies? Wouldn't that be the most obvious, and potentially profitable, play?

<comment><USER16> $39M sounds very low for a fund that wants to do A-rounds. They'd be out of money after about 5 companies.

<comment><USER17> While the term "A-round" has a changing meaning that has been especially fluid over the last couple years, two responses to your point: first, 4MM is (as an example) a perfectly respectable A round, and 39MM would buy 8-9 of those --- which is also a perfectly respectable number of companies for a small fund portfolio; second, full-on "institutional" lettered rounds are often syndicated, and usually want primarily for a fund to lead the round, so perhaps their play is to lead a bunch of syndicated rounds to help catalyze funding for companies.

<comment><USER18> 8-9 companies would turn it into a highly speculative fund, given the expected distribution of returns for typical startups. I would expect a 39M fund to invest in "seed stage" companies, in chunks of 100k to 1M tops. I'd expect them to aim to have between 50 and 100 investments when the fund is fully deployed.

<comment><USER17> Yep, this makes sense. Still, it's enough cash for them to be involved in or even lead syndicated rounds. Either way: seems like a fun thing to be a part of.

<comment><USER19> an amazing convergence of talent to say the least

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> $39m makes it an average-sized microVC/super-angel fund, likely to focus on seed investments in the $100k-400k range as part of a syndicated round.

For comparison, you have a host of small funds like Data Collective ($10m) and Crunchfund ($20), some mid-size seed investors like 500 startups ($30m) and SV Angel ($40m), and larger seed investors like OATV ($85m), Harrison Metal ($85m?) and Baseline ($100m).

</comment><comment><USER20> Cool.

Curiously, the simple homepage has an excessively cluttered source code.

[http://www.initialized.co/](http://www.initialized.co/)

<comment><USER15> Weebly always looks like that.

I was using Heap Analytics on a Weebly site and didn't understand any of the variable names at first. They're definitely using naming conventions in the source that make it easier for them to manage (as opposed to optimizing for users).

</comment></comment><comment><USER21> Will this make them the go to firm for YC companies looking to raise?

</comment><comment><USER19> Hell yeah :)</comment>