Linked List Problems (2002) [pdf] - <AUTHOR> http://cslibrary.stanford.edu/105/LinkedListProblems.pdf <comment><USER2> One of my all-time favourites is this: suppose you have a linked list that eventually cycles: that is, the link of one of the nodes in the list points to a previous node in the list, but not necessarily the first node. Write a function to compute the cycle length of the cycle. Now if it was just a simple circular list, this would be trivial: set a pointer to a node, and move another pointer a node at a time until the two pointers meet. However, this list has an initial sequence of nodes of unknown length that is not in the cycle. So the trick is really to find a node that is guaranteed to be in the cycle.

A nice way to do this is to start with two pointers to the head to the list, and then advance one by a single node at a time, and the other by two nodes at a time. It is easy to see that they will eventually meet on the cycle. Once that happens, it is easy to count the cycle length.

Now suppose you are running a casino and you are using a random number generator. For any given seed, the generator will eventually cycle, but not necessarily to the seed. You can compute the cycle lengths for a given seed with two variables by analogy with the linked list solution stated above.

<comment><USER3> As others have said, this is actually a, perhaps the best, canonical example of a terrible interview question [1].

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

<comment><USER4> I mostly agree with this, _however_ if the job requires a C.S. degree or equivalent and you assume all qualified candidates have been exposed to this, then perhaps it can be a useful question for testing how well you can explain a solution.

Just look at how varied and complicated some of the explanations are for this out there. Some take mathematical approaches, others (me) try to boil it down to a few intuitive sentences... I can see it giving some insight into a candidate.

<comment><USER5> Unless you're interviewing Dijkstra, it's a ridiculous question to ask. Anyone who's heard it before knows the answer instantly (I knew the answer before I even finished reading the description) and anyone unfamiliar with it will likely flail.

<comment><USER4> Nah, I wouldn't say everyone would flail but Dijkstra. There are simpler solutions to cycle detection.. maybe not as _efficient_ as Floyd, but you could answer the question. For example you could start with something basic and unoptimized like keep a data structure of all the nodes you walk, and when you hit one that's in the structure then you've encountered a cycle. This is a fair approach to engineering solutions to novel problems -- don't panic, get something working, then optimize where necessary.

And if you already know the best practice, like I said, it's not just about whether you know the answer -- it's how simply you can explain it to a teammate and the theory behind why it works. That's also a useful skill to interview for, especially for more experienced candidates.

</comment></comment></comment></comment></comment><comment><USER6> "Just say no to linked lists!" [https://youtu.be/fHNmRkzxHWs?t=2099](https://youtu.be/fHNmRkzxHWs?t=2099)

<comment><USER7> He says because of cache misses due to each element being allocated individually.

But then working with references is bad in general? If your vector stores references to objects it's bad? Your object fields point to strings - bad too.

Should we ditch Lisp and Java?

Note, data should not be continuous to stay in cache. Cache is more like paged virtual memory, it consists of cache lines.

Before subscribing to the "never use linked lists" view I would like to see a nontrivial program rewritten from lists and references to the "allocate everything at once" approach and measure the performance.

If you want to avoid references and allocate everything in place, it may force your program to do a lot of copying.

Also, not only CPU performance matters - programmer performance is important too. So-called "high-level languages" try to optimise this.

<comment><USER8> You're misunderstanding the advice about contiguous. It's not that it's more likely to stay in cache, but if you're accessing data sequentially it's more likely the data you're going to access next is already in cache.

Most (all I've read/looked at) benchmarks in Java have data structures backed by linked lists utterly smashed by things implemented by an array.

There was in the last year or two a good c++ talk where a game or game engine changed their storage to be more array like and got roughly a 30% boost in performance. Memory locality is usually king, which is why linked lists are rarely used.

<comment><USER7> > if you're accessing data sequentially it's more likely the data you're going > to access next is already in cache

Why?

<comment><USER9> Cache prefetching. ([https://en.wikipedia.org/wiki/Cache_prefetching](https://en.wikipedia.org/wiki/Cache_prefetching))

Essentially, many workloads access data sequentially and therefore modern cache architectures have special optimizations to make these memory accesses as fast as possible, by prefetching the next item in the sequence before it is actually needed.

<comment><USER7> Ah, yes.

Well, anyways I value code simplicity more than anything.

Maybe CPUs will learn to do cache prefetch for link oriented languages: if a "load and dereference" pattern is detected, CPU could prefetch the data referenced by pointers it has in registers or recently fetched cache line.

BTW, linked list elements are not necessary located far away from each other, if we allocated them one after another chance are they are near each other in memory.

</comment></comment></comment></comment></comment></comment><comment><USER10> > 7\. Build — Local References

        struct node* BuildWithLocalRef() {
          struct node* head = NULL;
          struct node** lastPtrRef= &head; // Start out pointing to the head pointer
          int i;
          for (i=1; i<6; i++) {
            Push(lastPtrRef, i); // Add node at the last pointer in the list
            lastPtrRef= &((*lastPtrRef)->next); // Advance to point to the new last pointer
          }
          // head == {1, 2, 3, 4, 5};
          return(head);
        }

> This technique is short, but the inside of the loop is scary. This technique > is rarely used, but it's a good way to see if you really understand > pointers.

> This technique is never required to solve a linked list problem, but it will > be one of the alternative solutions presented for some of the advanced > problems. The code is shorter this way, but the performance is probably not > any better.

This is what Linus Torvalds called "good taste" code and used in Linux kernel. There was some argument about it though: [https://news.ycombinator.com/item?id=5030845](https://news.ycombinator.com/item?id=5030845).

(Incidentally, I found Nginx is written in the same style recently as I read it - manual linked list manipulation with this double pointer technique everywhere..)

</comment><comment><USER11> I work with traditional RDBMS & and old hierarchical linked-list DB. The linked-list has great performance with super speedy Fortran, but it is a major pain to retrieve any information. Having to write complicated pointer commands is tedious at best. Select * is such a luxury.

</comment><comment><USER12> For other data structures, refer [http://www.techiedelight.com/list-of- problems/](http://www.techiedelight.com/list-of-problems/)

</comment><comment><USER13> I remember solving these in my spare time while bored at my first internship as a developer. Good memories

</comment><comment><USER14> I have been coding for decades now and never had a use case for a linked list.

<comment><USER15> I use lists daily. Why not? It is a stack or queue, if you reverse it

</comment></comment><comment><USER16> What is LISP

<comment><USER17> In case you're serious, and too lazy to google it... [1]

LISP is a family of programming languages.

[1] [https://www.google.com/search?q=LISP](https://www.google.com/search?q=LISP)

<comment><USER16> It was sort of a Jeopardy response. I'm sorry if it was too opaque. The OP's article just brought LISP into my mind.</comment></comment></comment>


Carlin talks about weed and coding - <AUTHOR> https://www.youtube.com/watch?v=5gHLrZCJBr0#t=5m52s <comment><USER2> I believe he's referencing this [https://www.rollingstone.com/politics/politics-news/don- eyle...](https://www.rollingstone.com/politics/politics-news/don-eyles-extra- weird-looking-freak-saves-apollo-14-40737/)

</comment><comment><AUTHOR> At 5:52 carlin is talking about someone he saw on the news or something. Does anybody know what/who he's talking about?</comment>


Alphabet Announces Fourth Quarter and Fiscal Year 2018 Results - <AUTHOR> https://abc.xyz/investor/static/pdf/2018Q4_alphabet_earnings_release.pdf?cache=adc3b38 <comment><USER2> I had been a Google fan for a long time but they lost my business recently because despite paying over $30/mo for G Suite and a YouTube Premium family plan with Google Play Music, they apparently can't help tell me why they blocked my daughter from live streaming to YouTube.

The video in question was her playing with legos, and when I disputed it asking why they blocked her... they literally just responded saying the block was valid without ever giving a reason. Like, what the heck Google you act like robots. Anyway, just cancelled my Premium services because they could never give a straight answer.

<comment><USER3> I don't know that any tech companies are good at this?

I would, a few times per year, spend $10 or $20 to promote some tweets on Twitter. At one point, I stopped being able to do that, due to some nebulous "violation" of their TOS. I've gone back and forth with them a handful of times, and they always basically say "Yep, we looked into this, and you definitely did something bad, but we won't tell you what it was or which tweet it was in." They still send me emails and other ads trying to get me to buy advertising, though. I don't really care, it is just kind of funny.

I don't know why they all are so bad at customer support.

<comment><USER4> My theory is they're bad at customer support because they spend nothing to support us. That's why AT&T, Comcast etc can support ~100 million people _by phone_ , Amazon support _a multiple of that by live chat_ and Google can't even reply to email.

<comment><USER5> Comcast "support" is almost not better than just having robots at the other end, never have I ever gotten a problem resolved from support, I've just had them try to upsell me relentlessly. To this day my Comcast email is somehow setup wrong and I no longer care to try to fix it.

<comment><USER3> Interestingly, Comcast has been one of the consistently better support experiences for me over the years. Usually very quick and pretty helpful, even if it is just to schedule someone to come out and look at the problem.

Their service in general has gotten kind of unreliable around here the last year or so, with a handful of widespread outages, one of which lasted almost an entire day, but the customer support has never been something I've been unhappy with.

</comment></comment></comment></comment></comment><comment><USER6> Pre:

\- will Porat be cutting "other bets", rumors is that other bets is in line for a big budget cuts

\- Options implied vol is showing enough movement baked in that GOOG could become largest company by Market Cap if the street likes their numbers, and GOOG doesn't disappoint often

\- Like Facebook the public and wallstreet have weighed in and they love money more than privacy.

\- analysts are not in anyway mixed about Google's prospects

\- 41 buy recommendations vs 2 hold and 0 sell

Add Revenue:

\- 4Q paid clicks on Google's own sites is up 66%, seems high enough that it's not organic but more than likely increased advertising space on sites, forced youtube videos, etc

\- Cost per click on Google's own sites is down 29%

Numbers:

\- 4Q profit of $8.2B est $8.7B

\- 4Q EPS $12.77

\- 4Q expenses $31.2B up from $24.7B yoy.

\- 6.85B on capex vs $3.8B yoy

\- 4Q operating margin 21% down from 24% yoy.

\- 4Q other bets lost $1.33 billion, don't hear much about these bets anymore but that is an outsized loss in this category.

-Again they mention Verily and Waymo in passing but no details worth mentioning.

\- 4Q Add Revenue $32B

\- 4Q own site revenues $27B

Misc:

\- shares are down a bit, lots of volume, nothing out of ordinary, guessing its mostly covering and profit taking.

\- Too bad for almost all factor models that really on trade on tech Momentum

\- The company added nearly 20,000 employees over the year. ____* WOW, double check this, that 's a large head count addition.

\- can't find any Cloud break outs, I guess MSFT and AMZN are really beating them, given how much of a growth engine it is for the 2 leaders I can't see why GOOG would hid it if they were able to compete.

\- No youtube breakout of revenues, Again not a bullish sign for that division, stil nothing on youtube on the call.

\- __EDIT __on the earnings call they did talk briefly about Youtube, no real new numbers though, just their assurance that youtube is crushing it

\- Porat is doing gymnastics to talk about youtube but not actually say anything about youtube. Are youtbue numbers really that bad????

\- Google was the top lobby spender of 2018, not in tech but for all companies. Silicon Valley is now arguably bigger force than Wall Street on US politics.

\- margins are down and spending is up, not sure if its GOOG that wants to spend to grow or its competitors that are forcing it to compete. Either way, this competition is great for tech salaries

\- Employees totaled 98,771 in the quarter vs 80,110 a year ago, WOW

<comment><USER7> > Silicon Valley is now arguably bigger force than Wall Street on US politics.

There's no argument there. The banks and military industrial complex have drastically more influence and power than Silicon Valley, despite SV closing that gap over time.

All politicians, with few exceptions, bow to the feet of the military industrial complex. They all get in line. That's slightly less true for Wall Street, however only slightly.

Every aspect of the US Government is dependent on the Federal Reserve and US banking system, without exception. Silicon Valley companies come and go over the decades, they rise and fall. JP Morgan predates the Fed and has been critical to the US Government for over a century.

Google is a Walmart or the former GM, as far as the politicians in DC are concerned. Powerful, rich, influential, and still not a first tier power in DC. It never can be.

Military, weapons, currency, financing. That's the source of real power, all of DC knows it. Everything else is just a play thing of the moment, inevitably replaced by a new shiny play thing in the next decade or two. Long after Google is gone, banking and military will still be around.

<comment><USER8> So you are saying that the company who holds all of the worlds information and makes it publicly available is a fad?

That's bold!

<comment><USER9> They don't hold the world's information. They are an advertising company with a search engine for public websites, which are all hosted outside of Google.

<comment><USER10> In the age of information overload, the host of information is less important than the portal to information.

</comment></comment></comment></comment></comment><comment><USER11> The cloud bet better pay off or they're in big trouble. Especially since they're the number 3 player and not the market dominant player like Ads. Will be interesting to see how they play out

<comment><USER12> Right now Google is niche for Big Data and ML type of stuff. Their ecosystem has the lead as far as the best tool for the job out of the big three.

AWS is still blowing them out of the water in the "Enterprise" market, which they are really struggling to break into, but they're pushing hard.

<comment><USER13> Part of that is because "enterprise" doesn't trust Google to not drop support on short (by enterprise standards) notice and leave them in the lurch. Microsoft, in contrast, has spent decades building trust at large companies by supporting old stuff essentially forever[0].

[0] [https://arstechnica.com/information- technology/2015/06/navy-...](https://arstechnica.com/information- technology/2015/06/navy-re-ups-with-microsoft-for-more-windows-xp-support/)

</comment></comment></comment><comment><USER14> The TLDR: First time in years EPS dropped Q/Q. Big increases in spending.

</comment><comment><USER15> I hate office google products. My work place uses it.

Google Driver File Stream is slower than share drive, along with it always "streaming" in the background. VPNing makes it even worse.

Can't use hotkeys in Google Sheets, and there are limited functions to it as well. I hate clicking when using Excel all day.

Chrome is slow and bloated. Sites sometimes don't render properly.

GMail is slow, and its UI isn't making things better. Notifications do not always appear, and missing a scheduled meeting/call can be embarrassing or make you look irresponsible -- and looking at long email threads can get confusing.

GChat/Hangouts or whatever it's called runs within the browser, which I entirely dislike because it takes up a fraction of what you're looking it -- so I just end up using the hangouts software.

The whole GSuite thing is only good for collaborative purposes. But it slows down the PC so GODDAMN much that it brings inefficiencies and headache. I really wished the employer didn't go Google and chose an alternative.</comment>


Vast neolithic circle of deep shafts found near Stonehenge - <AUTHOR> https://www.theguardian.com/science/2020/jun/22/vast-neolithic-circle-of-deep-shafts-found-near-stonehenge <comment><USER2> Came here to submit this – amazing discovery!</comment>


The 39 Social Media Tools I'll Use Today - <AUTHOR> http://www.socialmediatoday.com/SMC/175340 <comment><USER2> I've never seen objective marketer before. I'm looking for tools that can let me test my marketing on real people before i actually jump into it <http://news.ycombinator.com/item?id=1132756> . Do you know if anything like that exists?</comment>


Show HN: Free and simple platform for creating visualisation with data maps - <AUTHOR> http://datamaps.co/ <comment><AUTHOR> Powered with React, Redux and Node. Example maps: [http://datamaps.co/showcase](http://datamaps.co/showcase)

Any feedback is more than welcome.

<comment><USER2> That's great idea to create visual map with a data file. Can people share maps by links?

<comment><AUTHOR> Thanks for a comment. Right now users can save a map as PNG or SVG. What do you mean exactly by sharing maps by links? Sharing image or javascript interactive map?</comment></comment></comment>


Trig functions on 64-bit floats are hard. - <AUTHOR> https://code.google.com/p/go/issues/detail?id=6794

<comment><USER2> This is the kind of story that takes you deep into the rabbit hole

Funny how people just don't bother with x87 anymore, even for things that it's supposedly better. Oh btw x87 is not as exact as it could be for sin/cos, because of backwards compatibility. (can't remember the reference right now, but I remember Java computing them manually exactly because of this)

Still, if your program is asking for the cos of 2^120, you're doing it wrong, as nicely explained here: " You need around 120 bits of 2pi to even start getting significant bits of the cosine right, and you need 170 or so to get them all right. Very few implementations bother, because this only matters if you assume the argument was also accurate to at least 120 if not 170 or so bits of precision, which at that magnitude is very unlikely."

<comment><USER3> Formally, math library functions should treat their inputs as representing exact real-number values, not approximate ranges.

All good math library implementations hold themselves to a higher standard than a naive backwards error bound you refer to. "Infinite-pi" range reduction providing good relative accuracy for all inputs is used in the software implementations of trig functions from Intel, NVIDIA, Apple, IBM, HP and Sun, to name just a few companies, as well as most widely used third-party math libraries, so it's not really accurate to say that very few implementations bother (though that would have been true 20 years ago). This can be done with minimal performance impact for "normal" arguments, and not doing so today is frankly pretty sloppy.

Implementing these operations via a naked FSIN or FCOS instruction is especially horrific; even worse than using only ~67 bits of pi, those instructions simply do not support arguments with an exponent larger than 63, and on some architectures will simply return the input unchanged (i.e. the result of sin(HUGE) will not even lie in [-1,1], which breaks all sorts of invariants one would like to hold. For instance, asin(sin(x)) may then be NaN for finite x, and sin^2(x) + cos^2(x) won't be even _close_ to 1).

<comment><USER2> I agree you should try to do range reduction

But the question remains, that is, what is the cos(2^120) and what is the cos(2^120+x) where x is the smallest increment representable in float64. Or maybe a better question is how many times 2pi is in x.

<comment><USER3> > what is the cos(2^120)?

-0.92587902285…

> what is the cos(2^120+x) where x is the smallest increment representable in > float64?

-0.72134636322…

> how many times 2pi is in x?

approximately 4.6974248 * 10^19.

All of these questions have well-defined answers. A good math library should be able to help you compute them.

<comment><USER2> Thanks for computing those

Oh I don't argue about the mathematical exactitude of the values inside the limited precision of float64 (or something else).

I doubt about the significance of them in a context other than (float) math. Graphics, physics, etc.

Or better, don't try to numerically integrate cosine from 0 to 2^120 naively.

</comment></comment></comment></comment></comment><comment><USER4> Generally speaking in floating points you have 'finite' accuracy. The best way to think of floating points (for mortals), is to picture a 16 significant digit number. You can only have 16 non-zero digits. Then a power that ranges from 1020 to -1020.

Which means that when you have a value over ~1.6x10^16 you no longer have values below the decimal point, and each 'step' you take will be larger then an entire 2pi step of the trig cycle.

Its nice to think of floating points have infinite accuracy, and often times nobody really thinks about what goes on inside of floating point numbers, but in reality its a mess, a pure mess.

</comment><comment><USER5> Once I tried to evolve approximations for trig functions with genetic programming. It's surprisingly difficult but eventually I did get something that sort of worked.

</comment><comment><USER6> I believe this is essentially the perfect bug report and resolution. If only every reported issue was like this.</comment>


People are getting shot by toddlers on a weekly basis this year - <AUTHOR> http://www.washingtonpost.com/news/wonkblog/wp/2015/10/14/people-are-getting-shot-by-toddlers-on-a-weekly-basis-this-year/ <comment><USER2> If you get shot by a toddler, I'd suggest you deserved it.

</comment><comment><USER3> (gets on soapbox) We as a country need to prevent toddlers from getting guns. I propose legislation that would prevent any gun dealer from selling a gun to a toddler.

</comment><comment><USER4> In 2013 there were 505 unintentional gun deaths in the US. In 2012 in Australia, there were 4. Just sayin'

</comment><comment><USER5> Guns don't kill people. Criminal toddlers kill people!</comment>


Show HN: Whitestorm.js – Framework for Three.js Make your 3D game in a few steps - <AUTHOR> https://github.com/sasha240100/whitestormjs? <comment><AUTHOR> I made this project to help people who work with Three.js to make their 3D apps/games much faster and better.

This framework includes:

\- Module system

\- Component system

\- ReactJS integration

\- 3D physics module

\- Devtools (as modules)</comment>


Ask HN: How does a self-taught programmer get as skilled as a CS graduate? - <AUTHOR> What should every self-taught programmer, without a college degree learn? What should I learn so that I'm as skilled as a CS graduate? <comment><USER2> In practice most programmers are business application developers and don't need the education a CS degree demands. If you really want CS degree skills then I'd assume you want a job in bio/pharma/physics, etc. and if that's the case just go get the degree. CS focuses heavily on math and algorithms, if you want those skills then learn discrete math, calculus, etc.

If you want to compete against Joe average programmer with a degree then just learn Java or .Net plus the latest greatest technology fad offering (think Hadoop, Node/Angular/React, Rails back in the day, etc). From there you should have no trouble finding a startup company or a small contracting outfit with ties to bigger consultants serving enterprise clients. If you're good then accept a right-to-hire situation and an enterprise IT shop will pick you up.

Don't sell yourself short and don't take shitty odd consulting jobs from small businesses because you feel inadequate due to lack of degree. Create demand for your skill and reap the rewards. At the end of the day you will likely be the only one who cares about the degree.

<comment><USER3> While most jobs don't require much CS, most interviews to get them do!

<comment><USER2> Personally as a candidate and as a hiring manager I haven't found this to be the case.

I have a degree in business administration. My relevant work experience programming has always got me an interview using the tactics I outlined above.

If you have relevant work experience and a strong track record for delivering results then you will have no problem getting an interview regardless of your degree status.

<comment><USER3> Oh I wasn't referring to getting an interview. I meant that interviews for programming positions ar often CS-based, and it's passing them to get the job that require CS skills.

</comment></comment></comment></comment><comment><USER4> I am an electrical engineering student, so i might have some good background in low level things like 68k Assembly and the rest, but since the market for electrical engineers is dead, i learnt programming alone, i picked a language first (C in my case), tried to learn it well, and made some toy programs with it (nothing serious), and then i started exploring other languages, hoping to fall in love with one of them (didn't happen :( ), and then started with Algorithms and Data structures (Skiena's Book and lectures)[1], as it teaches you things that are really essential in CS, beside that you need to learn about OSs, Databases ... etc, to have a good foundation in CS, I personally know a lot of people who did great job as programmers, and didn't do any of this, but that's my perspective on how things should go , best of luck

[1]([https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp-...](https://www.youtube.com/watch?v=ZFjhkohHdAA&list=PLOtl7M3yp- DV69F32zdK7YJcNXpTunF2b))

<comment><USER5> Is embedded systems stuff dead as well, or just the hardcore IC/analog stuff

<comment><USER6> None of it is dead. At my last job we were having trouble finding good entry level EE's. At my current job we just hired one after a long search.

Like finding software developers: just cuz they have a degree doesn't mean they learned anything.

<comment><USER7> I guarantee you, the reason you were having trouble isn't because the grads "don't know anything" it's because you weren't paying enough. From my experience the job market for most flavors of EE is "dead". I think 25% of my class last year actually went into engineering. The rest went to CS grad school, software dev, consulting, or finance.

When you are offering lackluster responsibility, and bottom feeder pay, don't be surprised when you can't find talent.

<comment><USER6> Thank you for that completely uninformed rant!

</comment></comment></comment></comment></comment><comment><USER8> Skilled at what? That's the question. Algorithmic analysis? Study algorithms as algorithms. Compilers?...well, I'll leave that etc, as the trivial exercises they are.

What a CS degree will tend to provide (but not always) is a set of abstractions and a university perhaps may provide some different patterns of thought (but again not always).

That said, there's nothing _every_ self-taught programmer (or CS grad) should learn. There's no standard individual. There's no standard set of circumstances. Sometimes the best answer is using something off the shelf. Sometimes the best answer is reinventing the wheel. Sometimes it's cut and paste. A CS degree (lack thereof) doesn't make someone wiser...or a good fit for a team or a lot of other things that matter.

That said, there are reasons to get a CS degree that have nothing to do with skill. There's social expectations. There's internal motivation. There's the simple pleasure offered by the opportunity/excuseto study something of interest for a few years.

Good luck.

<comment><USER9> You can only know what problems you're going to encounter to within a certain margin. This both implies that despite having little knowledge of individual/"standard" circumstances, in the long-run you may be able to ensure that certain problems are going to come up and that you should be prepared for them. To me, this is what constitutes the "standard". So 'skilled at what?' is a somewhat nebulous way of answering the question when there are in fact basic skills that allow one to manage one's career proactively.

Granted the OP could probably do better to clarify his goals for better targeted advice. Personally I would suggest to him/her that they should look at the MIT syllabus, or a trade-school syllabus, and go from there.

</comment></comment><comment><USER10> Best way would be taking online classes through Coursera, edX or Udacity. All 3 offer best quality material to take you to CS graduate level. What you need to know is what the curriculum of CS degrees at good universities contain. In terms of specific knowledge and skills, you will need to take calculus and discrete math classes. The few classes in algorithm design and analysis, data structures. You may want to take few classes in compilers, networking and operating systems in order to better understand how the whole system works. Then few classes in programming languages (not a specific language but the theory of programming language). For further advancement you may want to take some more classes in machine learning, artificial intelligence, linear algebra, human computer interaction, computer vision, database systems, cryptography etc. It requires proper amount of time to accomplish all. And not all CS graduates are as skilled as you think. May be you are more skilled than some of them. So before starting it would be good to understand what you are trying to accomplish by getting CS skills. May be you are good to continue with your current skills?

</comment><comment><USER11> The best approach to be competitive, is to find a popular, platform, stick to it, and learn it really well.

You won't be coding any fancy algorithms so you're worrying about the wrong thing. You just need to learn the best practices and stick to them. And then you learn most of the skills you will need through experience.

Also note that without a degree your employment possibilities are more limited. You will probably have the most luck in web or mobile app development.

<comment><USER12> > Also note that without a degree your employment possibilities are more > limited. You will probably have the most luck in web or mobile app > development.

I don't think this is really the case anymore. I work at a largeish game dev company and know quite a few people (coworkers and just other developers working for other companies) who have no degree and no trouble finding jobs. Admittedly this is purely from personal observation specifically in game dev, but it doesn't seem like my degree-less friends get any fewer recruitment offers or advancement opportunities than friends who went to college.

<comment><USER13> Your sample is subject to some pretty heavy selection bias though. How would someone who does not have a degree and is having trouble finding a position know you through working at a game dev company?

<comment><USER12> By nature of the fact that I don't only associate with people who work in game dev companies but also aspiring game developers, hobbyists, and all kinds of other people interested in the industry.

Don't get me wrong, I see plenty of people having trouble finding a position in games. It's just that this isn't limited to people with or without degrees (and isn't even limited to engineering positions specifically, where finding work seems to be easier). A lot of the time the people I see asking about their troubles finding a position simply don't have a portfolio of work to show potential employers.

And then there are people who haven't started applying yet but want to prepare. They ask in online development communities what they need to do to be ready - a lot of the time the answer from other people who do or have worked in games is to make games and build a portfolio, not necessarily ship off to college by default. Having said that nobody is disputing that college can be a great way to build that portfolio and learn things at the same time! The paper itself just doesn't seem to be as important as it used to be anymore.

</comment></comment></comment></comment><comment><USER14> I did a 5 year degree in CS. What remains is not so much the course content but the faint knowledge of how things kind of work. This gives me a very wide scope when working on any problem and to provides a better grip when facing new domains.

You can't replace the full scope of CS studies with online courses or books simply. What you can do is to start widening your current domain of knowledge. You are a programmer: How does your language of choice work internally? How do compilers/interpreters do it for other languages? How does a single core handle your program? What happens with multiple cores? And so on...

You'll find yourself knowing more and more about SO, architecture, etc and you'll be able to take advantage of the knowledge right away (because it's related to what you do) and in the future (because many CS domains share common parts).

Last, if books work for you, use them. If hacking some electronics does it, then pursue that. Just find a way to learn things that doesn't get you tired. And whenever you're in the office and someone just talks about something you have no clue, ask for tips, always!

</comment><comment><USER15> It might be worth picking up some CS textbooks if you are someone who can learn from books well.

Things that have helped me the most from my CS degree:

* Learning the internals of operating systems and the UNIX API (Modern Operating Systems (3rd Edition), Advanced Programming in the UNIX Environment, 3rd Edition)

* Network programming (Unix Network Programming, Volume 1 and everything else really by W. Richard Stevens)

* Compilers (Compilers: Principles, Techniques, and Tools is the goto book, but I found it hard to read stand-alone. Might be worth finding a different textbook here)

* Algorithms and data structures (Introduction to Algorithms, 3rd Edition)

* Learning the basics of how CPUs work form a computer engineering book is useful as well, along with assembly language, and how higher level languages like C get translated to ASM and eventually machine code. I can't quite remember what text books I used for this.

Compilers was useful, even though I've never written one professionally, as knowing how to parse anything well save you headaches when someone tells you to parse some HTML for instance. You will also pick up regular expressions and some fun useful data structures.

</comment><comment><USER16> 1\. Look at the curriculum for an undergrad degree, and start studying what you find most interesting.

2\. And/or, do a deep dive study into every aspect of what you're currently working on. But 1 will help with 2.

</comment><comment><USER17> Linear Algebra, Data Structures, Algorithms, Computational Topology

<comment><USER18> Hmm, I would disagree. Data Structures and Algorithms, definitely. Linear Algebra, maybe, for certain jobs. Computational Topology? No way. Totally unnecessary unless you are going into academia or a very specific subfield. It is not even standard for most undergraduate CS curriculums.

<comment><USER17> That will be increasingly important in the years to come, plus it puts you into everything.

</comment></comment></comment><comment><USER19> I'm not sure CS and programming go hand in hand anymore. I'm a college dropout that landed a job as a software developer at a good company, and everything that I use daily is self-taught knowledge. I can't remember a time when I used something I learned in CS for the past three years, and I made it to my senior year.

What I can recommend is to learn Github and git. Beyond that, it really depends on what you want to focus on.

What interests you?</comment>


Man arrested at Large Hadron Collider claims he's from the future - <AUTHOR> http://crave.cnet.co.uk/gadgets/man-arrested-at-large-hadron-collider-claims-hes-from-the-future-49305387/

<comment><USER2> But seriously, folks...

What characteristics of someone appearing like this would make him or her (or it or them) believeable? How could you "prove" you actually arrived from The Future?

A sort of corollary: what characteristics would some artifact have to exhibit to allow one to consider it "alien", the product of a non-human intelligence?

<comment><AUTHOR> I was thinking about this when I read the article. I found myself thinking that you'd have to present convincing evidence that you were from the future in such a way that you didn't change history - but then I realized that the whole purpose of the time travel would be to change history, so maybe that wouldn't be a limiting condition.

Maybe the time traveler could present a working ray gun?

</comment></comment><comment><USER3> Let's asking him about the paradox that if the LHC destroys the world, how can he come back to prevent it?

</comment><comment><USER4> > 1 April 2010</comment>


Which MySQL Version to Use, and Why? - <AUTHOR> http://deafbysalami.blogspot.it/2013/08/which-mysql-version-to-use-and-why.html <comment><USER2> Thankfully there are RDBMS engines where you can upgrade to a recent version (not necessarily bleeding edge and after appropriate testing), gain feature and performance improvements, without the apparent fear of the unknown the author has. Stability and age are not always tied to each other in software.

If the mindset in this article is any example of how DBAs responsible for MySQL must think to survive, then it is no surprise why so many other bad choices in data storage are made in an attempt to avoid SQL/RDBMS - when what needs to be avoided is MySQL.</comment>


Snail Mail Push Alerts to Your Mobile Phone - <AUTHOR> http://www.boingboing.net/2011/01/19/snail-mail-push-aler.html

<comment><USER2> awesome. couldn't you make your own makeshift home alarm system with this?</comment>


LIFX reaches goal of $100,000 in 1 day . 59 to go.. - <AUTHOR> http://www.kickstarter.com/projects/limemouse/lifx-the-light-bulb-reinvented?plegged

<comment><USER2> Totally buying one.</comment>


STIs may have driven ancient humans to monogamy, study says - <AUTHOR> https://www.theguardian.com/science/2016/apr/12/stis-may-have-driven-ancient-humans-to-monogamy-study-says <comment><USER2> I don't think there is a lot of evidence that ancient humans where monogamist. Genetic studies have shown modern humans are significantly mess monogamist than generally thought.</comment>


Buying and Selling stocks with maximum profit - <AUTHOR> http://codingismycraft.com/index.php/2020/07/05/buying-and-selling-stocks-with-maximum-profit/ <comment><USER2> Commenters should note the constraint in the problem definition that the maximum number of buy-sell pairs allowed is two.

</comment><comment><USER3> Maybe I'm missing something, but none of the solutions given seem to offer optimal strategies, and the optimal solution appears to be pretty trivial. For example, the first price list given is [7, 3, 13, 13, 6, 19, 10, 8, 15, 18], why not have buy/sell pairs at 3-13, 6-19, 8-18 for a total of 33 (better than the 26 which they offered as an optimal solution)?

You can get a O(n) solution by just looking ahead to the next price and buy at all the local minima and sell at all the local maxima.

<comment><USER4> The challenge is to make no more than two buy-sell transactions: "we must find the maximum profit that can be made assuming at most two no overlapping BUY – SELL transactions."

<comment><USER3> The limitation of 2 buy-sell transactions and no overlapping buy-sell transactions are orthogonal. My solution listed 3 buy-sell transactions, but none of them are overlapping.

Edit: I see now that it says "two no[sic] overlapping" trade pairs, which invalidates my solution.

</comment></comment></comment><comment><USER5> The page claims

>[7, 3, 13, 13, 6, 19, 10, 8, 15, 18]

>the maximum profit that can be made is 26 which is made as

>follows:

>Buy at 3 – Sell at 19, Buy at 8 – Sell at 18

However wouldn't profit be maximized with

B3, S13, B6, S19, B8, S18 for a total of profit of 33?

<comment><AUTHOR> The problem states that the maximum number of transactions are two: We are given a list of integers representing stock prices; we must find the maximum profit that can be made assuming at most two no overlapping BUY – SELL transactions.

<comment><USER5> Apologies, thanks for clarifying.

There is a small typo which I think caused me some trouble parsing the sentence. In hindsight however the problem definition seems clear.</comment></comment></comment>


Ask HN: How can I improve my personal website? - <AUTHOR> I'm a senior in university who is looking for a full-time software engineering role.
Is there anything unintuitive about the flow or layout of the site? Is any of the content lacking?
Here is my website: genohta.com <comment><USER2> Personally, I don't like it.

As for positives, I think you achieved your goal with the design and interface. It's clear what you were trying to accomplish, and aside from a couple of minor issues, it works, and you executed the concept well.

Now, the negatives. During my first visit I closed the page within a second, and I was going to visit another post on HN instead. I saw the page, figured it was another gimmicky 'terminal' site, and didn't want to go along for the ride. However, I gave in after I closed it, and thought I'd make an effort to leave feedback. So, I revisited and typed 'hello'. The site then asked if I needed help. I typed 'no' because I just said hello, didn't need help or a tutorial, and I wanted to see the content. Well, apparently 'no' was an invalid command, so I typed 'yes', and that caused the navigation to display. In short, skip the help step completely, it's annoying and serves no purpose. Either go from 'hello' to the navigation, or go straight to the navigation when the site loads.

My only other feedback is to scrap the idea and setup a normal website. If I'm visiting your site, I'm looking for your qualifications, and I certainly don't want to jump through hoops and waste time playing a terminal game. In my opinion, it seems amateurish. I'd much rather prefer a one page website that starts with your photo, name, a one line introduction, a few sentences about yourself, a list of qualifications, projects you've worked on, and contact information. I want to scroll down that page in about 5 seconds, and know if I want to contact you.

</comment><comment><USER3> It tries to be both technical and conversational while committing to neither. On first glance it looks like a terminal bot but I don't think it speaks towards your potential skills.

For example it says "Why don't you say hello?" \- my first instinct was to say "hello" but it responded with "do you need any help?" to which I replied "yes." Nothing happened - a net negative interaction.

Throw out the frills. Sell yourself and your skills - if you want to be hired. Demonstrate what someone would expect from your work. Generic and accessible goes a lot further than quirky obfuscation. In many circumstances, the terminal expert is not the only one looking at your portfolio.

<comment><USER4> Mobile friendly would be a major point too especially if someone is looking you up on the go. That way you at least have a working fallback.

<comment><AUTHOR> Thank you for your feedback! Yes, a mobile version is in the works. I definitely agree.

</comment></comment></comment><comment><USER5> The top of the CV in PDF form gave me way more information about yourself than the website gave for 4ish minutes clicking around.

I learnt that you'd into scripting languages, have (claim, it's a CV) database skill, bunch of infrastructure skills. The CV is pretty good given that's what you're trying to put across, a technologist with an infrastructure/scale twist.

The website before finding the CV made me thing 'Is this guy React or Angular'? And nothing more.

</comment><comment><USER6> Perhaps you could consider, as another poster suggested, that you're talking to two different audiences. One is technical.. a 'terminal expert'. And one probably isn't.

Have you ever had a simple ping command running on your terminal and had someone exclaim "Wow! That looks technical!" with a hint of fear in their voice?

Perhaps you should offer the user a chance to explore this terminal interface of their own accord? "Click here to see my technical portfolio" \- which then takes the user to a page of different apps, this one included. And otherwise default to a less technically demanding interface to start with.

You may get lucky, and the recruiter may be totally technical. But even if they are technical, and your page isn't immediately a terminal, allowing them an opportunity to easily get to it may be a good compromise.

Hope that helps!

</comment><comment><USER7> Not a major issue, nor does it deal with your website but - your resume should be in LaTeX!

How to:

\- Copy the source code from a .tex template[0] you like.

\- Create an account at ShareLaTeX[1].

\- Start a new blank project, name it 'firstnamelastnameresume' (always save your resume with your first name, last name, followed by the word resume).

\- Delete the code in the main.tex file and paste the code from the .tex from the template you would like to use.

\- Edit the file with your content.

\- Recompile to preview resume.

\- Then download the PDF.

[0]: [https://www.rpi.edu/dept/arc/training/latex/resumes/](https://www.rpi.edu/dept/arc/training/latex/resumes/)

[1]: [https://www.sharelatex.com](https://www.sharelatex.com)

<comment><USER8> I would personally remove the "objective" portion from the resumes. It's known to all parties involved what you are looking for is a job, you don't need to spell it out to them and it uses space that could be better used.

</comment></comment><comment><USER9> I would make the terminal navigation optional. Have the welcome message show the pages, and make them clickable. That wasy technical people can still explore the TTY based website, but 'pure' recruiters could also find their way.

</comment><comment><USER8> It's a cool idea but I think it would be better as a project your site links to then the site itself.

Keep in mind the main reason people are going to your site, they want to judge you for hiring. Also remember this person has probably looked at a lot of resumes already and is planning to look at a lot more. The terminal interface is fun but if I was looking to hire I would close it and move on because it's going to take way to much time for me to get to the information I want.

</comment><comment><USER10> You can be more friendlier and intuitive with the text design - I went to projects mistyped 1 the first time (used "a") and then tried 1 again and it seems to have put me back at the base level.

If you can make the text interface as easy to noobs as point and click you will make a good statement.

</comment><comment><USER11> Hey, just a couple of ideas:

\- arrow keys are not moving the visible cursor (although they are moving the cursor position, backspace removes different character than from the visible cursor position)

\- why not a command for opening a pdf from the command line?

\- provide a page for non technical people, so they can see something without the command line

\- add more help info

\- why not pdf in console text output?

\- a the beginning there is a question "do you need any help", when I just answer it with 'no' I get error

</comment><comment><USER12> If you go through the trouble of emulating a shell, the least you could do is to make sure most commonly used commands worked (like ls, cat, tail etc) but maybe that is just me.

I would probably have made this as a seperate gimmick on a "normal" web site.

</comment><comment><USER13> I think this is cool but I agree with others that it may miss the target for some recruiters. There should be an 'easy' option that is more like a typical portfolio site.

A small UX suggestion is that the projects command should be able to take an integer as an argument and show that project e.g.

$ projects 1

^ takes you directly to the capstone project view.

</comment><comment><USER14> it should have keyboard shortcuts which will help visitor to not type the full word (Ref. [https://github.com/madrobby/keymaster](https://github.com/madrobby/keymaster))

</comment><comment><USER15> time, it's all about time or lack of it. So if a person is hiring and goes to your website... they aren't going to type help, then resume, then open the pdf... which could be infested with malware (just kidding). too many clicks. research potential companies you might want to work for, pick up the phone, network etc

</comment><comment><USER16> It should support tablets

</comment><comment><USER17> Does not work on mobile.</comment>


Dole, a Full Stack Banana Company - <AUTHOR> https://www.flexport.com/blog/why-dole-owns-container-ships/ <comment><USER2> I have seen these containers firsthand and didn't give them much notice -- it's amazing the sort of thing that can be right there below the surface when you begin to look deeper.

It was an awesome sight though, the containers all lined up in perfect rows.</comment>


Pan Galactic Division - <AUTHOR> http://arxiv.org/abs/1504.02179 <comment><USER2> I casually started reading this, and then had this feeling that the style and humor was familiar. Then I realized this was by my abstract algebra professor! Rich Schwartz is a brilliant guy, and pretty much the reason I became a math major. If only all professors had his magical math-explaining powers...

</comment><comment><USER3> I wonder if a longer example of a game would be helpful.

I also want to print up a deck of cards that includes the ape, chicken, bolt and ... whatever that thing is cards.

</comment><comment><USER4> ... gargle blaster. (There, you're welcome.)

<comment><USER5> I read the article hoping to find the name of that card. Gargle Blaster is perfect. Thanks.</comment></comment>


Microsoft's Software is Malware - <AUTHOR> https://www.gnu.org/proprietary/malware-microsoft.en.html <comment><USER2> Apple page here: [https://www.gnu.org/philosophy/malware- apple.html](https://www.gnu.org/philosophy/malware-apple.html)

</comment><comment><USER3> The most vulnerable users are the ones who do not have a clue about technology. Fortunately, most of them have moved on to phones and tablets, mostly running Android. Windows is way less of an issue nowadays. This trend places the burden squarely on Google, who may find themselves under pressure from governments to carry spyware. It is also a question of more often getting alternatives like cyanogenmod and/or replicant pre-installed on phones and tablets. We also need more work done on reproducable/deterministic build, in order to make sure that the system image is truly an unaltered build from the sources at hand. Of course, there is also a pressing need for source-code level inspection and verification, but that is not new either.

</comment><comment><USER4> There's some valid points here, definitely. I'm using Windows 10 on most PCs, but not my main PC where I do most things, until Microsoft answers to their telemetry concerns, or I select one of the many telemetry-blocking tools currently out there.

But the FSF's usual warlike tone against anything not free software creeps in here heavily, and sours the validity of the article.

</comment><comment><USER5> Really? This article comes from a deeply warped perspective, and here's why:

I have an elderly relative who just upgraded to Windows 10. As things stand right now, she doesn't have any problems with her computer. She doesn't have any problem with the fact that you have to upgrade periodically to enjoy new features and better usability. The only reason I know about this at all is because she brought it up at dinner, to remark about how easy it was to install and how much better she likes over the last version. (As a perfectly content Mac user, I didn't know what to say, aside from "that's great!")

When reading FSF/GNU agitprop, I can't help but imagine the disaster that would follow if someone were to replace Windows with pure GNU software on her computer (or OS X on mine). If malware is software that does you harm, GNU software is malware for everyone that is happy with the non-GNU software they've chosen.

</comment><comment><USER6> Microsoft's Software is to generic.

Does that include the MIT licenced software made by MS too, the Apache licensed?

Like the extremist they are GNU are using absolutes.

</comment><comment><USER7> No, no.</comment>


Ask HN: What do you do when you're waiting for something to run? - <AUTHOR> I find that when I need to wait for something to run (a compilation, a jupyter notebook cell, a script, etc) is when I'm most prone to embark on something distracting.
The common train-of-thought is "I'm just gonna check _____ for a second while this runs." And then it's never just a second.
What do you do? <comment><USER2> Go make coffee for 10 minutes, and then come back to realize that the thing I meant to run was waiting for input via a prompt before actually starting.

</comment><comment><USER3> I work from home now and I solve rubik cube, randomly strum my guitar, and juggle balls while waiting for something to run.

I used to check random stuff on the internet ( social media , HN, reddit or youtube) but I found them very distractive. So, I ended up picking something that are not related to internet.

</comment><comment><USER4> 1\. Document the things I'm doing in a wiki to save future time.

2\. Research ways to optimize/automate the long-running task.

</comment><comment><USER5> I believe the industry standard is "have sword fights in the hall" [https://xkcd.com/303/](https://xkcd.com/303/)

</comment><comment><USER6> I have the same problem.

When working from home I have some weights on my desk, I do a few quick exercises.</comment>


Ask HN: Would you like to receive or provide mentorship? - <AUTHOR> Would anyone be interested if I created a directory of mentors across tech who you could reach out to in order to have 30-minute chats over coffee, tea, boba, phone, etc.? You could chat with people to get career advice, explore different roles and companies, and discuss fun questions like "What are the ethical implications of working in an industry that affects the lives of billions of people around the world?" and "Should I sell everything I own to buy bitcoin?" If you're interesting in receiving mentorship and would like to get updates about this project, you can fill out this form: https://forms.gle/pyQM5GnXGgsHhufRA
If you're interested in providing mentorship, please fill out this form (https://forms.gle/JqfPKzxRZa5qSwFg6) and I'll reach out with next steps. The only qualification required to be a mentor would be having experience working full-time in tech. Since people will reach out to you based on your background, you don't need to worry about whether you have enough experience to be a "mentor" — you can view the chats as sharing your experiences and perspective rather than giving The Best Advice Ever.
Thanks! I'd like to gauge interest before investing more time into this (planning to build this out if I get > 100 interested mentors). <comment><USER2> I do mentoring for managers and primarily get all of my signups from here or twitter when I mention the program in response to a specific thread / topic. At this point, I wouldn't likely "list" myself because I'm able to fill up my calendar in full without any outside help. I do one 45 minute session each business day, and I'm usually booked up a few weeks in advance.

I'm sharing this not to discourage you, but highlight a potential downside where the quality of the mentor (someone who has a lot of practice mentoring strangers) might not lean in to a directory listing. I might be totally wrong about this though, so take it with a grain of salt.

One additional recommendation is to require mentors to use calendly or some scheduling software that people can use for scheduling a session. It keeps the process moving really efficiently and services like calendly let me blend my work schedule with my mentoring schedule seemlessly.

Good luck either way! Hope it's a smashing success.

</comment><comment><USER3> A lot of people are significantly interested in this. Just look at the responses this person's mentoring threads get on Twitter: [https://twitter.com/shehackspurple](https://twitter.com/shehackspurple)

One thing though. There seems to be some internet shyness ppl have in getting the ball rolling on these kinds of mentoring projects. Would try to plan to deal with that fear of either party reaching out.

<comment><USER4> Oh, this is very, very cool. Seems like a lot of people would be helped by a tool that makes it easier to search/find availability/lowers the friction to both providing and receiving mentorship. Thanks for sharing!

</comment></comment><comment><USER5> I offer private mentoring in full-stack development and more on a regular basis. I believe most mentoring relationships start with the people around you, at least mine did. I'm not sure how well a directory like this would convert for the individual mentors, but I think it's a great idea to try out.

</comment><comment><USER6> There are few people who do this already. You can collaborate with them. Have you checked out:

www.outofofficehours.com

www.twoleaps.com

<comment><USER4> Awesome, thanks for sharing these!</comment></comment>


Nassim Taleb: A Definition of Antifragile and Its Implications - <AUTHOR> https://fs.blog/2014/04/antifragile-a-definition/ <comment><USER2> I've been a fan of Nassim Taleb for a long time. Say what you want about him as a person or his language on Social Media but the man has come with some real original and profound ways to look at the world. "Fooled by Randomness" remains my favorite book from him.

<comment><USER3> Fooled by Randomness is a great pick up and read a random chapter kind of book, even when you've read it cover to cover - also my favourite.

One thing to his credit, he acknowledges his influences such as his huge admiration for Mandelbrot.

</comment></comment><comment><USER4> A blog post like this tries to dumb 3 books of Taleb in 500 words without adding actually more than functioning as a summary. Read the books , take the time and enjoy the conversation with Taleb himself. You can't cheat on learning.</comment>


25 Tools I Use to Run and Grow My Freelance Business - <AUTHOR> https://medium.com/@gsto/25-tools-i-use-to-run-grow-my-freelance-business-b72ad806859#.gby5kqhhd <comment><USER2> Why the obfuscated referral links? I won't flag this because submitting your own blog post with a list of hidden referral links is technically not against the submission guidelines, but credibility is important when reading recommendations from strangers. Hiding referral links behind redirects isn't helping build credibility.

I checked the first link with a third-party link expander and saw the referral code, then closed the tab without reading further.

</comment><comment><USER3> Thanks for posting this, It made me aware of a few things that may be helpful.

Oddly a program I love to use is Onenote, I find it so useful when taking notes/saving links/files etc, and shares between pc and phone so I can access it.</comment>


Following removal, KDE Connect approved back in Play Store with SMS support - <AUTHOR> https://twitter.com/albertvaka/status/1108648884056834048 <comment><USER2> Glad it's back in, but I don't think I'll move away from the F-Droid version now that I have it installed.

I'm not looking forward to Android Q in respects to KDE Connect functionality because apparently they stripped away clipboard access and as of right now there isn't a permission to allow access. Hopefully they address this before the final release.

</comment><comment><USER3> I wonder how likely it is that the reversal happened because a Google employee reads HN and saw the community backlash.</comment>


How to achieve 4 flops per cycle? - <AUTHOR> http://stackoverflow.com/questions/8389648/how-to-achieve-4-flops-per-cycle <comment><USER2> Getting the theoretical peak performance requires either extensive manual tuning on each architecture or exhaustive search. To read on the former see [http://www.nytimes.com/2005/11/28/technology/28super.html?pa...](http://www.nytimes.com/2005/11/28/technology/28super.html?pagewanted=all), and the latter is done for example in the ATLAS BLAS.

It is important to note that the SO discussion is focused on achieving peak flops when the data is already in the XMM registers. The real bottleneck is pushing the data quickly through the levels of the memory hierarchy.

<comment><USER3> Its worth noting that ATLAS is actually pretty terrible compared to hand written BLAS.

Figure 2 and 3 in this paper ([http://cran.r-project.org/web/packages/gcbd/vignettes/gcbd.p...](http://cran.r-project.org/web/packages/gcbd/vignettes/gcbd.pdf)) show atlas is only better than an unoptimized ("reference") BLAS implementation and that it is many times slower than the winner GotoBLAS (now OpenBLAS <http://xianyi.github.com/OpenBLAS/>), which is written assembly by Kazushige Goto while he worked at the Texas Advanced Computing Center.

Edit: Article in the NY Times about Mr. Goto [http://www.nytimes.com/2005/11/28/technology/28super.html?sc...](http://www.nytimes.com/2005/11/28/technology/28super.html?scp=1&sq=Kazushige%20Goto&st=cse&_r=0)

</comment></comment><comment><USER4> This is a very interesting exercise

CPUs are very capable today, unfortunately, to get 'every last drop of performance' is very difficult.

I'd say that CPUs are more complex than compilers can optimize the code for them.

Of course, manually optimizing for something like this is "easy" (if you have a somewhat deep knowledge of Intel's manuals)

Now for "everyday computing" this gets tougher, even though compilers do a good job (good, not great) and it's usually good enough.

So you end up going to the deeper details in time-sensitive things: games, video processing, etc

There are some tools (from Intel and AMD, even though I tested only the AMD one some time ago) that tells you 'everything' that you need to know about how good your code is. For example, IIRC, if you load a register then immediately store to it (or store then load, I don't remember), there's a stall, so you can do something else in between

</comment><comment><USER5> I always get a mild wave of depression after reading stuff like this, because of how absolutely much I do not know.

</comment><comment><USER6> I'm a bit surprised by the most voted answer by a user who has 80K rep on SO.

By this part:

 _"If you decide to compile and run this, pay attention to your CPU temperatures!!! Make sure you don't overheat it. And make sure CPU-throttling doesn't affect your results!"_

Fair enough for the CPU throttling.

But did the nineties just call? Computers dying due to CPU overheating was all scary and spooky back when we were running old AMDs and old Pentium CPUs but I haven't own any CPU that could die due to overheating since a very, very long time. They do automagically throttle to: a) make sure they stay within their TDP specs b) make sure they don't melt.

I mean: honestly, scientists should start to worry about overheating their CPU that are going to melt?

<comment><USER7> I'm a bit surprised by your smug attitude.

<comment><USER8> So being correct, raising an interesting issue and discarding urban myths is smug now?</comment></comment></comment>


JavaScript Fatigue: Realities of Our Industry - <AUTHOR> http://lucasfcosta.com/2017/07/17/The-Ultimate-Guide-to-JavaScript-Fatigue.html <comment><USER3> These statements are false:

> " _Software does not exist to please us as programmers and let us write > beautiful code. Neither it exists to create jobs for people in the tech > industry. Actually, it exists to kill as many jobs as possible, including > ours_ "

Software exists for whatever reason we want it to exist.

I started programming when I was 12 and that was 23 years ago. I sure as hell didn't start programming to solve business needs or to kill jobs.

In fact this mentality is what I find most upsetting about the industry. Tell a software developer to pick a problem and solve it and he'll almost always look at automating existing workflows.

There's this saying that most business software is about automating an Excel spreadsheet shared by email and it's true.

But it doesn't have to be that way. Software could also empower people to do things they wouldn't have dreamed of doing before. Just like with musical instruments, which are empowering people that don't have a voice to produce music. And we don't have to look far for such examples. Just the other day I was reading about a nice app by Microsoft helping the blind to see.

Software's purpose, if it has any, is to be an extension of our minds.

As for the fatigue, that happens because it's 2017 and we are forced to use tools that can be worse than those available in 1980.

Of course, such tools wouldn't be successful if many of us weren't guilty of anti-intellectualism. Just look at how many six figures professionals bitch and moan about having to understand what a Monoid is, even though it's part of standard high-school curriculum in some countries, like Romania.

<comment><USER4> Also are you kidding about Monoids? No way category is part of any General Education curriculum.

<comment><USER5> Sure is, I can confirm for Romania. We studied it as part of 12th grade algebra (last year of highschool, in Romania).

If you don't believe my personal anecdote, here: [http://www.meditatiionline.ro/44100-122-411-0-0-Formule_Mate...](http://www.meditatiionline.ro/44100-122-411-0-0-Formule_Matematica_Grupuri_Structuri_algebrice_Monoizi.html)

(site is -- obviously :-) -- in Romanian, but it's pretty clear)

It's material specifically targeted at 12th grade students, in normal highschools.

</comment></comment></comment><comment> le-mark There are a lot of questionable ideas in this piece.

> Nobody cares about which programming language you are using, nobody cares > about which frameworks your team has chosen, nobody cares about how elegant > your data structures are and nobody cares about how good is your code. The > only thing that somebody cares about is how much does your software cost and > how much revenue it generates

I agree with this to a point. The business cares about code quality so far as it effects the ability to deliver new features and maintenance, which in reality means they care quite a lot. They don't understand, and they can't express it, but they do. I work on a legacy app now that is so brittle the team takes months to deliver features, and they're buggy and error prone. This team is competent for the most part too.

> JS Fatigue happens when people use tools they don't need to solve problems > they don't have.

I think the concept the author is going for is best elucidated by Fred Brooks in "No Silver Bullet"[1] when talks about _accidental_ and _essential_ complexity. The idea that there's the complexity of the domain/problem and the complexity we introduce as part of the solution, such as build systems, cross compilers, mvc frameworks etc...

> The JavaScript ecosystem nowadays is responsible for the global revolution > the same way steam engines were responsible for the first industrial > revolution

I really can't imagine a scenario where this is true. I'd prefer to see some clarification what revolution the author is referring to exactly.

[1] [http://www.itu.dk/people/hesj/BSUP/artikler/no-silver- bullit...](http://www.itu.dk/people/hesj/BSUP/artikler/no-silver-bullit.pdf)

<comment><AUTHOR> Hi le-mark,

Thanks for the feedback. I realize you're right about your last point about the industrial revolution.

That was totally my fault, I didn't intend for people to take that literally but I wrote it in a way that made it sound literal.

Since that was only an introductory statement I decided on removing that based on the facts shown here later in other to avoid deviating from the post's main subject.

Thank you very much for sharing your thoughts!

<comment> le-mark Ah ok, hyperbole can be an effective oratorical device, I use it myself from time to time. It's tricky though.

<comment><USER6> Side note - this type of exchange is why I love HN. It's like Reddit for mature adults.

<comment><USER7> >It's like Reddit for mature adults.

The immaturity has simply been replaced with smugness and elitism.

</comment></comment></comment></comment></comment><comment><USER8> I think what this doesn't address is why fatigue is more of a problem is JS than in other languages. You rarely hear about Ruby fatigue, Python fatigue, etc. Is the insane turnover rate of JS tools really essential to writing great software?

I finally started to feel the fatigue with the React and Webpack takeover. I was really into them at first, but I realized that while I was constantly learning new tools, my software wasn't really improving, in fact all the constant changes with upgrading tools was causing a lot of headaches and bugs. And at the end of the day, a good dev can create the same app with react and webpack, or coffeescript and ember, or plain old JS and jquery.

In short, JS fatigue game me premature "get off my lawn" syndrome and I actively avoid front end work now.

<comment><USER9> I think JS has this problem because of constantly high inflow of new developers who easily get on new boats. They cannot differentiate between old and new tools (except for hype and cv-driveness), and new tools don't kill their productivity as much. Personally I never made it into frontend because learning basics makes me sick of html/css/js trinity, and learning advanced tools is a neverending war. Advanced js programmers feel that and try to create more tools, shorting the circuit.

(Otoh, programming has changed since our youth time. Back then we programmed for one local, now we do it for thousand remotes. Latency penalties turned upside down literally, storage is faster than SIMM, ui is slower than FDD.)

Since web 1.98a* we stopped to look at program as a whole and separated it into frontend and backend. That was a key point that allowed so much divergence and frustration. It may sound crazy, but we need new, more low- level browser (don't even call it browser, it is a network layer) that could seamlessly connect single heterogenous app on two network endpoints, since no one really cares about underlying protocols anymore. Leave www rot in browser and make internet apps great again. All good tools from '95 are still here.

* you cannot call something 2.0 until it has at most 2-3 generic and mature ways to do everything.

<comment><USER10> Why do we need new stuff? What's wrong with the existing ways of connecting processes over the network?

<comment><USER11> the effort required to write boilerplate code over and over again with no standard way I would guess...

</comment></comment></comment></comment><comment><USER12> I totally agree with the article, but i also find it ironic because this guy got his platform speaking at conferences which IMO as the root of JS fatigue.

If we didnt have JS conferences we wouldnt have the level of hype that goes into the next-new-shiney-thing. We wouldnt have a platform for companies to sell ideas and platforms to programmers that they dont need, and we wouldnt have the blog posts and opinions of people who go off to create new solutions to old problems etc etc

I totally agree JS fatigue is just another facet of capitialism. You are a programmer, and just like in the gold mining days, the people who got rich were the people spruiking wares to the miners.

Just like how Apple tells u, u need an iphone to be cool, the JS conference tells u, u need a framework to be cool.

And the key thing to remmeber is - dont beleive the hype. read the code, and make an informed choice. Every dependency in your project should be treated like a matter of life and death.

</comment><comment><USER13> From the article:

 _" Complaining about JS Fatigue is just like complaining about the fact that humanity has created too many tools to solve the problems we have..."_

Um. No. (Full stop.)

JavaScript et al is evidence that the cone of ignorance expands faster, further than the cone of experience. Wisdom can never overtake, vanquish the chaos.

Many geeks thought rationality would win. Like a natural law. Alas.

Complaining is just stage 2 in the bereavement cycle.

With respect to JavaScript, I'm now in stage 3. Because I have to make rent.

As for the creators, champions, defenders of JavaScript, I relish the certainty that in a few years they'll be complaining about whatever garbage succeeds them. Payback. I hope it sucks.

[https://psychcentral.com/lib/the-5-stages-of-loss-and- grief/](https://psychcentral.com/lib/the-5-stages-of-loss-and-grief/)

<comment><USER14> I laughed out loud at this.

There's two types of these guys:

1 the ones who don't know what they did was awful and are thinking about how great they are

2 The ones who know what they did was terrible and are imagining how their shit tastes in our collective mouths

Alas, both types are happily retired from book sales and conference speaking fees, so...

</comment></comment><comment><USER15> Everyone wants to make developer tools for street cred, and the github 'social coding' culture is just a vehicle for self promotion. I agree that in the blogs and conferences there's not enough focus on solving business issues, but people should care about languages, because it also is a business issue as others have pointed out. An example: if I worked in a AAA game studio and I decided to write a critical feature in haskell and then quit, will my boss and coworkers care? Maintainability of code, documentation quality and testing are not prioritized enough in the community and conferences which is why i feel there is so much churn, and we get a new programming language every second friday. ie the new tools are the symptom, not the cause of the problem.

</comment><comment><USER16> The writer has nailed it for me.

> Software does not exist to please us as programmers and let us write > beautiful code. Neither it exists to create jobs for people in the tech > industry. Actually, it exists to kill as many jobs as possible, including > ours, and this is why basic income will become much more important in the > next few years, but that's a whole other subject.

<comment><USER17> I dunno about this. Automation of tasks that used to be manual is real, but software goes beyond this.

A lot of software allows new or better technologies which can be used to transform the human experience. Such as video games, flight control systems, video conferencing, etc. Other can save lives, such as radio therapy controllers, alarm systems, pace makers, etc. Some can take it away more effectively, like guided missiles, self manned aircrafts, etc.

Just wanted to point out it exists for more then just that.

Also, in the current market, a company who wants to retain good talent has to allow them some fun, amd giving them the choice of tools or language can be a good recruiting tool, or mechanism to keep good talent.

<comment><USER18> I agree that software does not just have to be about destroying jobs, but people are often working on projects that will kill jobs and won't acknowledge it.

<comment><USER17> In my experience people have always acknowledged it. Now did they care is another question.

</comment></comment></comment></comment><comment><USER19> This article fails to address the main problem: the javascript ecosystem is like a cancer: it spreads at an alarming rate and you just can't keep up and the quality of the tools converges to zero. Even the numerous [hiccups]([https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/](https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/)) don't make js devs realize that there are big problems at the heart of the javascript world. They are either blinded by the Blub paradox or just do it for the money. Most js devs don't even know what big O is and how do you expect someone to write a graph library (or anything involving the simplest of algorithms) without that knowledge?

At least there are languages which can be compiled/transpiled to js and WebAssembly is coming so I don't have to touch this abomination.

</comment><comment><USER20> > Nowadays something I see very often is people looking for boilerplates when > they're trying to learn a new technology, but, in my opinion, you should > avoid boilerplates when you're starting out.

The top of the top JS Fatigue I've seen, for a while, is Electron React Boilerplate [1]. Just take a look at dev dependencies [2].

I totally agree with the author with not starting with a boilerplate, but as far as I can see, the community thinks the other way around.

1: [https://github.com/chentsulin/electron-react- boilerplate](https://github.com/chentsulin/electron-react-boilerplate)

2: [https://github.com/chentsulin/electron-react- boilerplate/blo...](https://github.com/chentsulin/electron-react- boilerplate/blob/4fbc20253374bd2b378ef8dfbff37566eb83cc45/package.json#L118)

</comment><comment><USER21> I think that a problem in the JavaScript community is that some projects and people rise to the top extremely quickly and this creates undue hype - <USER2> developers just pile onto the latest shiniest ideas and abstract concepts without actually doing the due diligence for themselves in a real-world practical setting.

Eventually, developers realize that while the over-hyped tool or framework that they're using does add a form of theoretical elegance to their project, it also carries crippling non-obvious overheads which slow down real-world development overall.

I think it's important not to buy into hype. When evaluating and selecting a framework or library for a project, if it has had a lot of hype then instead of marking that as a positive on your checklist, it should be marked as a neutral or sometimes even as a negative.

</comment><comment><USER22> > Technology is not a goal. Nobody cares about which programming language you > are using, nobody cares about which frameworks your team has chosen, nobody > cares about how elegant your data structures are and nobody cares about how > good is your code. The only thing that somebody cares about is how much does > your software cost and how much revenue it generates.

This. Technology doesn't matter, if your code doesn't fulfill a mission.

<comment><USER23> And it may brings back a little bit of humility in our field. There's often no need for a hammer, as shiny as it is, to crack an egg open.

Sometimes quick and dirty makes clients happy, and sometimes this is all that matters.

<comment><USER24> While this is certainly true it's also our responsibility to consider the long term well being of a client rather than just their temporary placation with a bit of sugar. Picking apart what people actually need from what they claim to need is an underrated skill.

<comment><USER25> > _our responsibility to consider the long term well being of a client_

True, but I don't think the answer is just "framework" either. A more thorough analysis of many of these scenarios would likely yield a surprising number of cases wherein the answer is _not_ framework, if all tradeoffs were earnestly considered.

For instance, a couple of short years ago it would have been seen as responsible to build on Angular 1.x. Today, those clients are stuck with an obsolete, underperforming stack that has been deprecated with no reasonable upgrade path.

In some ways, knowing what we do about the ever-changing framework landscape, a reasonable argument could be made that it's almost irresponsible to recommend dependency on these ever-heavier, more intrusive, monolithic behemoths.

</comment></comment></comment></comment><comment><USER26> The progression from AMD to CommonJS and all the additional tooling that required is one of the worse things to happen to JS, but it's treated here like just a natural progression from worse to better. AMD actually works in browsers given the features they have. CommonJS requires tooling to function and IMO started the avalanche of tools we need today.

JS modules cannot come soon enough. I only hope Node doesn't screw things up for browsers too badly with its modules support.

<comment><USER27> There was nothing wrong with AMD loading, but the Js developers really wanted to use their bloated frameworks. We're several years in. Everyone getting their advanced Js applications faster? Exactly.

I like Js.

</comment></comment><comment> FLUX-YOU >which is why it is extremely important to know the problem domain we are working on

To a point. Time spent learning the business domain can't be spent on finding new tech products. If you don't explore new tech products, you are potentially missing out on something that would further allow you to maximize revenue and minimize cost or generate new revenue streams or offer some new service that the business wants.

While learning the business domain from people, you're taxing people who could otherwise be working on business problems. There is communication overhead you can't get rid of. You can fatigue someone with domain questions as well. I can't go bother a surgeon any time I feel like it for surgery software feedback -- the guy's likely busy saving lives.

If you're lucky enough to get a mentor who's willing to spend time to teach you the field from an entry level, great, but realize that person could be addressing problems with their expertise and are paying an opportunity cost to teach you, which could translate to revenue or reduced costs.

If you're going to teach yourself to be good at two entire fields, programming and your problem domain, then you're spending a lot of time on that. There might be jobs to tide you over, but again, what else could you be doing with this invested time?

</comment><comment><USER28> " __JS __Fatigue happens when people use tools they don 't need to solve problems they don't have"

Why JS only? This statement applies to everything, not only development.

<comment><USER18> Yes - the specific JS Fatigue is thus an instance of a more general type of fatigue. As it is often the case that specific things turn out to be instances of more general things.

</comment></comment><comment><USER29> Original site appears to be down, but Internet Archive has a mirror: [https://web.archive.org/web/20170727012317/http://lucasfcost...](https://web.archive.org/web/20170727012317/http://lucasfcosta.com/2017/07/17/The- Ultimate-Guide-to-JavaScript-Fatigue.html)

</comment><comment><USER30> It would be very nice if browsers were not so bad, and included more than just Javascript rendering engines. Like, I don't know, maybe Python? I am personally very tired of being tied into JS. I don't even like it as a language very much but since I'm a FED, I have to use it, or something that transpiles to it. This is not a very good paradigm.

</comment><comment><USER31> JS doesn't have a reasonable patch and release cycle, so it's always going to be a chore to try to keep up with discoveries and best practices. The noticeable uptick in releases for other languages are why it's such a joy to work with living languages, instead of the twisted JS world of half-measures and fallen-behind code.

<comment><USER32> Half and half.

Yes JS is a chore to keep up with because everyone can just push crap online willy nilly.

But the uptick in other languages is likely more because they are new and therefore there they have a virgin land advantage. Thus everyone and their dog jumps in to play with and stake their claim on fame and fortune.

Soon enough those languages will again be bogged down in half measures and fallen behind code.

This because while developers wants to play with new ideas and new code, users value stability and predictability.

<comment><USER31> > But the uptick in other languages is likely more because they are new and > therefore there they have a virgin land advantage.

That is incorrect. The languages in production that interact with javascript, might be a better way to think about it. They are all generally older than javascript (as opposed to dead, like ALGOL). The MS ecosystems and Java might have a bogged down problem in the future, but when even Lua is updated more frequently than JS, you might want to question the wisdom of the current processes.

</comment></comment></comment><comment><USER33> > _Reusable space rockets, self-driving cars, robots, artificial intelligence: > these things do not exist just because someone thought it would be cool to > create them. They exist because there are business interests behind them. > And I'm not saying the people behind them just want money, I'm sure they > think that stuff is also cool, but the truth is that if they were not > economically viable or had any potential to become so, they would not > exist._

This feels like an overly reductive assessment of why people write software. Is the author completely unaware of software projects or technology in which profit motive was not the goal? Are all the engineers at the Internet Archive just using IA as a stepping stone to joining a VC-funded firm? Is ESR just a big fake? And Woz, too?

While it's possible that everything we do in life -- from joining Tinder to hook up, or building Tinder's phone app with React Native and getting paid a high salary -- has no higher purpose than increasing the survivability and propagation of our genes -- there are folks who program and derive joy from building. This includes the early days of Sergey and Larry and Mark Z.

In any case, I'm not sure why this is a useful or interesting lens to view JavaScript churn with. The assertions in this article are just all over the place. In one line, the author writes:

> _Optimize when you need, otherwise you will probably be adding unnecessary > complexity to your software, which increases cost, and not generating enough > revenue to justify that._

And then later on (by "later", I mean the very next line):

> _This is why I think we should apply Test Driven Development principles to > everything we do in our job. And by saying this I'm not just talking about > testing. I'm talking about waiting for problems to appear before solving > them._

OK.

Maybe the author seems to have worked on projects in which problems reveal themselves, and do so in convenient serial order. But I imagine many people who end up in frustrating technical debt don't get in that situation willingly, but because life and work and problem solving are messy and chaotic.

> _Software does not exist to please us as programmers and let us write > beautiful code. Neither it exists to create jobs for people in the tech > industry. Actually, it exists to kill as many jobs as possible, including > ours_

I think basic income is a serious issue that we have to consider in the coming years, but I never understand why programmers can't think past their own jobs. When I write programs to automate work in my life, I don't think of it as writing software that puts myself out of a job, but writing software to enhance and augment my intelligence and productivity. Sometimes that helps my financial bottom line. And other times it let's me tackle even greater, more satisfying challenges.

</comment><comment><USER34> You won't find anything in any set of economic statistics that can offer the slightest justification for this statement:

"The JavaScript ecosystem nowadays is responsible for the global revolution the same way steam engines were responsible for the first industrial revolution"

That is ridiculous. Here is reality:

1.) Labor productivity has been in long-term decline, though computers did cause a temporary surge in the 1990s. See the charts in this post:

[http://www.bradford-delong.com/2017/07/monday-smackdown- repu...](http://www.bradford-delong.com/2017/07/monday-smackdown-republican- economists-burn-yet-more-of-their-reputations-department.html)

2.) Economic growth remains sluggish, especially compared to the post war boom of 1945-1973.

3.) The railroads sparked a massive investment boom. The only time computer technologies came close to triggering a similar boom was during the 1990s.

<comment><USER35> "Labor productivity has been in long-term decline"

If I read the graphs from the link correctly, they show that % productivity _growth_ is declining. Still it is positive thus the productivity by itself continues to grow. Hard to say from the graphs, but it looks like absolute productivity growth per year is bigger (or at least the same) as in the 50's: avg 2.5% growth over 60-70 years means ~5x increase of absolute value, thus 4% / year growth in the 50's is the same absolute value as ~0.8% growth today.

</comment></comment><comment><USER36> Actually I think that in many cases the technology is the goal. Much of programming is driven by love for the art and the craft and much programming is done primarily because its what people to choose to do because they love it.

Reducing all programming to meeting some business case defined by a business person is well.... not right.

<comment><USER32> And yet some of the biggest commercial software successes are just that, to hell with everything but the business case(s).

While at the same time massive elegant pieces of code get stuck in limbo because the people in charge keep chasing programming perfection.

</comment></comment><comment><USER37> I always thought of programming as the art. it needs you to be creative, it may give you moments of enlightening and desperation and happiness and depression. the article tries to persuade me that actually all that I do is reducing cost. sad.

<comment><USER37> Downvoters, do u care to elaborate?

</comment></comment><comment><USER38> Please stop calling it JavaScript Fatigue. The complaints are web development related(specifically the browser) not language specific. The distinction is important because people keep trying to compare the issues with other languages.

<comment><USER39> I am what the cool kids call a fullstack developer these days. I use JavaScript in the browser and on the server. My build tools are written in JavaScript. I also write JavaScript for the database (in fact, I am a contributor to a database that is _partially_ implemented in JavaScript).

It's absolutely a JavaScript "problem", not one that's specific to web development. Web development is certainly where it's the most prominent but the problem itself isn't at all related to the web.

JavaScript fatigue describes FOMO (Fear of Missing Out) as experienced by developers trying to keep up with rapid developments in tooling/libraries. It's not even really about the language, thanks to Elm, Reason and other new languages that joined the ecosystem.

You're right that it has little to do with the language, but it also has little to do with the niche. Anyone interested in DevOps experienced some degree of FOMO when suddenly Puppet, Chef and Ansible became a thing (being fundamentally different but also mostly doing the same job). If you just started out with Linux before Ubuntu pretty much became the mainstream starting point, "distro fatigue" was almost certainly a thing. It's just plain old FOMO, but with a tweetable buzzword attached to it.

<comment><USER38> Languages usually have a technology that drives their popularity. Javascript has the browser, and in my opinion the browser is the reason for most of the fatigue. Sure call it FOMO, and of course it happens in other domains, but web development has it particularly bad.

For example compare iOS development vs web development.

</comment></comment></comment><comment><USER40> I bet the author use space instead of tab.

<comment><USER39> If you write JavaScript and don't use two spaces for indentation you're being intentionally obtuse.

<comment><USER41> What why?

<comment><USER39> Because you don't exist in a vacuum and two spaces is the most popular form of indentation in the ecosystem.

But these days I recommend using an intelligent autoformatter like `prettier` when writing JS exactly to avoid any such discussions.

</comment></comment></comment></comment><comment><USER42> > Software solves business problems. This is it. Software does not exist to > please us as programmers and let us write beautiful code.

Code is a machine, and _elegance_ will always be important -- _bottom-line important_ \-- to making good machinery.

I see programming as a divine pursuit of truth that, as a side-effect, will automate the solution of all our problems (except for over-population. That one's on us.)

At this point the total amount of code in the world should be _contracting_.</comment>


When Young People Suffer Social Anxiety Disorder (2014) - <AUTHOR> http://careforyourmind.org/when-young-people-suffer-social-anxiety-disorder-what-parents-can-do/ <comment><AUTHOR> I myself suffer from severe SAD and find it difficult to leave the house let alone go to school or interact with peers. I'm 17 currently, but I'm afraid it's too late and that I will never get my dream job as a programmer, without school, and this leads me further into depression and isolation. Therapists haven't helped and I'm not sure who or even whether anyone can help me. I don't know what to do HN, help me...

<comment><USER2> I suffer from severe anxiety that is nearly crippling, it basically rules my life. Disclaimer, it's not social anxiety, more of a general crushing anxiety a majority of the time. But I wanted to write to offer some reassurance.

You are young, and with that is great and abundant hope for you; it may not seem so now, but your future could be very bright. When I was young, I felt that I would never be strong enough to make it past all of the sociological hurdles necessary to move in and up in this field. Like you, I do not feel that therapists have helped at all - honestly, for me I feel talking about things sends me into a tail spin of much deeper anxiety. It can be difficult making clinicians aware, but there are pharmacological solutions that do help - you need to be a team with your doctor, rather than letting them simply run the show (not to be presumptuous, you may already have this sort of relationship).

I managed to break into my field by doing a project on my own and showing what I was made of, then presenting it to the group I was displacing with the internal hope of selling it. Instead it landed me my first job - wherein I was initially underpaid, but it was still more money than I dreamed of making at that age (I was in my early twenties). I was quickly identified as a passionate (and opinionated) expert and received very large raises over the next several years with them. When I did finally leave, the experience I gained there, made bargaining a lot easier. It's important at that stage not to be manipulated, you still may find yourself too-fresh in areas of negotiation and end up going backwards in your career. So perhaps aim for folks who aren't used to hiring software engineers, so you both have some equal footing on the negotiating experience. After one or two jobs, your experience will speak for itself, and any "quirks" people may see with you, will be dismissed as "everyone is different" and you can be accepted for the brilliance you provide rather than the image you worry your anxiety elicits.

TL;DR, aim for small non-IT shops (eg. state & local government, factories that need programming, companies breaking the small to mid-size barrier that now need programmers), do projects to show your worth (maybe even work that would benefit them). Make a name for yourself and show your true brilliance.</comment></comment>


A bloodbath awaits commercial property investors - <AUTHOR> https://www.ft.com/content/739901a8-c601-4a81-b3e8-bb4f0eaa3e73 <comment><AUTHOR> > "... this will not be the momentary stumble followed by a V-shaped recovery > of administration and deal-sponsor lore. Investors will find this more like > being in a wheelchair pushed down a very long flight of stairs."

</comment><comment><USER2> With this spike in work from home and delivery, it could be that society have just realized that it doesn't need that much commercial property at all.</comment>


To Achieve Greatness, You Must First Acknowledge that You Suck - <AUTHOR> http://www.mrmoneymustache.com/2012/07/10/to-achieve-greatness-you-must-first-acknowledge-that-you-suck/ <comment><USER2> Ummm. Step 1 of any 12 Step program.

<comment><USER3> I think it is a bit more nuanced than that.

There are clearly differences between people who embrace the fact that they aren't perfect and thus are open to learning, and those who feel shame at not succeeding at something they consider themselves competent at.

Clearly its in the same genus as problems with addiction or habituated behavior but its a more easily overlooked.</comment></comment>


Why its best to get out of freelancer.com (NOW) - <AUTHOR> https://www.reddit.com/r/freelance/comments/2mhmje/why_its_best_to_get_out_of_freelancercom_now/

<comment><AUTHOR> Would love to hear how issues like these can be handled where the platform blames the user for issues with itself.</comment>