The Age of Nvidia - <AUTHOR> http://www.alexstjohn.com/WP/2017/06/10/the-age-of-nvidia/ <comment><USER2> > "The growing body of Big-data, HPC, and especially machine learning > applications don't need Windows and don't perform on X86. So 2017 is the > year Nvidia slips its leash and breaks free to become a genuinely viable > competitive alternative to x86 based enterprise computing in valuable new > markets that are unsuited to x86 based solutions."

Google's TPU paper [0] showed the CPUs were relatively competitive in the machine learning space (within 2x of a K80). It's not true that x86 doesn't perform on these workloads.

The existence of the TPU itself threatens Nvidia's dominance in the ML processor space. Google built an ASIC in a short time period that more than rivals a GPU on these tasks. The TPU performance improvements (section 7) make it look very straightforward to get even better performance with a few more years of development effort. With developers moving to higher level libraries, migration between GPU/CPU/TPU becomes painless, so they'll just go with whatever has the lowest TCO. (Google hosted TPUs?)

Aside from machine learning tasks, the author seems to be advocating for the cpu/gpu combinations that AMD is already selling to game console manufacturers. Granted, Nvidia has a piece of this via the Switch. If Microsoft/Qualcomm goes full-on with their ARM-based x86 emulation, then perhaps a future ARM-based Xbox is in the cards driven by an Nvidia chip? /speculation

[0] [https://arxiv.org/abs/1704.04760](https://arxiv.org/abs/1704.04760)

</comment><comment><USER3> I always thought Microsoft keeping dominance via video game and directx was their main drive to keep Linux out. Didn't realize directx was their move to fight against Intel.

The unintentional effect of this was GPU manufacturer florish, which is something I didn't know either.

The two big monopoly fighting against each other is super interesting. Also highlight the fact that we do need some diversity and competition in these segment.

Rooting for AMD on the GPU front to give Cuda a good challenge and also on the Intel front for their CPU.

<comment><USER4> > and directx was their main drive to keep Linux out

OS/2 Warp could have been a target, but Linux was nowhere near a threat to Microsoft when they came up with DirectX...

</comment></comment><comment><USER5> > Intel keeps the PCIe bus slow and limits the number of IO lanes that an > Intel CPU supports thus ensuring that GPU's are always dependent on an Intel > CPU to serve their workload

I was looking into building a multi-GPU machine for ML and was very confused as to why the latest Intel CPU has less PCIe lanes than the previous one, it didn't made any sense to me. Those sneaky Intel bastards...

<comment><USER6> They want you to buy the expensive Xeons, or higher end i7s to get the proper amount of PCI lanes.

</comment></comment><comment><USER7> Cached: [http://webcache.googleusercontent.com/search?q=cache:JDuUy_X...](http://webcache.googleusercontent.com/search?q=cache:JDuUy_X4iUcJ:www.alexstjohn.com/WP/2017/06/10/the- age-of-nvidia/)

</comment><comment><USER8> Uh... GPUs and CPUs fill very different niches.

GPUs aren't going to _replace_ CPUs any time soon because GPUs aren't capable nor designed for general-purpose processing. It's a fundamentally REALLY HARD problem to use GPUs to speed up any arbitrary computations (solve it and you'll be a shoo-in for the Turing Award).

Businesses aren't going to be "moving" to GPUs. The "age of NVIDIA" is primarily predicated on its role in accelerating training the machine learning algorithms hyped up as "deep learning."

And AMD still very much has an uphill battle on both the CPU and the GPU fronts.

But yes, the excitement around Intel that used to be there is now gone. You can probably blame the "death of the PC" \-- we teach kids coding in the Bay Area, and every single kid has an iPad tablet, but not a laptop. Sure professional engineers like us still have x86 laptops, but the average person does not.

<comment><USER9> It's not just about accelerating ML, specifically deep learning. There are many other enterprise technologies that can benefit from GPUs. One example: OLAP-focused databases (such as MapD - [https://www.mapd.com/](https://www.mapd.com/)). For some benchmarks, check out this blog: [http://tech.marksblogg.com/benchmarks.html](http://tech.marksblogg.com/benchmarks.html).

The DL "training" use-case is well-known at this point, but there are many others which are emerging.

<comment><USER10> A GPU database isn't that useful, because the arithmetic intensity (ops/byte) is relatively low. Cross-sectional memory bandwidth is what really matters; you can get similar effects with a cluster of CPU machines provisioned appropriately, with a shard or a replica of the database on each CPU machine. I say this as someone who has written a GPU in-memory database of sorts that is used at Facebook (Faiss), but what is interesting if you can tie that to something that has higher arithmetic intensity before or after the database lookup on the GPU.

GPUs are only really being used for machine learning due to the sequential dependence of SGD and the relatively high arithmetic intensity (flops/byte) of convolutions or certain GEMMs. The faster you can take a gradient descent step means the faster wall clock time to converge, and you would lose by limiting memory reuse (for conv/GEMM) or on communication overhead or latency if you attempt to split a single computation between multiple nodes. The Volta "tensor cores" (fp16 units) make the GPU less arithmetic bound for operations such as convolution that require a GEMM-like operation, but the fact that the memory bandwidth did not increase by a similar factor means that Volta is fairly unbalanced.

The point about Intel not increasing their headline performance by as much as GPUs is also misleading. Intel CPUs are very good at branchy codes and are latency optimized, not throughput optimized (as far as a general purpose computer can be). Not everything we want to do, even in deep learning, will necessarily run well on a throughput-optimized machine.

<comment><USER6> Actually, in columnar databases the ops/byte intensity is significantly greater, and the GPU helps here.

If you think about how a database CAN be built, instead of how they were built until now, you will find that there are very interesting ideas that can and do make use of the GPU.

The research into these has been around since 2006, with a lot of interesting papers published around 2008-2010. There are also at least 5 different GPU databases around, each with their own aspects and suitable use-cases [1]...

[1] [https://hackernoon.com/which-gpu-database-is-right-for- me-6c...](https://hackernoon.com/which-gpu-database-is-right-for- me-6ceef6a17505)

</comment></comment></comment></comment><comment><USER11> I've always found Alex St. John to be a blow-hard, having read his articles dating back to Boot (Maximum PC). No to mention the fact that he creates malware like WildTangent.

</comment><comment><USER12> In the DirectX comments, I'm struck by how interesting the strategic development of Intel and Microsoft is.

I'd never thought about it before, but there aren't many industries that could instantly (2-4 years) be killed solely by technical development.

If Intel had developed an OS-independent abstraction layer for devices, if Microsoft had pushed harder on ISA-independent programs, etc, how would today look?

<comment><USER13> Oh, Intel was certainly a contributor to Linux and Microsoft flirted with having Windows run on other hardware. But backwards compatibility prevented either from commoditizing their complement on the desktop.

<comment><USER14> FYI, Microsoft now has an emulator to run x86 programs on ARM. This is for future laptops/tablet products.

</comment></comment></comment><comment><USER6> One of the things Nvidia excels at, and has done very well in is supplying the right ecosystem for writing performant GPU code. This really pushed the adoption of GPUs forward.

Writing good, fast, high performance code for many x86 nodes is still quite difficult. Nvidia's CUDA stack including Thrust, CUB, cuBLAS and other libraries really made it easy to write parallel code, without thinking too much about the lower level operations.

</comment><comment><USER15> This post doesn't mention the strategic dilemma Intel has with GPUs. GPUs are fast because they have fast local memory, the core count is secondary, and some Intel chips have 22x16 vector processing elements clocked 2x higher than NVIDIA ( around 3k CUDA core equivalent ).

Why doesn't Intel make a fast local memory GPU style device. Well, they did (Xeon Phi) but if they give it a reasonable price point it would cannibalize their existing x86 market, which is more than the GPU market.

</comment><comment><USER16> His main idea is that x86 will decline in GPU host roles because Intel is deliberately limiting PCIe bus width, but then he shows AMD (another manufacturer of x86 chips) which has no such interest, delivering what he's asking for basically right now.

He also seems to think that NVIDIA will be the sole winner, but if you think about it, AMD seems much better positioned. They manufacture chips which implement the most popular server ISA (x86) and on the same process they manufacture GPUs which are objectively more suitable for the tasks that are driving adoption(and starting to be, now that the software is catching up).

So really the situation is not "NVIDIA is killing x86", it's "Discrete GPU vendors are selling more GPUs than fit on Intel's x86 implementation. Which will drive the adoption of systems with lots of bus width."

<comment><USER17> It is, I think he ends with the possibility that with Arm being integrated into the GPU - a new possible world exists with the lack is a lack of Intel. With Linux and Windows Arm ready it could be very interesting the kind of possible system builds. For one having as many pci express lanes (or something completely different). Would be great to see a platform that is more friendly to extracting as much out of it as possible.

<comment><USER16> Wouldn't that be basically exactly the same as integrating the GPU into the CPU? This is something that AMD already does. The question is: _does it have a considerable positive impact on compute workloads?_. It doesn't seem like anyone is clambering for it, so I doubt it matters much. More peripheral bus bandwidth and connectors is probably all that anyone cares about.

</comment></comment></comment><comment><USER18> _Because this is the year that the first generation of self-hosting GPU's are widely available on the market_

Really? Then what's inside of 99% of smartphones and tablets today already? It's not like ARM cores + beefy GPUs is a brand new concept. In fact even the first Raspberry Pi featured such a combination.

Intel plays no role in the smartphones and tablets business already and anyone who doesn't care about x86 compatibility has been free to use whatever non- Intel accelerator in the datacenter / HPC space for years now. Not quite sure what the dramatic thing is that the author is implying has changed.

</comment><comment><USER19> It's a fun article, but it actually drives me to a question: is it possible (by which I mean remotely feasible) to design a user experience from the ground up around a massively parallel system?

Let's say you had some low speed hardware to support a beefy GPU in a case, could a manageable operating system be built that wouldn't spend all of it's time in IO-wait? I like the idea and challenge in designing this way, but I don't see a way forward that doesn't just fall back on the architecture of core computational unit with specialized auxiliary units quite rapidly.

</comment><comment><USER20> Knowing this, what should a developer learn if they want to get a job in the brave new non-wintel world? ARM? CUDA?

<comment><USER21> Most of developers are not working with code that requires top-notch computer power; I don't think that Nvidia/Intel rivalry will affect the market for people who know JS, CSS and HTML to a significant degree.

But generally speaking, learning Caffe, Tensorflow and math in general sounds like a much more important investment than low-level libraries for specific hardware.

<comment><USER22> I think this is a good point. One other thing I would like to emphasize, after having worked only a little while professionally, is that its not as important what specific architecture you choose while learning, except that maybe you will write code faster and already know many of the nuances. There are so many resources available to learn any architecture now, that the best advice would be to pick a reasonable one and just learn it; with that experience, one can then move with confidence between architectures.

</comment></comment></comment><comment><USER23> What struck me most was the part about another giant corporation abusing its monopoly position to screw a competitor, at the of the expense of the customer.

<comment><USER24> An intelligent market will always fall victim to a tragedy of the commons scenario. Consumers will take the quick buck and let someone else worry about the collective future impact.

</comment></comment><comment><USER25> I had wondered whether Microsoft and Intel were more a fraternity or an uneasy alliance. This article gives hard details about how they have always been forging sabers to cut each other's throats whenever the time was ripe.

It also woke me up to Intel's hardware throttling, starving the graphics unit of enough busses. I had been in awe of PCIe's bandwidth, but now I know it could be so much more. It reminds me that if you focus on microspecs doubling every few years, you think there's breathtaking progress. But if you take a step back at the overall result, computing is moving much more slowly. For example, it seems like the average laptop has always had 6-9 hours of battery life.

</comment><comment><USER26> The youtube of "NVidia GTC 2017 conference" is worth a look.

<comment><USER27> For a moment they made me feel like it was 2007 again and I was watching an Apple keynote. I didn't expect to have that feeling again from any company.

<comment><USER26> Elon Musk was at the 2015 conf, so you might like that too.

</comment></comment></comment><comment><USER28> One disagreement i have with this otherwise great piece is that the future may very well end up becoming MIMT/D. MIMD is a more flexible programming model than the lockstep SIMT of GPGPU and examples like the Rex Neo, Adapteva Epiphany and OpenPiton show that efficiency often supersedes GPUs.

<comment><USER29> SIMT is inherently more power efficient than MIMD. Less control flow logic/flop. Even then, it makes sense to devote dedicated logic for specific algorithms. Even NVIDIA GPUs (Volta) are going to have special matrix multiply hardware (tensor cores) to increase power efficiency and performance.

The future lies not in flexible programming model but dedicated hardware/IP. Look at the crypto block, ISP, h264/265 encoding/decoding, and now tensor cores. It's mentioned in what seems like every architecture paper in the last ten years, but dark silicon is driving the need to differentiate compute into smaller blocks. We can pack more and more transistors into a chip, but we can only power a smaller and smaller section of it at any given time. It only makes sense that we make whatever that can be powered on be as efficient as possible.

<comment><USER28> In theory yes, but clean restarts like the Adapteva Epiphany and the Rex Neo can get better efficiency than GPUs because they don't suffer from legacy issues while still running legacy OpenCL code.

As for the matrix multiplier ASICs like the tpu and Volta, I consider them to be incredibly uncreative and an insult of sorts to computer architecture to call that a "deep learning processor". What happens when tomorrow SPNs or graph ConvNets dominate? A proper application specific processor will be able to adapt and still maintain efficiency.

Obviously i have some bias and hubris here, but our simulations show consistently superior efficiency to the tpu while running the same workloads while still retaining the ability to adapt to other computational graphs that TensorFlow may choose to run.

</comment></comment></comment><comment><USER30> The article's thesis, "Well it appears that the GPU era of computing is finally here! Intel is in deep trouble," has an implicit assumption that Intel's future mostly depends on processing power. Is that really the case?

</comment><comment><USER31> Even with NVDA's recent rally, INTC is still very close to double NVDA's size ($168bn vs $88bn market cap). The point being, the author's statement that the x86 party is over seems a bit far off at the moment...

</comment><comment><USER32> All of this did give me some insight into why I see ARM-based Windows servers in Azure.

</comment><comment><USER33> " 2017, the year GPU's finally begin to permanently displace the venerated x86 based CPU"

he never specifies what he means by displace exactly, and follows up with vacuous statements like "x86 party ends in 2017". The entire thing sounds like trying to manufacture a momentous event out of a gradual shift of market profits and priorities over time. Best you could hope for is to state that Intel has failed to take a significant market in high end throughput computing (ie. desktop and HPC GPUs), but its doing quite well with integrated GPUs.

Don't forget this is the same visionary that wrote the game industry playbook on how to hire and exploit developers: [https://www.kotaku.com.au/2016/04/alex-st-johns-ideas- about-...](https://www.kotaku.com.au/2016/04/alex-st-johns-ideas-about-game- development-are-terrifying/)

<comment><USER34> It's very wordy and takes a lot of reading, but he does have a pretty solid point. 1) He is talking about enterprise computing, and makes that clear with: " Up until now Intel has held a dominant monopoly over Enterprise computing for many years, successfully fending off all challengers to their supremacy in the Enterprise computing space. This dominance is ending this year and the market sees it coming. " So integrated graphics like you mention is irrelevant.

Then at the end he lists why he thinks that with links: Softbank bought ARM and funded NVIDIA, who announced an ARM & NVIDIA integrated enterprise computing product. IBM is supporting NVIDIA with a POWER and NVIDIA integrated enterprise computing product, and AMD is supporting NVIDIA in Ryzen by providing lots of PCIe bandwidth to the graphics card to support compute tasks.

<comment><USER35> Except AMD own ATI which is their own GPU brand. So no, they're doing that because they want to move GPUs and they'll want those GPUs to be AMD ones.

<comment><USER36> Also, it is a bit of a niche, but AMD's single precision compute is typically better than NVIDIA's (spFLOP/$ both capital and operational).

<comment><USER37> By single precision, do you mean 32-bit floating-point computation?

Probably not but, if so, isn't that what both computer gaming and deep learning need the most?

<comment><USER38> Yes, at least for gaming. (Don't know about DNN.) Single-precision is the only kind that GPUs supported until CUDA happened.

Around 2011, I got my feet wet in CUDA and tried to calculate quantum waveforms (using a method that is mostly matrix multiplications and FFTs). I eventually went back to doing stuff on the CPU because GPU memory was too small in the systems that I had access to (256 MB), which restricted me to one job at a time, whereas the CPU (a contemporary i7) had enough cores and memory to do 4 jobs in parallel. And I needed double precision, which the GPU could only execute at a tenth the speed of a single-precision job. Also, with the GPU, I was restricted to running jobs during the night since those systems were desktops that were also used for classes. Whenever one of my calculations ran, it would occupy the GPU completely, this rendering the graphical login unusable.

I reckon that the situation would look much more favorably for the GPU today, esp. because of the larger memory sizes and because double-precision speed has caught up. But yeah, the most common uses need only single-precision.

<comment><USER39> GeForce 5xx series came out in 2010 ([https://en.wikipedia.org/wiki/GeForce_500_series](https://en.wikipedia.org/wiki/GeForce_500_series)) and NONE of them had less than 1GB of memory. Idk what GPU you used, but it was old technology at that point.

<comment><USER38> Probably. Whoever bought those machines probably didn't realize that GPU performance was quickly becoming a relevant metric for scientific computation.</comment></comment></comment></comment></comment></comment></comment></comment>


Survival following mechanical ventilation for acute respiratory failure - <AUTHOR> https://www.ncbi.nlm.nih.gov/pubmed/8404197 <comment><AUTHOR> " mean survival rates were calculated to be 62 percent to ventilator weaning, 46 percent to ICU discharge, 43 percent to hospital discharge, and 30 percent to 1 year after discharge "

Based on a five year study of men put on ventilators after acute respiratory failure. 62% survived the ventilator, but only 43% made it out of the hospital and only 30% survived one year.

Age, cause of respiratory failure and length of time on the ventilator were the specific influences on the outcome</comment>


Just Connect it Already - How To Node - <AUTHOR> http://howtonode.org/connect-it <comment><USER2> For another middleware solution that's been around for more than a year, is modeled after Rack and WSGI, and follows the JSGI specification (which I believe is part of the CommonJS spec), be sure to check out tlrobinson's Jack - <http://github.com/tlrobinson/jack> . You can use Jack with Node by using node-jsgi (<http://github.com/kriszyp/jsgi-node>).</comment>


Why Companies Have Stopped Outsourcing IT - <AUTHOR> http://blogs.wsj.com/experts/2015/10/14/why-companies-have-stopped-outsourcing-it/ <comment><USER3> I wish I had the link, but I remember reading an article years ago (maybe 7 or 8 years ago?) titled (roughly) "Don't outsource your software development", focusing mainly on Walmart. The article described a project at Walmart where they had their software developers actually go to stores and work the cash registers for a while to develop the kind of empathy and understanding of a job to design a good system.

While Walmart labor practices definitely get a bad rap (not necessarily undeserved), I found this story very encouraging. It's kind of ironic, but having developers work the cash registers actually suggests that these developers have a very high status in the business - they are not viewed as glorified typists, or even as technically talented but limited people where it comes to business. They are viewed as people who need to understand business processes deeply and who have the autonomy and authority to act on that understanding. And from what I understand, Walmart did rise to prominence at least in part on the effectiveness of its IT systems (which enabled more efficient supply chains, in particular).

This was a long time ago (and the WSJ article certainly acknowledges that some companies have been aware of this for a long time). Personally, it took me a long time to understand how software outsourcing could ever be anything other than a disaster, and I slowly came to realize that this is because I worked in the jobs that hadn't been outsourced, that required a lot of business context.

Even then, it's been pretty clear to me at times that decision makers higher up on the org chart really don't understand what I do. Or, more cynically, you could say they absolutely do understand it, but are aware that it would take a few years for the hidden costs of their decision to catch up with them, by which point they've made their numbers and can use it to move up another rung (ie., if a highly competent software developer who truly understands the business has built robust, well documented, well tested systems, that person could be replaced with someone more limited in ability and business understanding, and it could actually be a few years before critical systems no longer effectively support the business).

</comment><comment><USER4> There's outsourcing and there's outsourcing. There may be fewer companies trying to build internal applications using contractors on another continent, but it seems like more companies are getting rid of data center operations in favor of services like AWS.

<comment><USER5> > more companies are getting rid of data center operations in favor of > services like AWS.

That's not really outsourcing. That's shifting from capital expenses to operating expenses which has tax and cash flow advantages.

<comment><USER6> Smaller companies doing this (and possibly some big ones) are essentially outsourcing "Ops" by using "cloud" providers.

The number of people that think somehow using AWS means you no longer need Ops staff is amazing. In a bad way. How often does "we can't afford our own Ops so we use AWS/Azure/etc" come up as a reason to accept the associated vendor lock in with a given provider?

<comment><USER7> there are ops and there are ops... are you speaking to ops regarding managing the hardware itself, or ops re the applications you are running on the hardware? Cloud definitely doesn't remove the latter. Unless your company runs on just a database with no app code.

<comment><USER6> > Cloud definitely doesn't remove the latter.

Many would disagree with you, and run their business as if that is the case.

I'm not saying they are right, I'm saying thats the reality of how a number of decision makers act.

</comment></comment></comment></comment></comment><comment><USER8> Why outsource when you can insource instead? Thanks to lobbying both parties support ever increasing numbers of H-1B visas. You can even get the departing developers to train their replacements ;<(.

[http://www.nytimes.com/2015/06/04/us/last-task-after- layoff-...](http://www.nytimes.com/2015/06/04/us/last-task-after-layoff-at- disney-train-foreign-replacements.html?_r=0)

[http://www.computerworld.com/article/2879083/southern- califo...](http://www.computerworld.com/article/2879083/southern-california- edison-it-workers-beyond-furious-over-h-1b-replacements.html)

<comment><USER9> I don't know if you're trolling, but in this case H-1Bs are being used to outsource: large consulting companies obtain H-1Bs for their (stereotypically Indian) employees, bring the employees into the US for 3-6 months to learn how to do the job, then send them back to India, from where they complete the job remotely, and where they can of course be paid much less due to the lower prevailing wages/cost of life.

This is a classic outsourcing strategy. Insourcing is the complete opposite, see [https://en.wikipedia.org/wiki/Insourcing](https://en.wikipedia.org/wiki/Insourcing).

</comment></comment><comment><USER10> Actually in my experience (in the EU) they still outsource everything they can, and outsource 90%+ of everything they cannot outsource. And they put a shiny new remedy instance in between to "help".

And then they wonder, when they have to push out new releases/features, why no one got the capacity and why only half of the features work - half the time (returning maybe confidential customer data of _others_ customers, ohh).

But then it's the "moral duty" (management words...) of the remaining "local" teams to work 20/24 7/7 for a month to try to salvage what can be salvaged.

</comment><comment><USER11> Well, here in Europe the outsourcing and off-shoring is still playing catch up with US.

I see no signs of it stopping. :\

<comment><USER12> In Europe, it makes a lot less sense as developer salaries are likely half of that in the US.

Even in western countries like Finland, Denmark, and Austria, mid-level developers and other technically inclined can expect to make 1500-4000euros/month. Compare that to US developer salaries and you can see why.

<comment><USER13> Most of the time there are more employer's contribution in Europe compared to US. Depending on the local law, you have to pay for social healthcare, retirement, jobless benefits... At the end of the day, the difference of cost for the employer is less than the difference in paycheck would make you believe.

<comment><USER14> The numbers he mentioned are gross salaries, not net salaries. The things you mentioned are already paid by the difference (the highest income tax bracket here is 52%). You would expect the gross income to be much higher.

<comment><USER15> And at least some countries adds taxes to the salary that the companies has to pay.

</comment></comment></comment></comment></comment><comment><USER16> Developers are not cost centre. They are wealth creators.

<comment><USER17> For internal systems they are cost centers, since there's no revenue associated with them, even if they create wealth. Don't mix accounting and economics.

<comment><USER18> That seems a bit short-sighted though, no?

Even if you cannot put an accounting profit line with them, they facilitate the profit of the other departments.

<comment><USER19> right, but then so does support - by making sure that your customers are happy and therefore recommend your brand and become repeat customers. so do your cleaners - by making the workplace a tidier building so that your other staff are more productive. every team ultimately is there to "facilitate" another team to work better and make more money.

where do you draw the line?

<comment><USER20> It's hard for cleaners to make a company more competitive and profitable by cleaning harder but it's not hard to see how better software can do so.

<comment><USER21> Elaborating: both better software and better support can be competitive advantages.

Better cleaning, not so much - it's just a cost/requirement of doing business .

Some companies don't consider their software or developers to be sources of competitive advantage, and you should try to avoid those if your goal is to work on cool stuff and have better chances of making more money. Some people do like the challenge of maximizing operational efficiency and might get a good job that way, but it's harder and fraught with politics.

</comment></comment></comment></comment></comment></comment><comment><USER22> That's good news!

I could never image to work for a company that works for companies. Doing good work is rarely honoured or even noticed. And who cares. Good, that even non- tech people start to understand. How long did it take.

<comment><USER23> Some of the very best workplaces are IT contractors. Generally there are limits to hourly invoicing, so the pay ranges are quite limited compared to product companies. Thus, in order to attract top talent the companies simply have to be nice places to work at. Also, hourly invoicing means sane working hours.

Then again, some of the contracting agencies are probably among the worst places, too, employing people with limited choices. Just need to identify the good ones.

<comment><USER22> Good to read that there are good contractors. How do you identify the good ones? Just apply and see?

</comment></comment></comment><comment><USER24> Should be entitled why some companies have stopped outsourcing. From my viewpoint in Europe it's still every managers' preferred route to promotion and a big bonus.

Also, what about the practice of bringing in cheaper labour to undercut the local workforce. This seems to be growing everywhere?

</comment><comment><USER25> _> Software-as-a-service and cloud-based operations mean that companies decreasingly have data centers, so there isn't anything to outsource._

That leaves me scratching my head a little bit. It sounds like he's saying that outsourcing is dead because everything has been outsourced already.

</comment><comment><USER26> Im getting really tiny font. 10px to be exact, for the main article text. Is this just me?

<comment><USER27> It is not just you, the article is completely unreadable for me as well. It's not just small font, it's also the line spacing and paragraph spaces that are off. I had to copy-paste it to a text editor to read.

</comment></comment><comment><USER28> I'm surprised an article like this can be published with zero data - <USER2> outsourcing really on the decline?

<comment><USER29> This is exactly what I wanted to ask. The article only mentions things like "a company did so and so" etc. Other than big companies like Netflix closing down their in house data center operations, which has been in the news lately and companies like Uber running entirely off Salesforce, I've not heard of major decline in IT outsourcing activities.

</comment></comment><comment><USER30> I think it's time to find a new job. Most of the people I work with are outsourced IT or contractors.

</comment><comment><USER31> it feels like management needs to act busy and do something, and therefore there is this current trend of bringing in the outsourced parts.

the technology landscape has changed since the outsourcing was initiated, some gains will be realized and bonuses will be distributed.

</comment><comment><USER32> I still consider using an (ad)-agency for software to be "outsourcing".

Like when taxi companies are outsourcing their iOS applications to agencies while Uber has in-house engineering(?)

<comment><USER6> > Like when taxi companies are outsourcing their iOS applications to agencies

Uber keeps trying to tell us that it's drivers aren't employees, so they're trying to outsource the drivers themselves.

</comment></comment><comment><USER33> So isn't the next step opening branch offices in India, etc ? That way a company can enjoy both world ?

<comment><USER6> The next step for a lot of office-based work should be "accept that remote working is a viable option, and hire staff regardless of where they live".

</comment></comment><comment><USER34> they have NOT stopped</comment>


The Meaning of Cake (180 VR - look down a bit) - <AUTHOR> https://m.youtube.com/watch?v=TCwQweljegc <comment><AUTHOR> In the future, kids might learn about scutoids in geometry class. Lots of ideas get stripped of their context in math classes as if they are all ancient and there was never a time when we didn't have them. But really, a phenomenon will just look like a mess until someone plays around with it to see if there are rules in there that we can understand. If you want to watch this process of a new mathematical idea getting invented right now, check out this video.</comment>


Another heavily-funded AR headset startup is shutting down - <AUTHOR> https://techcrunch.com/2019/09/12/another-high-flying-heavily-funded-ar-headset-startup-is-shutting-down/ <comment><USER3> I was at Daqri from employee ~12 to ~300. It was a wild ride and I've got some really amazing memories with only a bit of scarring to show for it :)

Daqri was really good at recruiting amazing people, and really bad at turning them into a functioning company. Communication between teams (and particularly offices) was really lacking; I remember back when the helmet was built on Android (in LA) and all the vision scientists were working on iOS (in Sunnyvale), they had this amazing world-tracking demo that we just couldn't use.

The Two Trees photonics tech is absolutely amazing, check it out if you get a chance - field programmable holograms. Point the thing at any glass surface and you get a hologram "in" it. Blew my mind the first time I saw it! Dunno if it ever made it into headware.

<comment><USER4> Where do you feel the fault was, wrt communication problems and leadership?

Was it because of incentives being wrong in the company, the wrong people in charge, something else?

<comment><USER3> Senior leadership didn't talk to individual contributors enough. They'd try all sorts of things to set us up for success, but it was generally the wrong thing, or at the wrong time, or the right thing in the wrong way. Re-orgs were really common but really inneffective; I'd find myself on a new team with a new boss and a week later I'd find myself working with the original team and the original boss again, because to do what I needed to do those were the people I needed to work with, not the new team and the new boss. I could generally see what they'd be trying to accomplish with such re-orgs, but not why they thought it would actually accomplish that.

The last re-org I was a part of before I left, our team was dissolved and I was re-assigned to a new boss I'd had a pretty terrible time with in the past to do exactly what I'd been doing on the dissolved team, minus many of the best parts. He was absolutely surprised that I was not excited at this change, and could not answer when I asked what the org change was supposed to fix and/or improve. If they'd actually talked to any of us - including _my_ direct manager at the time - prior to springing the change on us, could've probably gotten us on-board and aligned, but that wasn't a thing that usually happened.

Incentives and having the right people in charge are a structure to facilitate good communication, they are not a surrogate for that communication.

Thanks for the question!

</comment></comment></comment><comment><USER5> The company I work for is trialing AR solutions for remote support purposes. We've tried the glasses and customers hate it because it literally makes them motion sick.

Our current thing is phone/tablet based where you can basically stream real time video to our support staff and each party can draw on the screen, and whatever they draw stays where it is in physical space.

Customers love it, it works great.

Nobody wants dorky glasses that make you sick.

<comment><USER6> > and whatever they draw stays where it is in physical space.

Wow... that's a great way to utilize AR.

<comment><USER7> I've seen demos of this with Hololens. It really opens up new interactions. Neat stuff.

Disclaimer: I work at Microsoft, but not on Hololens. All opinions my own, etc.

<comment><USER3> At Daqri we called this "remote expert", and it was always one of the potential products with the highest demand.

My favorite use-case is that in nuclear power plants, they have two people do everything - one to do, one to watch (not in a big brother sense, but more in like a pair programming sense), but this means two people in an irradiated environment. With the AR tech, the second person can be in another room.

(Although you run into other issues, like no wifi (or power!) inside reactors; although apparently leaky coax is a really effective solution to the first)

<comment><USER8> Were you working with any human factors or related teams in the nuclear industry?

<comment><USER3> A couple of times, although I don't remember / know if it was "human factors" or otherwise. Both cases were primarily about letting someone see something where it was dangerous to be, although the first was about the head-mounted cameras and the second about the head-mounted displays.

</comment></comment></comment></comment></comment></comment><comment><USER9> I spent 3 months working on an AR project on the Magic Leap (the best funded AR startup, I think?). My conclusion was that the hardware just isn't there yet.

VR tech feels impressive because the hardware works well. AR tech, on the other hand, still feels _very_ much like a prototype, and far from real production use. Some of the main deal-breaker issues are heat, discomfort, dizziness, and software instability (I wrote more about the specific issues I encountered with the Magic Leap in a past thread [1]). To me it felt significantly worse than the Oculus Rift Development Kit 2 (the second public release of a VR device back in 2014). Back then when I got that version because I was super hyped for VR, I thought "Woah, clearly needs more work but this is amazing". With AR, my experience thus far has sadly been "Oh, this is it?".

A lot of it is presumably because AR is much harder to do well. A very simplified way of thinking of VR is basically it's a screen close to your face that can track its own pitch/yaw/roll/small amounts of movement and redraw accordingly. This is tricky, but totally doable (and thus, it was done). Smartphones have basically been able to do most of this for years (not so much the movement, but that's also a pretty new thing in VR).

AR actually has to interact with the real world. If you have a virtual image anchored to, say, a pendulum, that's fairly non-trivial computation-wise to recalculate without prior knowledge of the pendulum's movements. It's basically object detection which ML models can do fairly well, but they do it with latency. And when the latency is in something your brain is trying to process as the real world, it's nauseating. Add on the fact that it takes a lot of energy to do inference, and that AR devices need to be standalone devices that can be taken anywhere by themselves, and you also have a serious heat problem where the compute needed to constantly analyze the real world means you just have a hot brick on your head or in your pocket.

I think it's going to take a lot more time to get it right. It feels like a hard enough problem that I think the first truly production-grade AR device will have to come from one of the big companies, possibly Microsoft with HoloLens.

Of course, I write all this with the definition of AR as "something you wear on your head that overlays your full field-of-view with virtual graphics". Other forms of AR like Snapchat filters or camera overlays are probably less challenging.

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

<comment><USER10> I managed to try out Microsoft's HoloLens 2 at MS Build this year in Seattle. My impressions were that it's a very cool, very impressive prototype. FOV is still quite low, although I hear it's significantly improved from v1. Framerate felt too low for real-world stuff; as you were alluding to, our brains are used to screens operating at 60fps, but there's something about putting the screen right up next to your eyeballs and adding tracking (whether VR or AR) that kills that illusion and mandates at least 90fps, and very smooth. I'm not surprised by the reports of people getting motion sick.

Having said that, the fundamental interactions are very cool. I had slight difficulty figuring out where the tracking was actually registering (e.g., how far do I have to move my finger to 'tap' a button), but once I figured that out it worked just like you expected it to.

<comment><USER7> I tried out the original. My impression was that the small FoV _helped_ with motion sickness & immersion. I could see the objects in the room (table, wall, etc.) with infinite frame rate, and when I looked directly at them the augmentation (poster/tv on wall, something on the table) was where I expected it.

I always felt the small FoV was a complaint by those that couldn't see the bigger picture (haha)... at least, for the current-gen tech that has built-in latency, and how the smaller FoV might actually be a benefit.

Anyways, my own thoughts and ramblings (I work at MS, but not on Hololens).

</comment></comment></comment><comment><USER11> The most widespread, successful use case AR which I can see currently is AR Filter i.e. snapchat filters and those who copied it.

The reason IMO, is most of the users who use snapchat filters wouldn't even know what Augmented Reality is. It is that intuitive use case which can make high-tech get widespread consumer adoption.

Looking at the rate at which limited attention, instant gratification apps are conquering market, the demand for AR filters aren't going to decline anytime soon and those who offer AR as a service would have enough buyers in the form of the copy cat apps wanting AR filters.

In fact, snapchat itself supposedly acquired the AR filter tech from a Ukranian company called Looskery in 2015.

<comment><USER12> This isn't a disagreement, but I was thinking the other day that the most widespread practical (non entertainment) AR app has got to be backup cameras and displays in cars.

Modern ones show both the actual live view + a composited on graphic of where your current backup line will take you based on the tire angle, etc.

<comment><USER13> I wouldn't have categorized this as AR, but perhaps you're right. Would this instead be called a "heads up display"? I guess not, since it's not something that's shown on the windows you're looking through.

<comment><USER14> I'd say it's more of a HUD. If there was a 3D render of where walls might be or bumps might be, then I'd consider that AR.

<comment><USER15> But it's the literal opposite of heads-up; you lower your view and stare at the radio to see the camera. If you were looking at the mirror and it was adding to the normal reflection you're already seeing, that would be heads-up.

</comment></comment></comment></comment></comment><comment><USER16> AR seems like one of those things that needs to be executed "perfectly" to work. VR can benefit a bit from suspension of disbelief etc. ...but with AR the real world is harsh :)

 _But I bet we 'll have "the iPhone" of AR doing it right and popping open the market! Someone will sure get lucky betting on it!_

<comment><USER17> Apple has the resources, the install base, and (crucially) the data to make it happen.

The "iPhone of AR" is probably going to be an iPhone.

<comment><USER18> It always seems like incumbents have it all (resources, distribution, talent, etc) until they don't. For ex, the "iPhone" theoretically should have come from Nokia by that logic. AR particularly requires truly novel innovations for it to work in mass-market. There might be niche-cases that work for AR (studio/arcade games, sports tech) before the mass market use-cases.

<comment><USER17> Apple is well documented (for it being a secret project) as throwing tons of resources into compelling AR products.

I'm not saying they're going to succeed, but they're certainly trying - <USER2> Nokia, who was in the middle of a massive internal war over Symbian when the first iPhone hit.

</comment></comment></comment></comment><comment><USER19> It's really important to understand that funding for AR startups cooled off when Apple and Google decided to go hard into it in 2017.

Almost across the board every major VC got spooked, then when Magic Leap turned out to be a turd the bottom fell out.

I firmly believe that Apple and Google successfully took the entirely of the market opportunity for a startup to win the AR game long term.

You could argue why this is good or whatever, but at the end of the day AR isn't going to be the platform a startup could knock FAANG off of their perch, and one or all of them will own the next hardware platform.

</comment><comment><USER20> Can someone explain to me why sufficiently good VR can't function as AR?

Just to lay out my point: AR has to have extremely good detail, framerate, and even depth of field to work well. It has to track everything perfectly and blend the two lightfields seemlessly or the immersion is broken and you risk nausea or at least annoyance.

But if you have high framerate, ability to simulate depth of field, high knowledge of the environment (enough to overlay seemlessly), etc, then couldn't you just... operate purely in VR with reality streamed in via lightfield cameras? That would allow you to do things that are impossible in AR, like display darker overlays on lighter surfaces, and everything would be at the same framerate so it'd be easier to seemlessly integrate everything.

So what does really, really good AR get you that really, really good VR with reality overlay does not? Seems like you can avoid a lot of super hard to effectively impossible hardware optics problems by just doing things with an opaque visor...

I'm not an expert in this field, so I'm probably using terminology incorrectly.

<comment><USER21> With sufficiently good cameras you can already pass through video. Setting up boundaries in the Oculus Quest has you do so doing exactly that.

The current issues are:

* A limited field of view. AR headsets are more limited but don't interfere as much with normal vision.

* Latency of video display causing a noticeable mismatch to head movement.

* Shutting the rest of the world out. No one can see your face properly so it's much more invasive than AR might be.

<comment><USER22> I would like to note that the shortcomings mentioned above can be fixed:

\- a vr passthrough can achieve a much wider FOV than any ar headset.

\- latency isssues are debatable, I would say it's a non-issue

\- eye-tracking and front-facing displays solve gaze opaqueness. we already have cut-out camera holes in consumer grade displays

I would say that THE current issues with passthrough vr is solving the convergence issue. varifocal lenses are not consumer level technology yet.

<comment><USER21> VR pass through can get a wider FOV than an AR display but it still is a lot less wide than natural vision. Which was my point.

Latency issues might be subjective but there are clearly going to be population trends. I imagine these will be very similar to latency trends with VR and as such latency will be a significant issue.

Front facing displays are even weirder than someone with a headset on. I'm confused that anyone thinks sticking a view of someone's eyes on a flat screen is going to be anything other than weird. It's diving head first into the uncanny valley.

</comment></comment></comment></comment><comment><USER23> Part of the magic of VR is the immersion. AR doesn't appeal to me, it seems more of a gimmick.

<comment><USER24> Personally, I feel the exact opposite.

I don't see VR providing a whole lot outside the area of entertainment. How often do you want to be completely removed from the physical world on a regular basis. Even when you do want immersion a good story or a game with good mechanics is far more important in entertainment than the medium it's delivered though. This is the reason people still read books, why retro video games are still played, and why 3D continually fails. A high tech medium, doesn't improve bad entertainment, but great entertainment can be delivered though a low tech medium. I'm not saying VR has no value, but I don't see it being some giant revolution.

On the flip side, AR doesn't provide immersion, but rather enhances the world around you. AR allows pretty much any information you get from your phone or computer currently to be instantly hands free and always available. If I told you I had a pill that allowed you to remember 20% more than you currently do, I can't think of many industries that wouldn't be improved by giving that to every employee. Once headsets become light enough and cheap enough, that's what AR provides. Instant access to relevant information without diverting focus.

VR seems to me like an extension of 3D technology, AR seems like an extension of the smartphone.

<comment><USER25> I'd love it. If I could go to a space where I'm immersed in code, data, paint or sound and could interact with it to create, I'd be all sold on VR. It would provide me with a whole new medium to transfer my thoughts in. But AR? What can I get with it that I can't with a phone? The information speed is near instant to what I need as a human. And what can I get with it that won't be ads?

<comment><USER24> > If I could go to a space where I'm immersed in code, data, paint or sound > and could interact with it to create, I'd be all sold on VR.

I'm not saying that wouldn't be cool, but using coding as an example, how much more immersed are you going to be coding in VR as opposed to going into a quite room where no one will disturb you with multiple monitors. The extra immersion is cool, but I don't being slightly more immersed in the way VR provides will lead to any sort of technological revolution.

> But AR? What can I get with it that I can't with a phone?

It's not about getting new information, it's about not needing the phone to provide that information. Think about a surgeon having the parts of heart overlaid on the body while doing surgery. Think about firefighters having the blueprints of the building they are entering in front of their eyes.

The value of AR isn't providing new information, it provides an alternative to relying on memory for that information.

<comment><USER26> > The extra immersion is cool, but I don't being slightly more immersed in the > way VR provides will lead to any sort of technological revolution.

Well, having access to as many monitors of any size you want without taking up any space in your home or office is a good enough reason for many.

</comment></comment></comment></comment></comment><comment><USER27> I'm suddenly feeling super behind on the news. While I believe I've heard rumors about Apple working on augmented reality, I can't think of any such product announcements coming down the pipeline.

> While Apple and Microsoft strain to sell augmented reality as the next major > computing platform,

Is that accurate? Is Apple putting a lot of effort into selling AR?

<comment><USER28> Well you have the references to some kind of Glass-esque product in Xcode, and ARKit has been a part of iPhones since the X. It's interesting stuff but Apple doesn't seem to be interested in the fully immersive headsets so many other companies are. Microsoft seems to be doing a bit of both? But they aren't super focused on it.

Frankly I think the use of the word "strain" in that quote is a strain itself. They're definitely working on it, and it's there, but I wouldn't call it a feature they expect to shift units.

</comment></comment><comment><USER29> Industrial VR/AR is above the only place it makes sense, and its failing there already. Imagine what thr future holds then for the far less compelling home use situation.

Like many other I would like to be able to keep an eye on my kids and kiss my wife while I watch tv.

I know, how disgustingly human of me, right?

</comment><comment><USER30> Brief mention of Meta in that article. I had missed that they shut down, though I can't say I am surprised. Their first headset was uncomfortable and lacked the field of view or functionality of the Hololens. It was a cabled only experience.

They were secretive and lacked decent SDK support.

When we tried to buy the second one it was delayed again and again by an insistence on US manufacturing and an inability to scale.

When they finally announced that our preorder was available 18 months later they wanted me to create a completely new order since my credit card was no longer valid (I decided not to waste my time or money).

</comment><comment><USER31> Magic Leap next?

<comment><USER32> What have they achieved, has anyone been blown away by them? For me just getting into VR thanks to Oculus Quest which I have to say is an amazing product for the price.

<comment><USER33> I tried their demo at CVPR a few months ago. It was super immersive and crisp. You interact with an AI "guide" who shows you how to look around, pick things up, stick them on the wall, etc. It was surprisingly unnerving to look the AI in the eyes and have her react to my gestures. Beyond a sweet demo, not sure what the value in the product would be for a general consumer option, but cool technology for sure.

<comment><USER34> They have a demo now???

<comment><USER33> Had to wait forever to get a time slot. They do 10-15 minute demos in a temporary room they put up on the expo floor.

</comment></comment></comment></comment></comment><comment><USER35> Solution looking for a problem to solve? I have seen VR demos at SIGGRAPGH and film festivals the past 20 years without seeing the 'killer app' yet.

<comment><USER36> Shhh! There are still fools with too much money looking to invest!

</comment></comment><comment><USER37> Is AR this generations VR? Full of promises and fantasy, but all of which is far from being usable or practical at any mainstream level.

<comment><USER20> Less practical than VR. VR has a niche.

<comment><USER38> It's a very small niche, and it peaked around the 2017 holiday season. The VR game thing didn't sell. Except for Beat Saber.

John Carmack, in a recent talk, doesn't seem to consider VR as a way to visit a virtual environment any more. It's just a way to get a wider field of view of screen space in a mobile-sized package. Watching Netflix with VR goggles emulating a wide screen, for people who don't have enough space for a wide screen, is seen as a primary use.

</comment></comment></comment><comment><USER39> Innovation has always had many victims.</comment>


Minimalism: Practical Guide to Writing Less Code (2002) [pdf] - <AUTHOR> http://www.two-sdg.demon.co.uk/curbralan/papers/jaoo/Minimalism.pdf <comment><USER2> > Consider duplicate code to be a mistake

I partially disagree. Some of the worst code I've seen was an attempt to reduce duplication.

It's easy, especially in UI code, to mistakenly identify duplicate code, and prematurely build a DRY "solution". Premature DRY is the root of much evil.

I try to follow the rule of three before trying to identify duplication. Even then, I've become much more cautious than in my younger days.

<comment><USER3> This "rule of three" seems to be fashionable these days, but I think you'd want "the rule of 2" all the way to "the rule of 10" depending on the size of the duplicated code, how hard it is to abstract, the complexity of the resulting abstraction, the distance between uses and abstraction, etc.

I certainly wouldn't want to wait to 3 if I am copying a block of 10+ lines that requires just a single int parameter to abstract into a function very local to the 2 uses. And I may use "the rule of never" on a 2 liner that requires a callback to abstract.

<comment><USER4> It's a rule of thumb. You don't refactor if and only if three duplicates exist.

</comment></comment></comment><comment><USER5> I vehemently disagree with the idea that returning from a function often is bad and that it should be used "sparingly". I find that code that returns as early as possible is the best. The idea of a nearly mandatory single return point is a very antiquated notion. I'm much more concerned when I see ten levels of indentation for no good reason.

Likewise with continue and break. I think this advice is very bad. All the other recommendations seemed fine.

<comment><USER6> When I can't return early, I find that the && operator, because of its short- circuit evaluation, is extremely useful for writing chains of "everything before must successfully execute" without the labourious series of "if/else ladders" or deep nesting that would otherwise be needed. Compare:

        success = doOneThing()
               && doSecondThing()
               && doThirdThing()
               ...
               && doLastThing();

and the more common "traditional" way:

        success = doOneThing();
        if(success)
        {
            success = doSecondThing();
        }
        if(success)
        {
            success = doThirdThing();
        }
        ...
        if(success)
        {
            success = doLastThing();
        }

<comment><USER7> promise chains do that pretty nicely

        Promise.start()
        .then(doOnething)
        .then(doSecondThing)
        .then(doThirdThing)
        .then(doLastThing)
        .catch(handlesomeerrors)

<comment><USER8> That's because promises kind of Monad-ic.

</comment></comment></comment></comment><comment><USER9> "Recommendation 2: Include Only What You Need"

The slide refers to the inversion of control principle but can easily include other important aspects of including only what is needed.

I would like to expand on this for discussion. Consider the challenges of not over-engineering solutions to problems you and others don't fully understand, yet. Unless you work for NASA, you won't fully know what you need until you need it.

How do programmers here account for the unexpected?

<comment><USER10> > How do programmers here account for the unexpected?

You don't. At least, I don't.

When I'm writing code for an application, I'm doing the following...

"Hmmm, I need a function to perform <certain thing>"

Function is written... tested... debugged until <certain thing> is achieved. Job done.

Whilst writing said code, I do not think to myself "Hmmm... y'know in the future it might need to also do <some future thing>" and proceed to add additional function parameters and write additional code which would only be useful sometime in the future, just in case.

No. I write sufficient code for what is required of said function at that moment in time. It is only if and when required would I then add any additional parameters and code to that function. Or write new functions.

<comment><USER11> There's a difference between not adding bells and whistles you might not need, and shipping asymmetric, broken abstractions. Just because your app doesn't need to support vectors in the negative plane, for example doesn't mean you should ship a vector library that doesn't support negative numbers. In the same way I see well-meaning devs "dribble" data into an API, forcing future users to expand the API into a shape that could easily have been anticipated, and made cohesive sense. This stinginess with API is particularly bad because now developers learn to not respect API boundaries at all, because there aren't any. (And additionally it contributes to a lot of unnecessary indirection and typing because you have to define subset types at both ends of the API.)

So, yeah, DON'T just add arbitrary stuff because you'll think it will be useful to someone; but DO add stuff to maintain the symmetry and understandable abstraction of what you've made.

<comment><USER12> I think you're agreeing with everyone else.

Including/writing a fully featured Vector library _when you need a Vector library_ is perfectly fine; but if you're writing some code to handle those Vectors you should stop after it's done and not generalise it to also handle a bunch of other types in case you might need it later (because you probably won't).

<comment><USER11> I wish I was agreeing! But sadly I am seeing more than a little but of jingoism here, which I think is 80% right, but like anything you can take it too far. "Every generalization is false," etc.

</comment></comment></comment></comment></comment><comment><USER13> Main rule for writing less code: only write the code you need to solve the actual problem you have.

It is fine to write towards future problems, but all to often trying to be generic explodes the codebase and leads to bugs.

</comment><comment><USER14> Without understanding why these rules get broken, it's hard to avoid breaking them.

There is a tension between dependency and redundancy. Avoiding redundancy often introduces dependency as code becomes shared for several purposes. Knowing which is preferable (dependency or redundancy) in a given case requires a lot of judgement and changes as the code evolves.

Redundancy is bad when it introduces too much code and too many chances for error or unnecessary divergence of implementation.

Dependency is bad when two things that start out closely related diverge in purpose, straining an implementation to handle both cases.

</comment><comment><USER15> (2002)

Also, previous discussion: [https://news.ycombinator.com/item?id=5024221](https://news.ycombinator.com/item?id=5024221)

</comment><comment><USER16> For many real world examples of minimalism and simplicity, see projects such as st or dwm from suckless. [http://suckless.org/philosophy/](http://suckless.org/philosophy/)

<comment><USER17> Suckless is at best satire and if we're being honest just plain idiotic.

Without fail every suckless person I've talked to either has no idea what they're talking about, or in the off chance they do they're incredibly shitty far right wing types who gripe on about women/minorities/CoCs ruining tech.

<comment><USER18> Yikes, that sounds like a horrible experience. Never got that from hanging around at the Arch linux forum back in the days where their products were moderately popular.

Having said that, my general impression was that there was an inordinate amount of Plan9 cargo-culting (with some DJB fanboys mixed in). Young, idealistic people without much experience but lots of admiration for the more Bauhaus part of their elders.

</comment></comment></comment><comment><AUTHOR> Looking around int the web [http://www.jbox.dk/](http://www.jbox.dk/) refered on this submission [https://news.ycombinator.com/item?id=18829779](https://news.ycombinator.com/item?id=18829779) about Sanos operating system I found this pearl.

</comment><comment><USER2> > Prefer code to comments

I used to make this same argument, and then took it overboard by never commenting. After reading some literate codebases, I've changed my mind.

Code is (almost?) always obvious to you as you are writing it. So, you never recognize code that is in need of a comment until you come back to it and struggle to understand its purpose and the context that gave it birth.

I now follow a rule: a meaningful comment at the top of each file. A comment on every exported function / value. Often, in the process of writing the comment, I realize I've poorly named something or that I've failed to handle some case. Comments help guide the reader, but also the writer.

<comment><USER19> Can confirm. This is literally what happened in a codebase in the past:

      // OLD CODE WITH COMMENTS:
      // check ...
      4 lines of code
      // drop ...
      4 lines of code
      // read ...
      4 lines of code
      // do xxx ...
      4 lines of code

In total, that method was like 16 lines of code, with some short commented sections. And the sections used variables from before.

Situation: New coder comes in, sees comments. Says "comments are bad, they get out of date, yadda yadda". So proceeds to change comment names into method names:

      // PROPOSED: COMMENTS => METHODS
      check()
      drop()
      read()
      doxxx()

What coder forgot was the _variables and context_. As said before, the total was 16 lines of code with simple variables used between it. Not a big deal. But now when it has to be split into functions, it became like this:

      // ACTUAL 1: COMMENTS => METHODS
      a, b, c = check()
      d, e = drop(b)
      f, g = read(a, d)
      i = doxxx(e, g)

And this was a language that didn't support multiple return types. So the code was actually:

      // ACTUAL 2: COMMENTS => METHODS
      class X { a, b, c}
      class Y { d, e }
      class Z { f, g }
      X x = check()
      Y y = drop(x.b)
      Z z = read(x.a, y.d)
      i = doxxx(y.e, z.g)

So now coder added 3 more classes, with more lines of boilerplate. Then the coder decided, to _manage_ this problem better. So they created some more interfaces and did some DI. The result was around a 250 line PR, which I cannot ping here anymore. When we pointed out the same logic was now 250 lines, the answers were: "It's inherent complexity which we didn't know how to manage. His/her solution scales better, and he/she has shown us the way".

All for what? Because comments were considered a smell. Go figure.

I guess this is why this other HN post trended – "Please do not simplify this code": [https://news.ycombinator.com/item?id=18772873](https://news.ycombinator.com/item?id=18772873)

<comment><USER20> It really depends. In my own software, I really appreciate when code is "clean" like that. I find it easier to keep in my head when methods are short.

It also depends on logic reuse. If you are now able to use the `check` method in other places, then I say it's overall a successful refactor.

<comment><USER21> > I find it easier to keep in my head when methods are short

I think that's true if "short" is measured in terms of internal complexity. I think each function should try to manage a small bite size amount of complexity that represents a reasonable level of cognitive load for a brand new person to reverse engineer. It could be quite a lot of lines of code if they are very simple ones, or it could be a one liner if it's super complex / obtuse.

<comment><USER20> Good point. Yes, I meant _logically_ short. Maybe _logically compact_ is more apt.

</comment></comment></comment></comment></comment><comment><USER22> I struggle to understand this; I guess the speaker added a lot of information verbally.

<comment><USER23> Indeed. Apparently the author didn't think that minimalism included simplicity of language ("Baroquecratic", really?) and not adding tangentially related and unnecessary quotations in every page.

</comment></comment><comment><USER24> Is there some version of this pdf with code examples ?

<comment><USER25> What an ironic question.

<comment><USER24> Some recommendations in this pdf are sooo vague and lack proper context. For example, what the hell does this mean: "Let the Code Make the Decisions: There is no need to spell everything out in minute detail".

<comment><USER26> Majewsky was mocking the document, not you, I think. It's maybe taken minimalism a little too far.

<comment><USER25> I was not really mocking anyone. Just noting the irony of someone asking for more code in a document that is about writing less code.

</comment></comment></comment></comment></comment><comment><USER27> Could someone explain these recommendations more in-depth?

(5) Manage Resources Symmetrically (10) Let the Code Make the Decisions

What does it look like when you do the opposite of these rules?

I think I'm unfamiliar with the problems these slides address, so I can't grasp the insight in them.</comment>


Court on Oracle vs. Google: No patent infringement - <AUTHOR> http://thenextweb.com/google/2012/05/23/court-on-oracle-vs-google-no-patent-infringement/

<comment><USER2> So at this point I believe we're still waiting on the judge's ruling about whether or not APIs are copyrightable so Google's not completely out of the woods here. But even so, the judge has already indicated that he doesn't believe Oracle could get much out of even a ruling against Google on the API issue.</comment>


What it's like to build a family while starting at a startup - <AUTHOR> https://blog.betterworks.com/qa-building-a-family-and-joining-a-startup/ <comment><AUTHOR> I've got two kids, 2 years old and 5 months. Juggling is always tough. What do you guys do to balance demands at work and home?</comment>


Show HN: Adthusiasts – Local advertisement marketplace - <AUTHOR> https://www.adthusiasts.com/ <comment><AUTHOR> Hi everyone,

We launched a marketplace for local advertisement. The idea is that locals, sport teams, billboard owners and so on can create an account on my marketplace. In the description they are pointing out what they would do to market your business (i.e.if Person: hand out flyers, being a human billboard or just wearing a t-shirt with your brand name on it; Hobby soccer Team: wearing the t-shirts with your brand on play-day). A local billboard owner can also create a profile. Even a wedding party could post their wedding day and look for sponsors. Every profile can add more than one "ad-space". With posting here we hope to get some feedback on our marketplace. Let me know what you think. Sign up if interested.

fb: [https://www.facebook.com/Adthusiasts/](https://www.facebook.com/Adthusiasts/)

John</comment>


Your 404 Error Pages - <AUTHOR> http://www.smashingmagazine.com/2007/07/25/wanted-your-404-error-pages/

<comment><USER2> I never understood the point in customized 404 pages. I think the whole purpose is to tell the user the page doesn't exist, as quickly as possible. Since users are used to the standard page, the quickest way to do it is to show them exactly that. When I see a customized 404 page, first I'm fooled into thinking it's a valid page, then I feel disappointed, after I realize what it is.

</comment><comment><USER3> The only thing I can think of is to create a way to try to get the user to the page they were requesting as quickly as possible. Or at least make sure you keep them on your site instead of them wandering off somewhere else.</comment>


The Man Who Made Star Wars (1979) - <AUTHOR> http://www.theatlantic.com/magazine/archive/1979/03/the-man-who-made-star-wars/306228/?single_page=true

<comment><USER2> Thank you for posting this. George always had children in mind when he made Star Wars.

</comment><comment><USER3> > The last 'over the hill' is space."

Now we wonder, which hill to go over next ?</comment>


Why we use Balanced for payments - <AUTHOR> http://blog.apixchange.com/2013/10/why-api-xchange-uses-balanced-for-payments-and-not-stripe-or-braintree/

<comment><USER2> Balanced is the underdog, but IMO they have the best product right now and for a while Stripe et al were on the back foot playing catch up.

<comment><AUTHOR> It's interesting because I never saw Balanced as an underdog. Maybe Stripe etc. have a lot of buzz right now (and rightly so they're an awesome product), but Balanced has backing from some awesome people and are a huge leader when it comes to a lot of things.

</comment></comment><comment><USER3> have you had to deal with chargebacks?

<comment><AUTHOR> Honestly it's something we haven't encountered yet. I think it's in large part because we do a lot of work vetting projects on the front end before we put payment into escrow.

</comment></comment><comment><USER4> wells does same day ACH debits? when'd that happen?

<comment><USER5> Note: I work at Balanced

Speeding up ACH debits, which take 3 to 4 business days right now, is in the works.

Wells Fargo does not offer same day ACH debits, but they do offer same day ACH credits. The reason for this difference is that the risk of pulling funds from an account is much greater than pushing funds to it. That being said there is still room for us to shorten the time it takes for ACH debits to process and we are actively working on that.

<comment><USER6> I'm looking for a good solution to set up recurring payments on Shopify. I've had endless trouble with Chargify (seems to be mainly that PayPal is awful for recurring and Stripe is still in beta for them), and the other recurring payments app is still in Beta. Does Balanced have any kind of solution I could use? My email is in my profile if you'd like to discuss more.

<comment><USER5> Just emailed you!</comment></comment></comment></comment>


Primer – Native iOS New User Screens, Personalized by Traffic Source - <AUTHOR> https://goprimer.com/?source=hackernews <comment><USER2> Hi all, I'm Kamo, CEO of Primer. Happy to answer any questions you may have about the product or even growth for mobile apps in general.</comment>


Ask HN: Who's Hiring Interns - <AUTHOR>

Hi HN! Who's hiring interns?
Please include:
* Company
* Location
* Are you willing to relocate potential interns?
* What does your company do?
* What technologies are involved?
* Length of internship and period (Summer, Fall, etc.)
* Paid/Unpaid
If anyone is looking for a developer with C, Python, Javascript, and Haskell experience, my email is in my profile.
Thanks HN <comment><USER2> Wait for the monthly hiring thread (last one at <http://news.ycombinator.com/item?id=3060221>, see the "whoishiring" account for details), look for "INTERN".</comment>


Why economics is the most important thing you can learn - <AUTHOR> http://iaindooley.com/post/133953108673/keeping-the-bastards-honest-why-economics-is-the <comment> vezzy-fnord Biased towards neochartalism.

EDIT: As I can tell from your recent blog posts and HN submissions, you've been binging lectures on MMT and have been getting rather excited over it. That's fine. Do not assume it is anything but a heterodox theory, rather than an axiomatic truth. Economics is a field that is startlingly easy to deceive one's self in proficiency of from limited exposure, and you appear to be a prime example of the very failings you lament.</comment>