Online Master of Science in Computer Science - <AUTHOR> https://www.udacity.com/georgiatech?utm_source=sendgrid&utm_medium=email&utm_campaign=gatech79 <comment><USER2> Udacity should add more info about the courses...

 __Advanced Operating Systems __[http://www.cc.gatech.edu/~rama/CS6210-External/](http://www.cc.gatech.edu/~rama/CS6210-External/) papers! [http://www.cc.gatech.edu/~rama/CS6210-External/class- schedul...](http://www.cc.gatech.edu/~rama/CS6210-External/class-schedule.pdf)

 __High Performance Computer Architecture (2010, diff. prof.) __[http://www.cc.gatech.edu/~hyesoon/fall10/overview.html](http://www.cc.gatech.edu/~hyesoon/fall10/overview.html)

 __Software Development Process __[http://measure.cc.gt.atl.ga.us/classes/cs6300/](http://measure.cc.gt.atl.ga.us/classes/cs6300/)

 __Computer Networks (diff prof) __[http://www.cc.gatech.edu/~ammar/6250-Spring2012/](http://www.cc.gatech.edu/~ammar/6250-Spring2012/)

 __Machine Learning __[http://www.cc.gatech.edu/classes/AY2007/cs7641_spring/](http://www.cc.gatech.edu/classes/AY2007/cs7641_spring/)

</comment><comment><USER3> I'm really excited to see how this pans out. I'm finishing my BS in Computer Science this spring and am considering this for a Masters degree.

</comment><comment><USER4> I am a Georgia Tech alum. I had taken the Advanced OS class and High Performance Computer Architecture classes. My then roommate had taken the Networks class too.

I strongly recommend taking those classes, if you get the chance. The concepts they teach blew me away completely. These classes helped me make a conscious decision, to not be a regular programmer after I graduate. I wanted to be an engineer working on the hard stuff. For folks who have such motivation, these courses are amazing.

The professors are really great and love teaching. They will try to make the class fun (in nerdy ways). They are at the bleeding edge of research in their domains and know stuff inside out.

Beware:

\- These classes are non-trivial. Most of these classes cannot be done without full focus. So, if you are employed full-time, please reconsider. You more than likely need to devote 3+ hours everyday to study.

\- For example, Advanced OS class will require you to read 40+ research papers. You will actually have trick questions in mid-term and finals where you'll need to know intricate details of each paper to answer them correctly

\- Adding to the above point, the HPC class will have intensive math homework. There were problems to calculate IPC of a fake machine which took me 3 WHITEBOARDS to figure out the level of parallelism. If you have never taken a Computer Architecture class before, please re-consider.

\- Georgia Tech, notoriously, grades everyone equally. Meaning, you will not get any benefits for not being on campus. If they end up grading you with on- campus students, rest assured you are already behind. Not to mention, students taking these courses are mostly PhDs. They know the stuff inside out already.

\- Urban dictionary actually is very true in its definition of what this school is: [http://www.urbandictionary.com/define.php?term=georgia%20tec...](http://www.urbandictionary.com/define.php?term=georgia%20tech)

\- The grading system is ruthless. You will either get an A or B or C or D. There are no +ves and -ves. A = 4.0, B = 3.0, C = 2.0. In short, it is unacceptable to get even a B in all classes

\- These classes are not like a regular Udacity or Coursera classes. You will not learn any programming in them. They expect you to know programming cold. The students who take these courses want to know how computers work and are highly motivated. See the top answer by a Georgia tech student: [https://www.quora.com/Computer-Science/How-do-computers- work...](https://www.quora.com/Computer-Science/How-do-computers-work-the-way- they-do-When-does-electricity-turn-into-software-And-how)

All said, if you come out of this coursework unscathed, you'll have a new- found appreciation for life and computers. I do not regret doing my Masters there.

</comment><comment><USER5> Why are all the online programs masters degrees?</comment>


Wikipedia's TLS Cipher stats - <AUTHOR> https://grafana.wikimedia.org/#/dashboard/db/tls-ciphers <comment><USER2> The big graph at the top might be better represented as fractions of the whole. The most apparent thing in this graph is its seasonality / cyclic behavior in traffic, but that's not the most important thing (given this was submitted as "TLS Cipher Stats," not "traffic spikes"). Essentially, I'm saying the vertical axis should have percent labels instead of raw numbers.

</comment><comment><USER3> This is neat but kinda useless without some written analysis. I am not a crypto expert so the graphs mean little to me.

<comment><USER4> I think your comment eats to the heart of what's been happening of late. You shouldn't need to be a crypto expert to know what Forward Secrecy or ECDHE are, at least.

Anyone who might ever configure a webserver should be learning about this stuff.

<comment><USER5> I'm glad that at least you find the graphs obvious, as I have a bunch of questions.

What are security pros and cons of using or not using GCM?

And which browser uses which settings of these displayed by default? How can we interpret the percentages?

What are the percentages anyway? It's hard to see them from all these graphs. Actually, I don't care about the peak-hour times when I just need to know the percentages.

And in which time zone is the time scale at all?

Thanks in advance.

<comment><USER6> GCM is "authenticated encryption". That means that it's a cipher construction that provides both confidentiality and integrity, in one hermetically sealed capsule. Most legacy crypto (and most of the crypto in TLS) provides integrity checking as a separate operation; it will, for instance, take confidentiality from AES-CBC, and authentication from (say) HMAC-SHA1. This works fine, but requires that implementations do joinery between the cipher and the MAC.

Every iteration of TLS prior to the version that began providing authenticated encryption (of which GCM is the only widely compatible option) has gotten this joinery wrong.

There are workarounds for the resultant bugs, but it's better, when possible, to enable the version of TLS that enables GCM, and prefer the GCM ciphersuites.

<comment> iso8859-1 You almost imply that GCM is the only authenticated encryption. People should know that it is just one of them, but it is the one that circumvents patents and is really reasonably fast.

<comment><USER6> It is the only widely compatible AEAD for TLS. Soon, it'll be accompanied by ChaCha/Poly1305, but not yet.

GCM is the last AEAD I'd reach for in a custom design!

</comment></comment></comment></comment></comment></comment><comment><USER7> More of these stats here: [https://grafana.wikimedia.org/#/dashboard/db/home](https://grafana.wikimedia.org/#/dashboard/db/home)

</comment><comment><USER8> Man, you can tell when people are at home vs. at work...

<comment><USER9> Absolutely. DES-CBC3-SHA = people on IE8 on XP = people at work.

<comment><USER10> Funny, I was about to say that was people at home. I haven't used XP at work in years, but still ran it at home up until a couple of months ago (didn't use IE though).

<comment><USER8> Oh no. That's people at work. Notice how there are two days a week where it doesn't rise during the day.

We just don't appreciate how slowly many organizations update their "frozen rigid" workstations images.

</comment></comment></comment></comment><comment><USER11> Moving to a 14-day view, what accounts for the spike in ecdhe-ecdsa- aes128-gcm-sha256 and ecdhe-ecdsa-aes128-sha? Did these switch to preferred defaults in some major browsers?

<comment><USER12> It's a display problem. The spike appears at 2015-09-08 12:00ish, but is not visible at the same time on the shorter timescale views.

Edit: yes, it's aggregating things incorrectly at 14+ days. Some parts of the graph appear to be 'aggregate' (spike), others appear to be 'average' (low points).

</comment></comment><comment><USER13> Interesting stats, but oh boy Grafana[1] looks amazing.

1\. [http://grafana.org/](http://grafana.org/)

</comment><comment><USER14> And apparently des-cbc3-sha is still a thing...

<comment><USER15> Mostly XP by now I think.

<comment><USER16> Correct. For example Mozilla's recommended TLS server settings (which are fairly popular) will result in XP+IE8 (default browser) using TLS_RSA_WITH_3DES_EDE_CBC_SHA</comment></comment></comment>


PrivateCore nets $2.25M to build a hardened hypervisor - <AUTHOR> http://gigaom.com/cloud/privatecore-nets-2-25m-to-build-a-hardened-hypervisor/

<comment><AUTHOR> We are looking for OS and security hackers. Contact us at email@example.com or visit <http://www.privatecore.com/careers.html> for more info!</comment>


Ask HN: Installing Linux on a Mac. Fedora or Ubuntu? - <AUTHOR> <comment><USER2> Ive found ubuntu to be the most painless route, usually a resolution to a driver issue is a google search away.

The best path is to pro-actively google your model Macintosh with Ubuntu (version number) and another with Fedora (version number) and see what pops up in compatibility issues and resolutions. Really, its pretty much that easy to figure out.

</comment><comment><USER3> Also interested in this, mainly to know which ships with drivers that don't require too many driver shenanigans.

Xubuntu "looks nicer", but Fedora is more familiar to us CentOS users on the server side.</comment>


How to write devilishly good copy for landing pages? Here's a good template - <AUTHOR> https://copyipsum.com/ <comment> Pick-A-Hill2019 Beauty is in the eye of the beholder - Lime green background with Magenta text boxes? To each their own I guess

</comment><comment><USER2> Why is every HN submission about writing full of run-on sentences, sentence fragments, and other grammar/usage crimes?</comment>


Land Rover's new wheels-eye-view feature - <AUTHOR> https://spectrum.ieee.org/cars-that-think/transportation/advanced-cars/like-magic-land-rover-makes-its-suvs-hood-disappear <comment><USER2> Cool tech. A natural extension of the 360 view many luxury cars offer. I must however protest that I miss low hoodlines and narrow a-pillars that seem to rob half the view of the road in newer cars. I am convinced the huge wheel trend is just to visually offset the highwater beltlines endemic on modern cars. The back-up camera, blind-spot camera, and offroad cameras seem like nothing more than band-aids slapped over bad design. Its all down to (some) asinine regulations forcing cars to be the same. Which is why so few cars are made today. All sales are trucks, suv's, or 'crossovers' today, simply to dodge the regulations. Which helps nobody but fords f150 plant and oil companies.

Meanwhile in the actual consumer world; How easy are the lenses to access and clean? How cheap to replace when offroading? Seems like a good feature to check out on a leased british car. Even LR's biggest fans still bemoan parts prices, and availability after a few years. British electronics have come a long way but still suffer under the cursed memory of Lucas made wiring in wet climates.

<comment><USER3> Yes, modern cars suck from a visibility perspective but that's what you get after a 30yr (and counting) of manufacturers competing in safety arms race. The belt-line got higher and the pillars got bigger so you could barrel roll down the median in comfort. People want to be safer in a highly unlikely event serious crash at the expense of greatly increasing the likelihood of a less severe crash from lack of visibility (e.g. cornering over a cyclist). Everything has trade-offs and the consumers (and the regulatory agencies) have signaled which trade-offs they prefer.

<comment><USER4> The worst part of this arms race is how much its caused by regulations, especially when those regulations end up completely working against environmental/mpg regulations that end up forcing automakers to pick some crap median that ends up pissing both sides off. You're not going to get good gas mileage with 2 extra tons of airbags, superfluous pillar reinforcements, and an massive SUV hood needed to satisfy pedestrian requirements

<comment><USER5> Who cars about MPGs? I would much rather drive a safe car than an efficient car. It's the same reason all that crap is removed for race cars. Extra weight and lower MPGs are a small price to pay for safety.

ICEs will hopefully lose their dominance in the next 15-20 years. Fully electric cars could have some crazy looking designs but I doubt they will.

<comment><USER6> [https://tanks-alot.co.uk](https://tanks-alot.co.uk) have a few tanks for sale right now. Take your pick.

<comment><USER5> Great, now I'm debating quitting my day job and starting a tank rental business in the US.

Edit: There's a Tank Town USA amusement park someone not even 1.5 hours away from me. I can even pay extra to shoot a machine gun from one.

</comment></comment></comment></comment></comment></comment><comment><USER7> It is very cool tech and will be very useful in parking the new range rover in the supermarket car park.

</comment><comment><USER8> I was under the impression that land rover was purely a luxury car - I live in Colorado and I've never seen one on a trail. Does anyone actually use these for off-roading?

I'm curious because this feature may fit that idea. Excellent marketing for people who want a land rover but will never use the feature.

<comment><USER9> In much of rural Spain, the Land Rover has been the car of choice for farmers and goat herders, for decades. Not the fancy version you usually see in the US, but the "Santana Cazorla" which was a much more bare bones one produced in Linares, at the heart of olive oil country. [https://en.wikipedia.org/wiki/Santana_Motor](https://en.wikipedia.org/wiki/Santana_Motor)

<comment><USER5> Those cars look 30 years old or more! No one is commenting on the absolute off road tanks Land Rover used to build. The new cars are purely luxury cars for rich people, as evident of Land Rover killing off the real off road LR models.

<comment><USER10> The original Land Rover was launched in the 40s

<comment><USER5> Yes I know. Same as Jeep. Those are refereed to as the Land Rover "Series" models.

I see why I am confused about Discovery. They were marketed as the LR3/4 since 2004 in North America and called Discovery everywhere else.

</comment></comment></comment></comment></comment><comment><USER11> That ultra clean Land Rover in the surreal photo driving through the green muck makes me question any of the discussion about going off road.

<comment><USER12> Yes and no. While it's great in movies, barreling into water like that is a great way to hydrolock an ICE. Plus that thing was clearly freshly waxed for the shoot, water be running right off.

</comment></comment><comment><USER5> Cool tech. I cringe at the sight of a car that expensive being taken off road. Especially with crappy tires meant for the street only.

Really upset the Discovery is taking over the LR4's spot. To me the LR was the one real off road machine. Something you could take anywhere from African safaris to mountains. I wanted to get an LR but the reliability and running costs were terrible.

<comment><USER13> I'm still running a 2001 Land Rover Discovery II. The reliability is a minor issue. Every quirk is documented and fixable (except gas milage).

</comment></comment><comment><USER14> Does the photograph show the system that is described?

The system has 'forward-facing cameras mounted on the side mirrors and front grille'.

But the second photograph seems to show what is underneath the car, which is not a view that's possible from those cameras at that moment in time. There's no shadow, either. Is it possible to achieve this just by delaying the image feed?

edited

<comment><USER15> [https://youtube.com/watch?v=o7V5COxB48Q](https://youtube.com/watch?v=o7V5COxB48Q) here's a demo, from 4:53 onwards. Yeah it's delayed, so if e.g. a cat moves after it is out of sight of the camera, the picture won't display the actual position of said cat.

<comment><USER14> That's useful, but like other people said, it could be misleading. If the front wheel sinks into soft ground when you're off road, the display can't show you that, then you could high center the vehicle and get stuck

Or you could drive over your cat

<comment><USER16> I wonder if a pair of cameras under the center of the vehicle would meet the requirement for a rear-view camera. That'd be superior, because seeing right next to the wheels is actually useful. For viewing higher, we have windows and mirrors.

</comment></comment></comment></comment><comment><USER17> Now that the Defender has been discontinued I'm looking forward to this: [https://projektgrenadier.com/](https://projektgrenadier.com/)

Plenty of people don't consider anything other than a Defender to be a proper Land Rover, so I thought it might be of interest (not connected with them).

<comment><USER5> It looks like the Defender is coming back.[1]

[1][https://www.landroverusa.com/future- vehicles/defender/index....](https://www.landroverusa.com/future- vehicles/defender/index.html)

</comment></comment><comment><USER18> But now you'd need to find a way to look at this screen and what's happening in front of you at the same time!

</comment><comment><USER19> Anybody know of or have experience with aftermarket systems that can do this sort of image composition?

</comment><comment><USER20> Between the press article and the Landrover link I have seen 2 images of this system. I feel like something of this nature lends itself to a gallery of images - I'd like to see more!

</comment><comment><USER21> Having this for a normal car would in many respects give me the one thing I've always dreamed of having an Ariel Atom for: the ability to see my tires.

</comment><comment><USER22> In an all electric car, is there even a need for such a pronounced hood as for an ICE-based car? That's probably the best solution.

</comment><comment><USER23> Non of it matters if car prices are still high.</comment>


Ask HN: cloud data storage cheaper than AWS S3? - <AUTHOR> I'm working on a new neural network based project, which means I'll need to access and store more data than I can keep on my hard drives.
While I'm familiar with AWS S3 from my day job, I was wondering what other alternatives are out there that may be cheaper (or even free)?
I'm also aware of dropbox, google docs, etc., but ideally I'd like to have programmatic access via an API. <comment><USER3> Backblaze B2 Cloud Storage

[https://www.backblaze.com/b2/cloud-storage- pricing.html](https://www.backblaze.com/b2/cloud-storage-pricing.html)

</comment><comment><USER4> BigQuery with it's $20/TB for active, and half of the price for cold storage, is the best structured (eg: columns or JSON) solution where import and export is free. You even get SQL as the product is a data warehouse.

</comment><comment><USER5> If you need that much storage, I would posit that cloud storage is going to be a problem not due to cost but due to network performance. A bunch of cheap storage is great but if it takes you days to transfer data there it might be a dealbreaker.

Have you considered a few external hard drives? You can get a couple of terabytes for pretty cheap these days.

</comment><comment><USER6> Backblaze B2

[https://www.backblaze.com/b2/cloud- storage.html](https://www.backblaze.com/b2/cloud-storage.html)

</comment><comment><USER7> If you can tolerate risk of data loss, VPS or even physical hosts are likely to be far cheaper than any cloud. Look at OVH, Hetzner, Linode, DigitalOcean.

<comment><USER8> Linode, Pair and Rackspace are established players in this field. (Pair.com is the oldest I know of).

<comment><USER9> According to Wikipédia, OVH is the third largest hosting company in the world based on physical services and the largest hosting company in Europe. They are not a fly by night operation.

And IMHO Hetzner is by far the best service provider there is for bare metal and plain old VM services.

<comment><USER8> Didn't know about OVH, thanks. A long time ago, I was advised to always first look at the age of the company when choosing a web host. (And then their financials and client base). I've found this advise to be a solid one. A lot of web hosting companies fold up ...

</comment></comment></comment></comment><comment><USER10> I assume that everything depends on: \- how much storage you need, \- how long you need it to store this, \- if this data easy reproducible.

Generally storage isn't cheap, and cloud storage is quite expensive in the long run. If you need storage for more that a year, I would invest in own local HDDs - put to your PC or buy used NAS server or PC. You will benefit with much better performance and this would be the most cost effective solution.

Keep in mind that often transfer to cheap cloud storage is slow, I tried to keep my backup in few different providers, it could take literally months to upload 6TB of data. Also keep in mind that you may be charged for data transfer separately, for every data access, so cloud cost may be much higher than expected.

If you plan use this in shorter periods, I would go with OVH offer - <USER2> probably have best quality/cost ratio. Depending on your needs I would suggest buying dedicated storage server, or use their Data Storage (3x replicated $0.0112/month/GB, plus outgoing transfer - $0.011/GB). They also have cold storage for about $0.0023/month/GB.

</comment><comment><USER11> Wasabi is decently inexpensive at $.0059 per GB/month [https://wasabi.com/](https://wasabi.com/)

I currently use it as my personal cloud backup

<comment><USER12> FWIW, mastodon.social has had frequent problems with the availability of Wasabi.

<comment><USER13> I like Wasabi for the price and use it for my personal 4TB backup. I used Wasabi for company CCTV storage (100TB+) but switched to Azure Cold storage because of Wasabi availability issues.

I prefer Wasabi for my personal because I can use my own backup/encryption scripts (using rclone) instead of closed source service like CrashPlan.

</comment></comment></comment><comment><USER14> Storj Tardigrade

[https://tardigrade.io/](https://tardigrade.io/)

</comment><comment><USER15> Keep in mind that if you use this data often as training data you want to store it close to your GPU. No point in saving money on the data storage and have your expensive GPU idle because you are waiting for data to download from Dropbox...

</comment><comment><USER16> What is your tolerance for losing data?

</comment><comment><USER17> Google gets ready for its entry in cloud services market

[https://www.headlinesoftoday.com/technology/tech- reviews/goo...](https://www.headlinesoftoday.com/technology/tech- reviews/google-cloud-services-market.html)

</comment><comment><USER18> You don't mention how much data. At some size point, a cheap storage server and minio (open source s3 compatible) might be a better value.

At the low end, OVH has a 4×4TB HDD SATA + 1×500GB SSD NVMe server for ~$90/month.

Of course, you have to configure and administer it, so not for everyone.

</comment><comment><USER19> Depending on your needs, you can rent a dedicated server with hard drives. For example, Hetzner has an offering of 10x 10TB HDDs for $200/month or so.

Disclaimer: I have never used Hetzner's services nor can I vouch for them.

<comment><USER20> I've used them for the last 5 years. They are OK. Their network is not redundant (core routers) so you should expect some downtime at least once per year for several hours. But it's the only complaint I have. The good part is that you can buy several servers for 100-200 EUR and build a decent HA with fixed monthly cost. Our AWS bill was always hard to predict. Also, they have a VPS cloud service that is decent and we use it for non-core services.

</comment></comment><comment><USER21> Scaleway Object Storage

S3 compatible and comes with free bandwidth

[https://www.scaleway.com/en/object- storage/](https://www.scaleway.com/en/object-storage/)

</comment><comment><USER22> Too big for my hard drives covers a lot of space.

</comment><comment><USER23> HETZNER [https://www.hetzner.com/](https://www.hetzner.com/)

</comment><comment><USER24> s3 may be cheaper than you think.

If you're willing to tolerate hr+ delays in accessing your data aws glacier deep archive is 70cents per terabyte month.

that's pretty awesome in my book.

If you need to access the data in under an hr it comes out around $2 per TB/mo

<comment><USER25> I am not sure if you are calculating this correctly but for me, 70 cent/TB/mo is not a realistic number. Cheapest glacier storage for me, is, $0.004 per gb per mo, which makes a terabyte storage for $4/TB per mo.For me, this number is at Ohio or Oregon data centers. And their retrieval rates are super expensive, as in, $0.03 per gb. Glacier might be cheap but it definitely is not the cheapest.

<comment><USER24> no cheapest deep archive is 0.0007 per gb month, or 70 cents per tb/mo

note they've recently reduced their pricing so you might be looking at old marketing. But my latest bill charged me 0.0007

you're right of course that retrieval in an out is much more expensive and so prob not a great fit for your usecase

</comment></comment></comment><comment><USER26> Why don't you try Usenet? Unlimited storage for $3.14/month[1].

There are a couple of Python libraries out there for posting and fetching, but it'll definitely be shabbier than a purpose-built service. However, for seriously large storage requirements, you can't beat that price.

I have a full PC backup I did 5 years ago drifting around on Usenet somewhere. It was still there when I checked a year ago.

[1][https://newsgroupdirect.com/member/billing/?planid=189&deal=](https://newsgroupdirect.com/member/billing/?planid=189&deal=) but I've had problems with their service, and personally use FrugalUsenet for a little more.</comment>


Unethical human experimentation in the United States - <AUTHOR> http://en.wikipedia.org/wiki/Human_experimentation_in_the_United_States

<comment><USER2> 1\. Please do not write your own headlines!

Your title: "Human experimentation in the United States"

The article title: "Unethical human experimentation in the United States"

Notice the crucial missing word?

2\. The article unfortunately left out pre-frontal lobotomy, a disastrous procedure that was almost always administered without informed consent.

<comment><AUTHOR> You are right but I did not do that on the purpose of alterning the original meaning, I just copied it straight off the link url which is: [http://en.wikipedia.org/wiki/Human_experimentation_in_the_Un...](http://en.wikipedia.org/wiki/Human_experimentation_in_the_United_States) Then when I noticed it, I thought that even in this form it evocates an unpleasant feeling...

<comment><USER3> You'll see that it says "redirected from ...". If Wikipedia redirects you from X to Y it will still use the URL for X. To get the canonical name for the page, I click on "Talk" and then back to "Article."

Human experimentation is extremely common. Why does it give you an unpleasant feeling? I volunteer for a couple experiments while in psychology class in college. I've done human factors studies on people. Both of these are human experiments. In both, the experiments follow ethical practices, like informing the subject that they can quit at any time.

When the city tests out different traffic light patterns, perhaps to improve traffic flow, it's also doing experiments on humans. A/B testing of a web site is yet another common form of human testing.

These are all acceptable and ethical examples of human experimentation. That's why you need to include "unethical" in your statement.

<comment><AUTHOR> My answer is.. implicitness through common sense.

"Human Experimentation" commonly evocate something wrong, and guess why?

That's exactly because of what you can read in that article..

Or more generally because of the kind of world we live in, which, I am sad to remind you, it's not perfect.

So I guess there is nothing wrong in titling something for what's commonly expected to refer to.

Nonetheless I've edited the title :)

<comment><USER3> We need ways to do human experimentation. Without it, medical research would be dead, as would many other fields. For that matter, a chef wouldn't even be able to get others to do a taste test.

That's why we've thought long and hard about the ethics of the topic. There are supposed to be policies in place, like an institutional review board, with the goal of protecting human subjects from physical or psychological harm, ensuring privacy, and making sure that the human subjects can make an informed consent.

That's not saying the system is perfect. There's the worry that "many for- profit IRB's routinely approve the design and conduct of clinical trials for clients without adequately monitoring the safety of patients", like Coast IRB.

Academic researchers working on humans and animals must go through the IRB process. This does help instill a strong sense of caution whenever humans subjects are involved. Here's a recent posting to show how strong that sense might be:

[http://boundarylayerphysiology.com/2013/02/17/why-im- worried...](http://boundarylayerphysiology.com/2013/02/17/why-im-worried- about-ethical-shenanigans-in-the-citizen-science-movement/)

<comment><AUTHOR> This is how things should be... But the whole point in posting a link to that wikipedia page is not condemning ethical and risk free human experimentation but the following: are sure that in this exact moment the american government isn't carrying on any other crazy human experimentation? I would spend a minute thinkin about that, instead of playing with words... (not trying to be offensive, but the topic is of such importance that this whole argumentation just feels redundant...) Again, think about what the goverment (togheter with private entities) could be doing RIGHT NOW.

<comment><USER3> By not including the important word - Unethical - in the original title you weaken that argument, because you commingle ethical and unethical experimentation. Most human experimentation is done under rules to help keep them ethical.

By focusing only on the "human experimentation" part, it is you playing with words.

I gave a link to an example of how a private company RIGHT NOW might be doing things which are not ethical, under the rules for academic and pharmaceutical research.

<comment><AUTHOR> Quoting myself (you seem to have missed a part of what I said):

Implicitness through common sense. "Human Experimentation" commonly evokes something wrong, and guess why? That's exactly because of what you can read in the article I linked. __So I guess there is nothing wrong in titling something for what's commonly expected to refer to.__

\---

I am not weakening it, because the expression "human experimentation" is commonly already firing an alarm-bell given what happened and the resonance it's getting.

So I'm sorry but get your mind over it.. while your terminology is, in its whole, perfectly appropriate to describe the subject we are discussing, times have changed in a way that simply dropping off word from it doesn't weaken the message it's sending, at least to a generic audience, which also makes up for a context (HN not being a niche-academic-medical-research website). So given humans interpret things based on context, I'd guess that the majority of HN readers would get along with that title, again given the moment in time we are living.

But there is much more... and I thank you for letting me think about it:

I came to the conclusion that the most big and implicit reason that made me avoid the "unethical" word is that even in a civil and modern society, ethics is questionably subjective, to an extent. So adding that word I could have put off some readers whose ethics threeshold is lower than average, who could have then not given enough attention to the article, thinking: "yea, here comes another human rights hippie.."

Instead, whoever does not consider these experiment unethical is to my eyes not an human being, so yea, no need to add "unethical"... it's clear already that these experimentations are so, and you (any reader) should agree with that. Otherwise I made you waste 10 seconds of browsing for something you didn't want to by tricking you, because you need to learn.

My deepest worry is: I hope that in your arguments there isn't a little black spot in where you are trying to hide the fact that part of you (maybe due to professional figure, are you a medical researcher?) tends from time to time to be a bit more tolerating toward some borderline experimentation.. and a bit pissed off by those "human/animal right hippies".. (or a given IRB resolution)

If that's the case, say it clear, don't be scared... Don't turn around with words, make your full and whole point about this matter... Of course, if you think it's good for you...

If that's not the case, IMO the first part of my argument is still valid to explain how a word can be omitted and still point to its original meaning, based on social events affecting the meaning of words, and context.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER4> I wonder why the Milgram Experiment made the list but not the Stanford Prison Experiment...

<comment><USER5> The Milgram Experiment does happen to shine a bright light on collectivism (it only takes one person to do the right thing, for everyone else to follow their example), while the Stanford Prison Experiment shines a darker light (or violet i guess?) on collectivism.

Maybe it could have been omitted due to a bias, or the editors just didn't think to add it?

</comment></comment><comment><USER6> The book[1] "Men who stare at goats" gives an insight into some of the, uh, unusual programs the US military ran.

[1] Not the film, which skips a lot of the detail.

</comment><comment><USER7> unbelievable.. gives chills, we need not to forget these atrocities and spread these reports over and over and again and again.</comment>


Emergence of complexity in hierarchically organized chiral particles - <AUTHOR> https://science.sciencemag.org/content/early/2020/04/08/science.aaz7949 <comment><USER2> Can anyone with access give some info on the details and/or applications of this? The idea of self-organizing complexity in general can be very important in math and from what I hear biology. The vague idea can underlie cellular repair and such, if the apparent complexity can actually be encoded much smaller.

</comment><comment><USER3> Funny, if I had gotten a PhD in Chemistry back in the 80's I would have worked for a team that was building the precursors of these sort of materials. It was a fascinating research area but I did not want to go to school for 7 more years and punted instead.

</comment><comment><USER4> eli5?

</comment><comment><USER5> Gave me some death stranding flashbacks there, gotta complete the chiral network!</comment>


Remapping Keyboard Keys on Mac OS X Mavericks For Boosted Productivity - <AUTHOR> http://matthewpalmer.net/blog/2014/01/19/remap-keyboard-keys-caps-lock-os-x-mavericks/

<comment><USER2> Yup, KeyRemap4MacBook and PCKeyboardHack are great. I have:

      - MBP Caps Lock remapped to F19, which opens highlighted URLs in the browser instead
      - Brightness, Backlight Brightness and Volume mapped to quarter steps
      - Eject mapped to Lock Screen (Ctrl-Shift-Eject)

The KeyRemap4MacBook maintainer is helpful and awesome, so I would suggest a 10 €/$ donation if you like it.

[https://pqrs.org/macosx/keyremap4macbook/donation.html.en](https://pqrs.org/macosx/keyremap4macbook/donation.html.en)

<comment><AUTHOR> That last one is a great idea considering my MBA doesn't have a disk drive, but my wireless keyboard has an eject key. Thanks!

<comment><USER2> Thanks. Also check out CheatSheet if you're like me and can't remember all these magic keyboard Konami codes.

[http://www.cheatsheetapp.com/CheatSheet/](http://www.cheatsheetapp.com/CheatSheet/) (free)</comment></comment></comment>


Ask HN: I am busy with too many things at once - <AUTHOR> Hi NH.
A couple of years ago I realised I was a mediocre programmer. After 5 years of work experience with unfinished degree I knew only one language (php of all...) and some good practices on a surface level. I set that for change. For 2 years I studied in my spare time, learned a bit of Java, go, clojure, learned some fundamentals and good practices classics (gang of four, DRY) started reading blogs and following the industry.
Except, it's too much. I realised I am into too many things. I know a bit of everything, but not too many things well. I want to study data science, maths, devops and find that my desire is driven by fear of becoming outdated and irrelevant. I would appreciate a piece of advise on managing the learning process, get the joy of tinkering back and conquering the anxiety of ever changing rules to the game. Thank you. <comment><USER2> As some noted, the fact that you realized what drives your desire is very impressive. It takes a certain skill to understand those things!

As someone who's been at it for years, I'll just give you one little piece of advice. If you've already been through the fundamentals, you've done enough. Now, instead of focusing on learning technology, focus on building things, this is what real engineers do.

Let me explain. You'll probably get much better with at least one thing once you ship a real project to the end, and this is where you'll get better.

One of the best programmers I've ever worked with was a PHP guy when I met him, and he was good because he shipped efficient, tested, and working code fast, all while being able to document and communicate about it with his team. That's what being a programmer is. You won't become a good professional programmer by chasing after hip technologies (even though learning different paradigms always help), but by building things, and preferably with people, because this is how things work in the real world.

As long as you stay with startups and technology companies, you'll see that any CTO or lead dev worth his salt would rather hire a smart Perl programmer with strong fundamentals who shipped things over someone (maybe smart too) who knows a bit of JS, a bit of Java, and a bit of Haskell. This is, however, _not_ true with a lot of non-tech companies, where keywords on resume, a professional-looking attitude, and some good sales skills will usually get you better positions.

It's never too late, don't fear irrelevance, build things, and have fun!

<comment><USER3> You don't get as many job offers by becoming an expert in one area though....

How many job offers do you see looking for a smart Perl programmer. How many do you see listing 10+ technologies, plus experience in scrum? (Does doing a stand up every day make you better at it? )

<comment><USER4> Those job postings are designed to weed out Americans and hire Indians. Real postings are more reasonable.

<comment><USER5> That is a racist comment. You could had said "in the US they make those job postings catered to a specific person that they want to hire as an H1B" instead, but specifying that it is intented to weed out americans (specially given the fact that no one said we where talking about the US market!!) and hire specifically Indians (and not foreigners, or people in search of a visa) is racist. It shows a specific prejudice against Indians and a belief that the position they fill are less legitimate than the ones an American fills.

<comment><USER6> Other options can be:

\- HR requirement that all positions be advertised externally, even when there is an internal candidate who is suitable and people are happy with (similar rationale for the H1B policy but at a smaller scale and less likely to engender foamy-mouthed rantings)

\- hiring company is actually an agency who is fishing for CVs

</comment></comment></comment></comment></comment><comment><USER7> For me, the major insight was to realize that the best of the best are struggling just as much as myself. I often come back to this diagram for relief, and it's true.

[http://www.invokemedia.com/wp- content/uploads/2013/06/venndi...](http://www.invokemedia.com/wp- content/uploads/2013/06/venndiagram.png)

It's really all about focus. Learn one thing at once. Rinse and repeat, and come back to the topic later for more insight.

[https://en.wikipedia.org/wiki/Spiral_approach](https://en.wikipedia.org/wiki/Spiral_approach)

Don't be afraid to say "I don't get that (yet)." \- for me it's a sign of quality in an engineer, if he realizes he doesn't grasp a concept yet.

All others are struggling too, even the best:

[http://fourhourworkweek.com/2013/11/03/productivity- hacks/](http://fourhourworkweek.com/2013/11/03/productivity-hacks/)

In the end, if you're not embarrased about the code you wrote half a year ago, it's a sign you're not progressing.

<comment> maze-le > In the end, if you're not embarrased about the code you wrote half a year > ago, it's a sign you're not progressing.

Interesting opinion. I have that experience often enough when I look at rusty old code of mine. But I always was under the impression, that this is something of a problem, not a good sign...

<comment><USER8> Definitely a good sign. It even extends to other areas besides programming; as a non-native English speaker, at some point I was happy that I didn't really need to use the dictionary anymore. Then I realized that it actually meant that I wasn't pushing my boundaries enough and I started picking up more difficult books and learning Japanese (:

</comment></comment></comment><comment><USER9> I think you have found two problems that many people will bump into: (1) there are two many subfields to keep track of everything; (2) in any particular subfield there are people who seem to be infinitely much better than you are :).

Both are true: there are simply too many subfields if you want to excel in all of them, for any particular subfield there are people who are much better than you are, because most of them have invested a lot of time to become an expert.

My first advise would be to get the basics right: many commonly-used algorithms and data structures haven't changed the last 20-50 years. If you know then inside-out, you know what to pick to solve a problem. Get a good book on Algorithms & Data Structures or follow a course or two.

My second advise would be to pick the area that interests you the most. Read the foundational books, follow the leaders in the field, and do projects (they are good practice and help you to build a portfolio). Put a strong filter on the stuff that irrelevant to your chosen area (only read the most interesting bits). You will find that you quickly change from novice to expert in your area.

When it comes to programming languages: it's fun and useful to know some languages. But in the end what you ship is more important. So, just pick a language that feels natural for solving the problem and don't get too distracted by armchair PL philosophers ;).

<comment><USER10> Its important to remember that the internet amplifies experts, they get a big stage. What you see in tech are lots of very smart people in a very tight bell curve. Very smart compared to the general population. But in comparison to each other there is difference, but not as much as you think. Its easy to say don't worry about it. So i will add. Remember, even the experts only have time for at best 1 job at a time. They have lives to live too, make sure you live yours.

</comment></comment><comment><USER11> I feel good when I see posts like this. I have suffered and in past month have gone from an employee of very good company to broke unemployed. I am typically starting from scratch.

Reason: I thought I wasn't a good developer. More I read HN, articles, stories, more I got anxious and left my job to pursue research degree. I figured out I lacked mathematical abilities to do research in the field I wanted to. I became depressed and I felt regret all the time.

After 7 months, I realized I was chasing the horizon. I have realized it's not the new things you learn or the awesome technologies you learn that matters. Things that matter are: Being good at what you do, whatever it be...some people spent life juggling balls. They aren't genius in maths, science etc. but they are awesome at what they do. It makes you feel wow !

Second, it's about being happy. If you are writing this post in HN then you belong to very privileged class of people in the world. Be thankful for what you have. Love your family, friends. That is what matters. It doesn't matter what technologies you learn when you turn 60-65. All that matters is the happy moments you have shared with your loved ones.

Third. Don't take what's written by founders or geniuses seriously. Read, acknowledge and move on. If you question yourself over what others are doing and learning, you will be in mental hospital soon. So take things easy.

Last month I took a job in a company. Technology wise it's crap. No process. But everything works there. People get things done. We laugh, chat and go home early. I go to gym after work and sleep well after I come back. I enjoy time with my wife on weekend and thank god for this life.

It doesn't mean I'm doing nothing. I have compiled a list of books I want to study. I have read 2 chapters and I started a small project for fun. These are the only two things I'll work on..but no rush....slowly. After all they are last things I have to worry about in my life. First things first - Enjoy life and be happy.

Lastly, watch this - [https://www.youtube.com/watch?v=OCvAl2Vr7as](https://www.youtube.com/watch?v=OCvAl2Vr7as)

and See how happy and cheerful she is. She isn't scientist or math genius or a great programmer but she is awesome at what she does. Note her answers to questions.

<comment><USER12> This post sums me up too - trained in a very mathematical field, but without a maths background - walked away from it all for a year to rethink things and spend time with my kids - spent ages trying to learn new tech and boost my skills - just got a job again, doing pretty much what I was doing before. And in a month, I've learnt more through my project work as collaborations with team members than I did when I was self-learning during my year off.

Now I'm combining the two - learning some new stuff during my commute, putting it into practice at work - and at the same time, making sure that my evenings and weekends are free to spend with my family. Right now I couldn't be happier - I feel that I'm finally beginning to develop as a software engineer, but I can maintain a nice work-life balance too.

Totally second the other posts here - learning is good but you really need to be working on building something, because that allows you to really consolidate when you've learnt. It's when you spot the perfect application for some theory you learnt in your project work, and you can execute that application, that you really start getting somewhere. IMHO. :)

</comment></comment><comment><USER13> You make 2 interesting statements:

\- I realised I was a mediocre programmer

\- ... (I) find that my desire is driven by fear ...

The first is a good feeling :-) Too many programmers don't have this realisation. Embrace it!

The second is something that worries me slightly. All of the programmers that I know who are driven by fear let it chase them into failure. Getting the "joy of tinkering back" is what you need. Forget the "ever changing rules". Chase what you love and forget about the rest.

Now for some specific advice. You are at a level now where you need to integrate your knowledge, not learn bits and pieces. Stop everything else you are doing and start a major project that will occupy your time for the next year or so. It doesn't matter what it is, only that it is something you love. This will help you more than anything else.

<comment><USER14> > Getting the "joy of tinkering back" is what you need.

That would be pretty hard if you'd be working on a 20+ year old legacy system written in COBOL.

<comment><USER15> First - why not? Apply fantasy.

Second, that doesn't subtract from the advice being correct. Sometimes the thing you need to do is just "pretty hard". Or, put reversely, if you never do things just because they are hard, don't be surprised when you end up in a boring and uninspiring place.

</comment></comment></comment><comment><USER16> Focus on one. Finish it. It will feel like an accomplishment. Genuine interest in things is certainly better than lack of it, but ability to say "no" to an interesting thing is a skill that needs learning on its own.

Also, this [http://www.bothsidesofthetable.com/2015/06/19/why- successful...](http://www.bothsidesofthetable.com/2015/06/19/why-successful- people-focus-on-the-bottom-end-of-the-funnel/)

<comment><USER17> Yes. Do one project completely to a state where you feel proud of it, and like you've mastered what you can in that realm.

Write a production-ready library in a language you are interested in, complete with unit tests, follow best practices, write a set of good documentation, etc. for it. Put it on github, in the language's package management system, and see what happens.

Finishing stuff does really feel good.

<comment><USER18> I would like to put forward another perspective.

I notice that in software industry there is common recommendation of doing some project (or just hack something) to to learn or get better at something. This advice I think is solid and is generally good for many people.

However, I feel that it is not valid or valid only in very limited way to some people. This all depends on character types I guess. E. g. myself, if I ever tried following it I would not get anywhere, because projects for the sake of projects is something my mind has big problems with. It's simply not in my nature. I would argue that regarding this point I am part of silent minority in IT industry since I noticed quite a few developers who are similar in this regard.

So what is alternative if projects/portfolio/... might not be a thing for you. What works for me:

1\. Concentrate on Theory. This addresses few things: I must understand theory to not get frustrated, I m more interested in theory than practice in general, Often theory is just enough and mind will just find solution when you need.

A. Concentrate more on studying theory.

B. Use micro-projects just for testing and understanding concepts, not something useful by itself.

C. Study "best practices". To compensate for project problem.

2\. Look for a way to have goals (projects) forced on you. Addresses few things: it frees your mind from over-thinking (e.g. "whats the big purpose of this?"), it must be done - you cannot just quit when lose interest/reason-to- continue.

A. Hobby. Join online courses with assignments, university (if it allows).

B. Job. Try to look for positions with more "projects".

</comment></comment></comment><comment><USER19> > I want to study data science, maths, devops and find that my desire is > driven by fear of becoming outdated and irrelevant. [..] and conquering the > anxiety of ever changing rules to the game.

If that is your genuine concern, I'd suggest focussing on timeless topics. Two easy rule of thumbs: (1) if it's been around for a while and still relevant, it's probably going to stay that way (eg compilers/parsers, operating systems). (2) if it's hard and math-y, it has a good chance at staying power, even if new.

In any case, do what adyus said: pick one thing, and ship, ship, ship.

Some inspirational reading: Peter Norvig's "Teach Yourself Programming in Ten Years" ([http://norvig.com/21-days.html](http://norvig.com/21-days.html)), Richard Hamming's "You and Your Research" ([https://www.cs.virginia.edu/~robins/YouAndYourResearch.html](https://www.cs.virginia.edu/~robins/YouAndYourResearch.html)). Or if you are of a more entrepreneurial bend, P.T. Barnum's "The Art of Money Getting" ([https://www.gutenberg.org/files/8581/8581-h/8581-h.htm](https://www.gutenberg.org/files/8581/8581-h/8581-h.htm))

Happy to talk in private. My email is in my profile.

(Some snark thrown in for free: forget about OOP design patterns.)

<comment><USER20> Could you elaborate on your snark? Do you think OOP design patterns become outdated quickly? Do you think it's a waste of time for a programmer to study them?

<comment><USER21> In my case it came in two steps:

1\. Learn GoF design patterns. Be amazed by the cleverness.

2\. While learning others languages, discover that other approaches remove the need for GoF design patterns at all.

Example: Visitor isn't needed in a language with double dispatch (like Lisp). Chain-of-Responsibility is just foldl. Factory for dependency injection is just a closure or a partial function. And so on.

<comment><USER19> Yes, that's what I was playing at. Other languages have things similar to design patterns, too.

If you are in luck, a language gives you first class support for abstracting new patterns. (Eg in assembly a procedure is just a pattern and convention, most modern languages help you by providing procedures. Same languages are very good at being extended. Lisp is a good example, and so is Haskell. Even Python is great in that respect compared to, say, Pascal.)

I am still trying to figure out what dependency injection really is. It's seems like only the Java guys have a need for it, but they rave about it.

<comment><USER22> If you have a function which invokes a different object (or more commonly, a different network service), you pass that as a parameter instead of making a call inside the function.

foo() { service = someRemoteService(authn, authz); [http://lookingglass.internal.adm.bol.com/?page=TAM+Middlewar...](http://lookingglass.internal.adm.bol.com/?page=TAM+Middleware+PRO+Nonworkhours&showclock=1&showsoft=1&showacks=1&showzzz=1&showmute=1&showmenu=0) }

is replaced by

foo(service) { do_something_with_service(service) }

It makes replacing service with fake_service_object easier, thus simplifying the test process.

Common use case: If your service was a remote database, you can replace the database handle with a mock object which pretends to be a DB but is actually a simple object returning hardcoded values.

</comment></comment></comment></comment></comment><comment><USER23> Whatever you're not enjoying, stop. Whatever you are enjoying, keep. A career is too long to be carrying the things which turn it from being "a hobby" into a "real job"™.

I've often found that if I tried to do something because I thought it would be good for my long term career prospects I just wasn't that motivated. However I often found myself circling back to the same technology or topic at a later date out of pure interest and was highly motivated then. Attitude toward what you're working on and your reason for doing it is almost everything.

Sounds like you're maybe feeling a little burnt out if I'm honest. It happens to all of us. Whenever it happens to me I either increase the frequency of my other hobbies I enjoy (water sports) or if its a particularly bad spell, try looking into some completely unrelated area of inquiry (for me that can be space, cartography, travel, electronics, brewing beer, etc - even learning a musical instrument). I find that it not only stimulates my mind again but ultimately I start to make new connections about how my existing software skills can be applied to this new area of interest. New project ideas start to flow... and off we go again.

<comment><USER24> I'd love to have concrete and applicable hobby, but that isnt the case. Some people (like me) still have no clear thing in mind. Take me for example.

I'm still a student, studying computerscience and I'm almost finished. The problem is, my fun in computerscience is simply limited, sometimes it really makes a lot of fun. Sometimes it doesnt (Majority, since I am really unmotivated). Now. The problem is, I don't have anything I'd consider to do for the rest of my life. Was totally clueless after graduating from school and I'm still unsure. This just doesnt sound like a good future, but I really cant figure.

For now I'll just graduate from university. Any Advice?

<comment><USER23> You'll only find out what you enjoy doing by trying it. That means just giving everything a go at least once rather than trying to imagine what you will or won't like. In my teens and early twenties I hated the thought of water sports. "Cold water and exercise? Are you mad?" It took until my late twenties to properly try these things and I fell in love with them.

Getting passionate about something is weird. You can't make yourself do it. You can only discover it. The only way to discover something is to get off the sofa and go looking for it.

 _Edit_ : and for what it's worth, I found "computer science" as taught at university the most boring subject known to man-kind. For a lot of university courses, it's the antithesis of "hacking". I love making things and software presents us all with a creative canvas where the only really hard limits are our imaginations and in some cases, access to raw data. I dropped out of university after 2 years yet here I am nearly 12 years later at the peak of my game thus far and I enjoy the fact I still have a lot to learn and the field still has seemingly endless challenges to tackle.

</comment></comment></comment><comment><USER25> I have been programming for over 20 years and have very similar thoughts all the time :)

My eyes are bigger than my stomach. I believe that these days it's probably impossible for anyone to really understand everything.

Personally, I think PHP is a fine language when coded well (most of my PHP looks like my Java, though I haven't coded much PHP since just before the introduction of lambdas). I feel like it undeservedly gets a bad rap, perhaps because it's so easy to write horrible code in it. But that is just evidence of its complete accessibility in my books. I think that some of the coworkers I had at my PHP jobs would agree that it is an adequate tool for the job of web development (some people even use it for other purposes, but that's not my style).

I wish I could give you some solid advice, but I don't feel qualified to do so. I will say, however, my favorite experiences in programming have always been upon completion of a project -- seeing it go live, get real users, and actually work, from start to finish. Most of those times have been in my professional career where I was paid to complete something and had a hard deadline (that has nearly always slipped), but a few have been school assignments and personal or open-source projects that have 0 or nearly 0 users. Sometimes solving a problem or scratching an itch is just the thing I need.

Also, in nearly every case where I've shipped production code, I look back on it fondly some years later (especially if it is still running and getting used) and think, "damn, I must have done an incredible job. I got everything just right." But on the rare occasions where I get to look back at the source code, it's always got plenty of TODOs lying around, and things I wanted to fix, stuff I would do if I had a bit more time but just never got to, etc. It's never perfect... but sometimes it still works. Memory is a funny thing.

Finally, someone linked this on a vaguely similar thread recently: [https://www.physics.ohio- state.edu/~kilcup/262/feynman.html](https://www.physics.ohio- state.edu/~kilcup/262/feynman.html) \- I thought it was great.

Here's that thread, BTW, which you may also enjoy: [https://news.ycombinator.com/item?id=9796203](https://news.ycombinator.com/item?id=9796203) \-- some really quality responses on there, IMO.

<comment><USER26> > Finally, someone linked this on a vaguely similar thread recently: > [https://www.physics.ohio- > state.edu/~kilcup/262/feynman.html](https://www.physics.ohio- > state.edu/~kilcup/262/feynman.html) \- I thought it was great.

Feynman is a lovely example to follow for anyone wanting to become an engineer. The book is one of my all-time favorites.

</comment></comment><comment><USER27> Instead of picking technologies, pick a project. Let your development be project driven. When I needed to inject javascript to scrape a complex static page and change it into an angular app, all of a sudden I learned less and gulp because I had heard about them and they helped for that goal. Choosing a project will let you learn while focusing on one thing, although potentially learning a lot of things.

An airplane pilot once told me that when young airplane pilots experience turbulence, their reaction is to speed up to get through it faster. That makes the turbulence worse. An experienced pilot will slow down because it reduces turbulence and makes the trip enjoyable again.

Edited for clarity.

<comment><USER28> I loved your airplane pilot analogy. The Turbulence Paradox: act not to remove the turbulence, instead slow down to make the flight more enjoyable once again _through_ the turbulence.

Zen for the 21st century.

</comment></comment><comment><USER29> Congratulations, it sounds like you made measurable progress toward your goal. I think the best you can do is embrace the fact that:

1\. It's always changing

2\. Feel confident in that something that you learn will become relevant again

3\. You can't know everything

In addition, find a team that will help you learn and practice everything you are interested in. Look for a company/team where individual engineers have to wear many hats.

</comment><comment><USER30> Apart from the desire to learn those skills that you state is driven by fear, with a bit of introspection can you cut through that and articulate your _actual_ core desires? i.e. when you're able to quiet that nagging voice, what topics/subjects/work bring you true joy/pleasure? Put differently — if you had infinite money what would you want to spend your time working on?

<comment><USER31> I asked myself that question 2 years ago and there were alot of occasions where I picked up a project but then would lose interest a few months into it when the going got hard.

I think this is a good question that everyone at some stage of their life will need to ask to grow beyond what society and peers demands of you, but don't make this out to be the silver bullet like I did because I'm still on that path and I have no idea if I'm getting any closer to an answer... damn! hehe

</comment></comment><comment><USER32> First of all there are not good and bad languages, there are programmers who know a platform well and others who don't. So as a first piece of advice I'd say choose a language, any language, and stick with it. Sure, sexy things are published all the time but you don't need to know a dozen frameworks to get your job done.

Your fear of becoming outdated is well founded. We'll all become outdated. That's why every five years or so we learn a new language. That's the fate of the IT industry, things change and sometimes they change too fast. We learn to adapt. But once you learn a language pretty well you'll realize that there are commonalities between them all. Learning a new one is a matter of weeks. So stop worrying too much.

My last advice would be to choose a project and focus on it for the next two to three months. Stop reading and start implementing. That's probably the hardest part. But it will help you get in grips with the language of your choice and feel more comfortable and self-confident. And it will also help you realize the path you wish to follow.

<comment><USER19> Nah, if you don't want to change, you don't have to. Just pick the right tools.

If you don't mind selling your soul, COBOL programmers get paid more and more because supply is dwindling. And I bet you dollars to donuts that COBOL will be around for longer than anyone's career.

If you care about your sole, it's a bit harder, but C will probably be around, too.

Some languages are worse than others. PHP is definitely in the worse camp.

Fully agree with the last paragraph.

</comment></comment><comment><USER33> Hi. You're awesome! :) I started up the same way.

In my 2nd year, I was selling website templates and earning good money. It required little knowledge of html, css, and js. It was good. But soon saturated my hunger. I read up on solving problems, from a development perspective. It's a lazy man's job but a brainstorming one.

Solving problems gave me direction. I proceeded to learn different languages for different tasks that were required. I read about implementing backend in django, ruby on rails, node.js and php.

In late 2nd year, I decided to work in a team, and solve problems as a team. I took the job on CTO, for various startups in college. Each startup would present a different problem.

Instead of learning it all. My direction became problem centric. Sure, most of my startups failed, I was working with resourceless people in college. And had to always be the one to start everything from ground-up.

Investing my time in too many startups, too many problems, too many languages ... hung me up on my degree. :P

Sure, you'll meet people who have a mindset that they'll get you to make the product and then ditch you. But I never cared about it. :P Don't feel bad.The world will always be like that. I got what i signed up for. :)

I am now a full stack developer by choice, I design my products, create apps and I have functional knowledge of most of the awesome frameworks. My journey made me work with deployment, asset management, managing servers, deploying hybrid apps, scrape data, building performant and consistent api's.

It was a hard time. I will get my degree this autumn. Look at the bright side.

People always get happy when you can turn their idea into product in <15 days. :) Just solve problems… and you'll emerge as a magician. :D All the best !

</comment><comment><USER34> Buy the American self-help classic, How To Stop Worrying and Start Living by Dale Carnegie, and read a small portion daily regularly before bed. Seriously, that book changed my life, career and studies. Brought a new level of focus and mastery into all my works.

</comment><comment><USER35> I am in a similar boat, that is after being at least 20 years of practicing software engineering. I work in deep embedded, so my language is either C or assembly. Over the years, I have touched on Perl, Java, python, php, various shell scripts, and many others. Also exposed to various technologies and industry as well.

The question that I keep coming back to is whether I am doing the things that I find interesting and engaging. The answer is an absolute YES. However, if I need to do something else where I would need to learn some other language, or technology, so be it. It is all part of the process.

My advice is to slow down, and focus on your interest and passion.

</comment><comment><USER36> You sir are a generalist at heart not a specialist. Embrace it and make it your strength! Of course, some focus training is good, learn to fight distraction, but also realize that your brain craves that extra breadth.

</comment><comment><USER37> I'd suggest focusing on getting something to work, regardless of what you write it in. Then, if time allows and if it gets traction, refactor it.

But the main focus should be to get _something_ working.

</comment><comment><USER38> I am as well guilty of starting many side projects and working on them in parallel (about 20 currently). I tried various approaches of "managing myself" in order to get some progress on all of them. I tried to limit the number of projects drastically and also to a single one. That did not really work, because my heart was always drawn to these other projects that I had discarded. So currently I have these 20 projects and try to keep track of all of them. I choose one from day to day and try to work on it. And so far this approach works quite well.

I think it boils down to weither you keep track of all your projects (what's to be done next), that you do not try to plan ahead too much and that you do not plan too many tasks for a single day. If you stick to these guidelines there is a high probability that you get a good experience ("did that, finished that") every now and then which keeps you going.

</comment><comment><USER39> > I am busy with too many things at once

Same for some of us. In my case, I'm busy building too many side-projects, and I do it just for the sake of learning new stuff, I have a lot of fun and it works!

With 5 years you're just starting. You need to pick an idea related with 3 or 4 fields you want to learn (Data Science, DevOps, etc) and _build it_. For example: An app that analyses tweets from a twitter stream in real-time and applies predictive analysis for certain (or funny) topics. You can use docker containers and setup a CI server yourself.

It must be an idea _that excites you_. Build it from a paper sketch, to a MVC app, to CI server. You'll learn along the way, bit by bit, don't rush things...

This is very effective for learning, and there's also something special seeing your small (or big) ideas come to life. You'll get an enormous satisfaction...

</comment><comment><USER40> I think it might help if you start looking at different technologies and languages as tools to get done. And those are guaranteed to keep changing. So you start focusing on doing or building something with those tools. This way you won't be overwhelmed by too many things floating around and try to get something meaningful out of whatever you are learning. It is really difficult to be an expert in many things at one time and very few succeed in it - but it is possible to be moderately successful in learning those and put them to use (and unless you use those, reading blogs/books etc won't be long standing IMO and you will keep questioning yourself if you have really learnt it or not).

</comment><comment><USER41> I think something we all need to remember is that there will always be something new for us learn, but you don't have to learn it. I started programming in PHP about 10 years ago. At the time, people told me not to waste my time, it's a junk language that will good the wayside. Today? Still writing PHP, and getting paid alright to do so. I follow the industry and trends and I look into the latest and greatest and I'm aware of what's going on but I rarely spend any time learning it. As long as I know the pros and cons of X and what I would use it for I'm content.

TLDR: Don't worry or feel the need to know everything. Pick what you love and enjoy working in and focus on that.

</comment><comment><USER42> I am the exact same way. I find it difficult to want to specialize in a certain area. I always want to learn everything. Xyz company is using Go? I should learn Go. Abc company is using RoR? I should learn RoR. It can be a bit of a perpetual drive which may at times be mentally exhausting but I think it's good to have that and to not be complacent.

I find it overwhelming at times. But I think uniclaude said it best, you just need to jump into it and make something, build something and don't be afraid to write shit code. Afterwards you can step back and have a look at what new knowledge you've just acquired and begin to fine-tune any rough edges if it still interests you.

</comment><comment><USER43> Do you want to learn all of those because you have a genuine interest in doing so, or do you want to learn all of those things because you feel you "should"?

I browse HN and read comments and articles I do not even begin to understand, and it's hard not to feel rapidly inferior. But you don't have to be a genius to make a difference, and you don't have to be a genius to be happy.

I make my living off the back of PHP. Sure it's got a bad rep, but it's hard to knock something that keeps a roof over my kid's heads and their bellies full.

If you want to learn because of genuine interest - do one thing at a time. Let your curiosity guide you. And good luck!

</comment><comment><USER44> When you don't know yourself even a victory has a defeat inside. Among all that you said: math and data science are very nice skills to have. A theorem is not a matter of fashion it is true (under his hypothesis) it will always work for you.

I am extra full of things running in parallel so no good teacher here! But I can share my experience: what made me step up from random to mediocre programmer were the test classes, because finally stuff was making sense: the test class is the theorem, my code is the demonstration, I could work with that. You have to find your ways to make cool things work efficiently and reliably.

</comment><comment><USER45> Good programmers think they are mediocre, bad programmers think they rule.

Watch ancient code of you in PHP and after all you learned, read it again. Was it really that bad code? I always thought the same like you did, but when i read old code... I sometimes think it's beautifull ( can't explain it otherwhise)

Learning other programming languages helps you understand architecture and programming concepts, that you can probably implement in your "old" programming language. Not learning them, doesn't mean you're a bad programmer, perhaps just a lazy one :P

</comment><comment><USER46> I recommend you read The Passionate Programmer. It is full of good career advice. And if it won't tell you _what_ to focus on, it'll help you find out what you _want_ to focus on.

</comment><comment><USER47> I don't actually think there is anything wrong with being a generalist. If you're starting your own company or you're going to be the CTO or first technical hire of a startup, general knowledge is the best kind.

You can always find specialists later. If you know a bit of everything, you can set up your solution by yourself. Maybe it won't be perfect. Maybe it will have to call someone's API that's too expensive, but later your specialist will rewrite that code, for example.

</comment><comment> kenny-log_ins Hi mannimow,

I experience the same anxiety - I have a divergent way of thinking about things and tend to get interested in lots of different things at once rather than one thing in depth. Sometimes its good - I can think of different approaches to problems, for example. It seems like it makes it difficult to learn new skills to the point where they would be useful/worth anything to prospective employers, however.

My current strategy to address this is pretty simple: choose one thing at a time. To echo uniclaude's comment as well, it helps to build things - don't read about 10 different ways to do linear regression, choose one and try to make it work. I would also add that its fun to work with other people, and it can help you stay focussed. Obviously there are a million ways to contact people who you can work with on the internet, but I have been using meetup.com to find groups of people who share my interests. going to hacks, workshops, presentations and even having general discussions with people around one topic can make the learning process more engaging and you get the added benefit of being able to draw on other people's expertise and experience.

good luck!

</comment><comment><USER48> Before anything, know that it is actually the _people_ that matters in the end of the day, not "topics". You are creating with people for people, it is people that'll give you the "push" you needed, people who give feedback, people who love you and your work, people who challenge you, etc... Love people and learn from them.

As to skills, and topics and work, just _focus_ on doing things that you love and _repeat_. Because you will end up doing them anyway. The rest will follow.

I think the desire to learn many things at once is something most of us would share. But be careful that it might also sprout from a fear of somehow "missing the game". Trust that you are not "missing out" anything. Don't buy too much into competition (which is again actually something about people). You may try just getting an overall idea of the things you are curious about, but still stick doing what you _love_. Because if a topic is important enough, it will show up again anyway, which is when you will know for sure that "it's the _actual_ time" to learn that topic in depth.

Love people, love work.

</comment><comment><USER49> Studying a language is probably the worst way to learn it.

Languages are so simple to pick up these days: stackoverflow, teamtreehouse, git, etc. Latch onto a fun project with a fun mission, learn languages on the fly, and finish it. In a book, you wont learn how to debug that broken ruby gem. This will guide you in the right direction as well, it will force you to pickup pragmatic practices. [As opposed to sitting in the break room debating abstract factory patterns vs factory pattens]. After 13 years of coding, I just code on projects I enjoy now. I have to learn Go? Meh. Whatever. As a side note on php (my true love), I encourage the hate - it helps my pay.

Java? Not until it gets the basic web functions, [http://stackoverflow.com/questions/832620/stripping-html- tag...](http://stackoverflow.com/questions/832620/stripping-html-tags-in-java)

</comment><comment><USER50> Buddy I hear you, we are all on very similar paths. Try to enjoy the journey because the journey is all there is.

</comment><comment><USER51> > my desire is driven by fear of becoming outdated and irrelevant.

This needs to change. What's helped me a lot in recent years is to focus on finishing projects. I don't even care what the project is as long as I finish it before starting a new one. That is my desire now.

</comment><comment><USER52> I feel that Im in a similar boat, the advice in this thread has been helpful to me. What Im starting to realize is that its better to focus on a particular field, such as mathematical analysis, or network security. This way you have a skill in a particular field.

</comment><comment><USER53> The single best advice I've seen was from Marc-André Cournoyer: [https://youtu.be/ijZ-n5THbEM?t=10m19s](https://youtu.be/ijZ-n5THbEM?t=10m19s)

tldr; Instead of pure "learning-driven" activities, tackle side projects. You'll cover a smaller problem space but learn it much better and have something to show at the end. Copy something that already exists, build it from scratch with few to no dependencies, possibly make it better in one single dimension.

Actual examples Marc built that changed his career: Mongrel clone in under 500 lines of code Ant clone in under 400 lines of code

</comment><comment><USER54> I think it is important to balance between how much new things you are learning and how much you are using previously learned things. The challenge is to squeeze in the most potentially useful new things to the limited set that you are going to learn. For example: is GO or Rust going to be the language that I can use in my projects at work in the future? Should I learn Clojure or Scala? Should I learn machine learning or statistics? etc.

I balance these based on the things I would like to do in the future. I become and learn what I would like be and try to find a job where I can use those new skills.

</comment><comment><AUTHOR> Some really good advice here, thanks guys.

</comment><comment><USER55> Work on something hard, or significant, or meaningful, or some other antonym to trivial. Most importantly, do it with a group of people you can learn from, and that can learn from you.

</comment><comment><USER56> I feel the same after doing web programming for over a decade. I started out doing database stuff and actually with hindsight I think I could have quite happily narrowed my focus towards being a db specialist, and avoided that feeling of treading water. People say it's great to be an all rounder but it's only when you are focused you excel at one thing. After grappling with an ad- hoc task, I master it after a day, only to forget it by the next time I need to use it.

</comment><comment><USER57> The technologies are not your resume. Your achievements are.

</comment><comment><USER58> You're not alone. I suspect we're roughly the same age, and I go through that same anxiety on a daily basis.

We'll figure it out, like our fathers before us.

</comment><comment><USER59> Build something tangible in each of the areas you are interested in, and then focus on the thing that was most exciting.

Btw, the problem you outlined makes a very good answer to the question that is often asked in interviews -- "what's your greatest weakness". Not having deep expertise in anything is not so good, it's a weakness indeed. But excitement about many things and broad experience make up for it.

</comment><comment><USER60> I'm gonna regurgitate what everyone is saying. Stop learning "because learning" and start learning to complete a project/challenge. It's like fighting, playing a sport, or writing poetry... It doesn't matter how much you study the topic, you will only get better if you apply your knowledge to some goal.

</comment><comment><USER61> Christ, I could have wrote this verbatim describing myself... I look forward to reading the advice people give.

</comment><comment><USER62> I can relate myself here. Many people who are suggesting to focus on on technology seems difficult now. If you are a web developer you need to know many things. Apart from main programming language you should know about Redis or other Q system, Build systems and many other things.

</comment><comment><USER63> Grab a camel and court perl. You'll find no greater joy or beauty. Perl also runs everywhere, on everything, so you're safe to practice monogamy.

Be minimist. Everyone is the same as you - swamped. Build to simplify and remove, and you will succeed.

</comment><comment><USER64> A relevant quote: If you try to do everything you end up doing nothing.

</comment><comment><USER8> Too busy to realize the first line is misspelled? (HN instead of NH) :P

<comment> aps-sids "Instrad" instead of "Instead" :P

<comment><USER8> thanks! fixed (;

</comment></comment></comment><comment><USER65> I can relate, except that I still stuck.

1 - What has helped me is to categorize my insterests. Sure, they're connected in my brain and it's not like x is disconnected with y, we can always find a connection.. but I needed to separate them into categories to be able to manage them more easily because I don't need to tell you the state of the brain if you dump all of them in the one and only category most of us have which is labelled "Interesting" since we find every darn thing interesting.

Here's what I did:

I separated things into "Pillars". The way I think about them are Ministeries (I needed a really bureaucratic rigid structure to balance out the clustermess the brain is): Engineering, Business, Lifestyle, and Self Improvement.

Doing this alone has allowed to be conscious that I'm neglecting this category or that one, because now they have a name and I can measure stuff. Before, everything was just "Interesting" and it's not really easy to track down since they all blended together in a homogenous whole. It's like being in a bath and you're not really aware of _when_ the water became cold. Tagging avoids that problem.

Compute how many hours you can dedicate for the whole stuff per _week_. There was a time I studied for 16 hours a day but it's not really the best course. It depends on your situation (work, etc). Most people say they don't have time but they _really_ have a _lot_ of time. A lot would spend hours on Facebook, then hours watching TV, and then complain and describe themselves as if they're not the "sitting facing a computer person". Most are on a 5 hours minimum wasted per day diet.

Each of those "Ministeries" gets a chunk of that time as a _weekly_ budget. And this budget gets divided between the "Departments" making up that Ministery (say Engineering has Control Theory, Programming, Signal Processing, etc. Each one gets its weekly ration)

So imagine 40 hour per week for the whole 4 Ministeries. Say Engineering gets 20. From those 20, Control gets 5 hours per week, etc..

Thinking in _weeks_ was important because there's only so much stuff you can fit in a day, and if you think in days, you wouldn't be able to see the whole picture, which is: Making sure you touch each of your areas of interests on a regular basis.

I'm sure you spent so much time on something really interesting, only to find that you completely forgot another thing that's really interesting on which you've spent a tremendous amount of time and of which you now recall nothing. Right? Sounds familiar? The feeling of the wasted time and still barely remembering a thing can make you punch walls.

So, instead of doing the same stuff for whole weeks or months.. You do many things that you visit several times a week. This sort of refreshes your cache with a high enough rate that you don't neglect a topic, but low enough for other things to be touched, too. In other words, you don't touch TOPIC 1 _every single day_ , but even if you touch it every other day, the switching is fast enough you have the impression you're doing it every day.

This doesn't work if you have very few areas of interest, but works wonders if you have many. This is also why a week goes by "really fast", and why some people feel it's long (because they're not doing much. Some people actually do get bored).

Finally, limit things.

Not the amount of things you're interested in (although that helps.. But limit resources. I was interested in Python and was wondering which book was good, and where to start.. 4 years would pass. If I had read 10 pages per day of _any_ book _while_ I was trying to decide, I would've been much better at it right now.

This is where you have to be narrow-minded.. Want to learn Calculus? That one is tricky since most books suck and aren't my style, but pick one book and go through it. Even at 10 pages a day, 3650 pages per year. That's 6 books in a year on Calculus.. I'd bet _anything_ that you'd be at the very least better than if you were still _deciding_ which one to read.

Hope this helps (I struggled a lot and still have to pay attention to that).

<comment> d-equivalence Doing ten pages of mathematics a day is not realistic. Unless you already have been doing mathematics for years and are still relatively young.

How about a paragraph per day ?

<comment><USER19> Depends on how dense your source material is.

No matter your level of sophistication, if you are making it through ten pages a day, you should probably switch to harder material.

The specific number doesn't matter too much, though.

If you get through one page of dense math an hour, you are doing well.

<comment><USER65> I agree, with a caveat (see my answer to d-equivalence): In Undergraduate level for example, I think it would be useless to look for harder material for no other reason than the very fact it is hard. The person still has to learn the basics and that's the most important thing. Challenges are yet to come.

 _But_ , I agree that the material can be _boring_ and too basic. This is why I have always preferred Soviet books (they get directly to the point and don't address stuff you _should know_ ) vs. US books (that will go back to high- school level to bring you up to speed, after which you want to sleep). Generalisation, of course.

<comment><USER19> Tried any classic French books?

</comment></comment></comment></comment></comment><comment><USER66> Sometimes you need to step away from something completely for a while

</comment><comment><USER67> Who's game are you playing? Yours or Thiers?

</comment><comment><USER68> Don't have fear of fashion trends.

</comment><comment><USER69> i facing the same problem :(

</comment><comment><USER70> Look just finish a project, it doesn't matter what it is, and it'll resolve a lot the issues you're fighting with.

<comment><USER71> Agree.

Deadlines provide constraints. Constraints help with prioritization.</comment></comment>


WebAssembly Pathtracer - <AUTHOR> http://aras-p.info/blog/2018/11/16/Pathtracer-17-WebAssembly/ <comment><AUTHOR> Would be nice to see another version compiled with threads, since both Firefox and Chrome have them available as flags.

<comment><USER2> Also a comparison to standard JS output.</comment></comment>