Dependencies are unavoidable, true, but it's a good practice to vet libraries before you include them and make sure they're worth the risk.
The risk with Open Source libraries is usually long term maintenance - will the project be maintained for the lifetime of my project? If the project is not maintained, is it something you're willing to take on and will the license and community let you fork it? If not, there's risk.
You also have the risk we see here - ideology trumping pragmatism (that's a nice way of saying the developer had a fit and took his toys away for reasons even he doesn't fully understand). In those cases, you also have the chance to fork, assuming the license/community allows it.
For trivial operations, such as left padding, it's almost never worth the risk to use a library unless it's part of the language's standard library. Sure, don't write your own FFT or ORM, but if you can code a function in a few minutes for a well defined problem, there's no reason to add an external dependency.
Ignore peak oil, you've hit the real problem: large intelligent, underemployed, and underfunded populations.
Thanks to basic math, it's happening already with the royal family in Saudi Arabia. Up to a point, populations grow exponentially (S-curves rather than real exponential curves). When the Sauds took over, they were essentially a small tribe with a leader and a few princes. Fast forward a number of generations, and guess what, now you still have one leader but tens of thousands of princes (ever wonder why so many people have met Saudi princes? there happen to be many of them).
I had the privilege of working with a prince during a stint in the Kingdom. This was his biggest concern for their future: the royal family was too large and budget could not keep up with the cost of the entitlements. And, unlike welfare recipients in America, these really were entitled people. They all saw the previous generations living like, well, kings. They still do OK, but must live more modestly and are encouraged to work to supplement their income.
My friend was very concerned that most of the other princes would have difficulty transitioning and that the next generations (which, thanks again math, will be even larger) will have no social or economic system to fall back on.
Regardless of when peak oil happens, peak prince has already occurred.
Not necessarily. _If_ Uber goes public, those researchers will have at least a year long lockout period where they won't be able to sell any shares or exercise any options. That's assuming they got good packages to begin with and asked the important questions about the shares they were being offered.
If they're like most engineers, the high salary, cool work environment, and other perks distracted them from the specifics of their equity packages. (and really, if they're smart, the negotiated better pay instead of better equity).
In the last boom, I joined a company that had just gone public (Critical Path, cp.net). They had products, revenue, and a solid team. They also had one rogue sales executive who faked $25M or so in revenue. Within a year, all value in the company was gone. Most employees had their options worth the strike price at the end of their lockout period. Many also had taken out loans to pay the tax bills on the earlier value of their options. Very few people made enough to buy more than a nice TV, many more walked away with a 2nd mortgage they're still stuck with.
There's a great chance Uber's value will tank after an IPO when the public's had a chance to really look at their business. Don't you wonder why they haven't gone public yet?
What bothers me most about this situation is that these 40 researchers likely just threw away promising careers. Let me explain...
Uber, love it or hate it, is currently fueled up by large amounts of venture capital. The vast majority of that money is spent on lawyers and lobbyists working to change the laws to allow Uber's core business (software for transportation and delivery networks) to continue to exist. Some of it is used to subsidize their independent contractors to allow the contractors to provide downstream services at a price that customers will accept. The rest of the money appears to be spent on research projects to replace humans contractors.
Uber can do the latter for one simple reason: they have more money than needed for their core business. It's the same reason Google/Alphabet and Apple can invest in self-driving cars and other fun projects. The difference is that Google has a solid revenue stream from their advertising business, Apple has a strong hardware business, and neither rely on the VC community to fund their moonshots. Uber is not Google or Apple for one simple reason: they are not supported by revenue and won't be for a while.
Now, at some point in the near future Uber's investors need an exit. Uber does not have the revenues to pay back investors using dividends. The billions put into the company need to be converted into tens or hundreds of billions at the next round. The IPO market is not terribly strong at this point and there are few hedge funds or private equity firms that could finance a private round of that scale. There will be pressure soon on Uber to find a way out.
And, if you think Uber will suddenly find the revenue, consider this: the entire US taxi industry is worth around $11B. Given that Uber tends to undercut taxi rates by at least 20%, that's around $8B total Uber could expect if they cornered the entire market. Almost all of that will be paid to contractors, leaving a low margin business for Uber. I think Uber's investors know this, which is why they're currently letting Uber play around with moonshots while they still have cash in the bank. Ride sharing alone, the only thing Uber's been successful at, can't justify the investment and valuations. And at some point, Uber's contractors will need new cars, which their current paychecks don't really allow for.
tl;dr up to now: Uber spends a lot of other people's money on things not directly related to its current core revenue-generating business. Those investors need an exit soon or they will cut their loses and move on to the Next Big Thing. There letting Uber try to find the NBT, but that won't last.
Back to the researchers... They all left academic careers to pursue riches in the private sector. There's nothing wrong with that (it's exactly what I've done - I have a Ph.D. in CS and run a tech company). However, if they're like most academics I know, they don't really understand business enough to appreciate the consequences of this decision.
As outlined above, Uber as a bottomless source of capital is not long for this world. When Uber starts reigning in projects to find out which ones can generate sustaining revenue (or worst case, gets sold for parts), research projects will be the first to go. No company that's not wildly profitable has been able to sustain that level of research spend. And even profitable companies tend to cut their research staff when they need to improve the numbers. This is just the reality of corporate research.
Uber's cuts will likely coincide with the downturn in this business cycle, which will also mean fewer corporate research jobs, even for roboticists. As everyone with a Ph.D. knows, academic jobs are few and far between, even in the hottest fields. CMU will likely have their positions filled by the time their old staff wants their jobs back. What's worse is that there will be fewer jobs available and many of the researchers will have to take a step back in their careers to continue working in their chosen field.
... From winning a game with simple rules to saying we don't need any more breakthroughs to get to true AI.
Every time a computer beats a human at a "smart" game, we hear the same thing. And every time, when all is said and done, all we have is a program that can play a game well (and maybe a really aggressive marketing campaign to sell consulting services, Watson).
Look, we barely understand what intelligence is let alone know what it means to have a computer replicate it. We can have computers perform tasks that we ascribe to smart people and call it intelligence, but that's about it right now.
And, with deep learning and neural nets, we haven't gained any real insights into intelligence. We just have a black box mathematical function that can play a game.
Given that I never paid more than around $20/year for their print subscription, that's a bit steep. I'm all for subscription models for my favorite sites (Wired's one that I go to for entertaining tech news). $5-10 a year, and I'm in.
Heck, for that price, I'll even be OK with static ads that I know are sourced by Wired directly. Wired's demographics are people who like geeky toys. A few car companies could probably fund the whole site. You don't need targeted tracking and all the schemes to make sure everyone who ever showed an ad to the user gets a cut of the sale. Keep it simple!
There's nothing wrong with depending on 3rd party tools and products. The problem is that most of the REST APIs that people are more and more dependent on are services, not traditional libraries.
If a library vendor goes out of business, I still have the last copy of the library and possibly even the source code. My product can continue to function until I find a suitable replacement. This is an acceptable cost of doing business, especially since commonly used libraries rarely just disappear.
If a service API goes down, my product is essentially bricked until I find and implement a replacement. This is one of those risks that most modern (er, young) developers don't appreciate. We haven't had a bust yet that shuts down a number of services over a relatively short period of time (hint: if you're using the service for free/at-a-cost-less-than-power-consumption or if it's not the vendor's core business, such as Parse, there's a good chance it will go away at some point). When that happens, the successful apps that relied on less successful services will be in a tough spot.
It'd be fun to do an analysis of the various API services people use and their interdependencies. I bet we'd find a few really scary single points of failure...
I remember when Web Master was the hottest job on the market with six figure salaries and bountiful job prospects. Then we realized that part of their job was better handled by sys admins (setting up and maintaining the web server infrastructure) and the other part has better handled by a combination of software developers and designers (with some HTML chops).
Data science will go the same way. Half the job (gathering, transforming, processing data) will go back to traditional analysts (what data scientists used to be called), half the job will go back to software engineers (writing the tools that do the processing), and both will rely on statisticians to ensure they're actually doing their analysis correctly. (ok, just kidding on the last one, they'll keep doing sloppy analyses and no one will be the wiser - see: blindly applying p-values and t-tests, picking an arbitrary 'k' for k-means clustering, using discrete classifiers for continuous values (and vice versa), deep learning, and so on... )
You're posting as an AC, so it's not really worth responding, but...
Please give me some citations to support your claims that millions are dying due to the FDA holding back innovative treatments.
While you're at it, give me some citations that show that the average American can properly interpret the result of self-prescribed tests and make sound medical decisions on their own without the advice of experts.
For the first, cancer is the genomic disease that kills the most people. There are roughly 600k cancer deaths per year in the US (http://www.cancer.org/acs/groups/content/@editorial/documents/document/acspc-044509.pdf) While it's a high number, it's hardly millions (there are about 1.6M new cancer diagnoses per year). And there just aren't any good blanket approaches on the horizon that will make a dent in that number (there are lots of interesting things being tried, but none of them have panned out yet, despite what [pick your favorite popular science magazine] might tell you).
For the second, I'll "cite" the entire anti-vax community as my counter example. But also see my comment about GWAS and reproducibility (and do the research yourself, it will help you understand how complex and incomplete the data actually is). Most of the science around genomics is not settled yet. And even in the cases where it is, there's still a lot of uncertainty around appropriate responses and treatments.
I also challenge you to get your genome sequenced and analyze the data yourself. And by that, I mean actually get your genome sequenced, don't do 23andMe's microarray panel. Google "whole genome sequencing service providers" to get a list of places that will do it for you. Go for 30x coverage to get data you can use for variant detection. Do an exome panel if WGS is too expensive for your budget, you'll get most of the useful information with that.
The ability to sequence individuals is definitely one of the most interesting things going on in biology right now, but it's still in its infancy as far as our ability to understand and apply it. We'll get there, but it's going to take time and effort.
Single cell sequencing isn't useful as a diagnostic technique for the same reason I outlined above: every cell has a slightly different genome sequence.
When you're sequencing for diagnostics, you need a consensus genome for the tissue or tumor, not the genome for individual cell in the tissue or tumor. That's because not every cell in the tumor will necessarily have the variation that led to the tumors and it's possible for a single tumor cell to be in the healthy tissue. It's only over populations of cells that the negative effects can be measured properly.
If you're measure gene expression instead of DNA variants (e.g., looking for gene fusions), the problem is even worse. Not only do you need to sample many cells, but some of those cells need to be actively expressing the damaged gene to be able to sequencing it.
Disclaimer: I helped develop a single cell sequencing product and currently run a gene sequencing software company. I'm also friends with people at the FDA. I can assure you, they're not protecting profits for anyone and have the best interests of the patients in mind. It might look like bureaucratic overreach at times, but their goal is for only safe products enter the marketplace.
That goes for interpretation, too, which is why 23andMe got smacked down so hard. The science connecting genotypes to phenotypes is not as strong as the popular press would have you believe (there's currently a reproducibility crisis in the whole genome association study (WGAS) community, where most of the disease/gene associations come from). Sure, you can go to pub med and read all the studies, but understanding the body of knowledge to place those studies in context is difficult even for professionals.
"Are you so sure? Does it not make some sense that advancements could be made on how much you need to collect?"
On this point, yes, we're pretty sure.
Here's the problem: when there's something bad (bacteria, virus, mutated DNA) in your system, it usually appears in very small copy numbers (copy number is a technical term that tells you how many copies of something you see in a given sample). The relative abundance (another commonly used term that tells you how common your target is compared to everything else in the sample) of the bad stuff (not a technical term) is usually very small compared to the good stuff. So much so, that often times you need a large sample just to get a single copy of a bad thing. In most biological systems, we're talking needle-in-a-haystack small copy numbers for bad things.
Think of it this way: Let's say you have a gallon bucket full of coins with only a few quarters. You randomly sample a cup of coins. Can you confidently say there are no quarters in the bucket? Now say the coins are flowing through a series of tubes (no, these are not bitcoins on the internet) and your sample is determined by the coins present when you siphon off your cup's worth. What would the relative abundance need to be before you can confidently say quarters are present in the system using a cup for sampling? How about using a quart for sampling?
Somewhat like the laws of thermodynamics limit the ability to create perpetual motion machines, relative abundance/copy number place hard limits on the sample sizes needed to detect things in blood with confidence.
"Who ever heard of a language you had to pay to use?"
S/S-Plus, SPSS, Matlab, IDL, PV-WAVE, Mathematica, AutoLisp (AutoCAD's language) and a range of other smaller languages developed in the late 70s and 80s and targeted at very specific technical markets.
To some extent, Palantir, Tableau, Spotfire, and even Excel also all are programming environments that are close enough to languages to count here (they all have solutions close to Scratch in spirit).
I'm just scratching the surface - every industry has these languages and environments. Sure, Python (NumPy/Matplotlib), R, and many of the Java-based environments and C++ libraries can be used to replace these, but most customers don't necessarily have the resources or time to move to these solutions. And, those solutions are never complete replacements. Believe it or not (yeah, I know this is/.), many people see value in using commercial solutions that meet their needs better than the free-as-in-beer/Free-as-in-ideology alternatives.
-Chris
ps: Don't forget Oracle and their flavors of Java and PL/SQL that are tightly integrated with the database
Google and Facebook make almost all of their money from advertising/consumer tracking related activities. Both would be very different companies of they had to rely on direct revenue sources.
Facebook could shift to a subscription model and probably do fine - I'm guessing at least 100M or so people will pay $5-10 a month to keep sharing photos with friends and family - FB works well to keep people connected. If they can't run their infrastructure and development on $500M-$1B a month, they already have bigger issues that will bring them down.
Google will have a harder time. They have nothing of value that could fund their operations beyond the ad/tracking services. A crash in the ad market would probably be the end for Google.
Amazon is probably fine for a long time. The web needs a storefront, Amazon provides it.
Apple can crash by ignoring user's needs. As a hardware company with a ton of money in the bank, it will take a while. But, Apple could lose market share quickly if another consumer computing trend emerges that cuts into their hardware business. See Blackberry for a recent example.
MS is too entrenched in the business/consumer world to go anywhere. Just like Oracle won't go anywhere for a long time.
First off: avoid the algorithm and math problems. The one or two geeks in the class will love them, the rest of the class will be turned off from programming for the rest of their lives. I have a Ph.D. in CS and still hate those types of problems (ok, I have a love/hate relationship with those types of problems - i love them, but hate using them for pedagogical purposes).
That said, the single best intro to programming/software engineering project I had was a graphics programming project when we barely knew how to program. Our professor gave us a small library that had functions like "create_window()", "draw_rect()", "clear_screen()", "get_input()" and had us do a series of exercises that put objects on the screen, moved them around, and then refactored into our own graphics library. Some of the more advanced students made simple games.
From a software engineering perspective, this taught a number of important lessons early on:
- Code reuse/trusting third party code (we had a library for the complex stuff - if you can stop NIH syndrome before it starts, you've already won) - User interfaces (we had to get some input from the user to decide what to draw) - Event loops (software does not live in a vacuum, despite what the functional guys want you to believe;) ) - Debugging/iterative development (no one's project worked the first time) - Teamwork (do this as a team, have different members write different parts to learn how to interface with other programmers... save pair programming for later) - Refactoring/code organization (how to recognize when you've wrote the same code for each shape and move that into a function) - That you can do cool looking things easily with software (never underestimate the power of a graphics to get people excited about computers)
This was in 1992, so we used X windows on Sparc stations and wrote everything in C.
In 2016, here's how I'd do the same project:
- Use (simple) Javascript (get over any biases you might have) - Stick with simple functions and introduce hash tables/dicts as a general purpose container. Don't do objects (esp in JS, since there are too many ways to do them) - Provide a library that creates an SVG canvas (use this as the graphics area) - Create a few related elements like a text box or buttons for controls and user input, but do this via your library - Have a mechanism for callbacks/closures (don't tell them what they are yet and lose them, just show them how to use them) - Do it entirely in the browser with a simple text editor (this is a development environment everyone has on their computer already, IDEs are a course on their own) - Have some exercises that use the interactive developer interpreter - For the advanced students, give them a library call for loading remote data and have them change their graphics in response to it
In addition to the stuff we learned, this also:
- Introduces the browser as a development/rapid prototyping platform - Gives students a basic idea of how web content gets made - Teaches some basic networking - Gives the advanced students a platform to get creative with
The app, if you haven't seen it, is an interactive "book" that covers the basics of the video system for the Atari 2600. It uses a mix of prose and a basic simulator to introduce and demonstrate different techniques:
Sure, programming the 2600 is a world removed from Victorian England, but interactive content done right can be very engaging, as David's app demonstrates.
I'm sure there are countless other examples of interactive content people have developed for mobile devices, and those might be the reason we don't see more of them...
My advisor had a good way of keeping his student's writing modest and in check. First, words like the ones these researchers looked for just we're allowed. But, to really drive the point home, he'd replace every instance of "very" with "damn". It was damn interesting to read your manuscript in that context.
"explain how poor people are prevented from voting "
A few ways. First, make sure the polling hours are during the work day when poor people have to make a decision between feeding their kids that night or voting. Also, make sure early voting has a short window. Then, require IDs to vote. But not just any ids, limit it to IDs that take some effort to get, like drivers licenses or state issued ID cards that can only be issued at the DMV. Close some DMVs and keep the other ones open only during those pesky business hours. Ensure the lines are long enough that it will require a three hour time commitment to get an ID. Once they reach the counter, turn them away because they're lacking some random piece of paperwork, even though they have more than enough with them to establish identity (true story: this is what happened to me last time I renewed my license in Texas - two afternoons off work and six hours in line).
That'll keep poor people from voting.
"[explain how] rich people who are non-residents can vote in local elections"
They can't, but they can flood the media with their message a strongly influence elections. They can also ensure that only topics that matter to them make it on the ballot. And after the election, they can just get their buddies who just got elected to do their bidding.
"That goes counter to every election system I've ever heard of."
My guess is that you've only read about elections systems in textbooks and never bothered to learn how they're actually implemented and commonly manipulated. As long as we've had electoral processes, people have found ways to game them.
Um, the OP is wrong about the status quo? Look, most good devs I know with 5+ years experience make in the mid $100k range, have great benefits, and can find a new job on a moment's notice. If they consult, they do it because they can have a nice rate that gives them flexibility in other areas of their life. Most non-devs I know would love to make half what the devs make and have that type of job security. (and I'm not located in CA, NY, WA, or MA)
Also, most startup CEOs don't make millions. Most are looking for new jobs after a few years of making nothing. As for non-startup SMEs (small/medium enterprises), most of the ones that employee technical talent treat that talent well. Sure, if things go south, they may have to lay people off, but see my first paragraph for the solution.
Remind me what's wrong with the status quo???
tl;dr; developers have it really good right now. Quit your bitching.
I think it's actually simpler than that. I don't think Facebook can technically do it.
You can look at the ordering and filtering issues from two perspectives:
1) It's a great feature for the user to de-clutter their timeline and show them relevant posts. 2) Showing every post to each user and giving users more custom filtering tools is actually technically challenging due to the underlying architecture of Facebook
My money's on option 2. That's not to say that you couldn't architect a system that does exactly that, but I suspect Facebook is too far invested in their platform to change things drastically.
Not sure about in the US, but back when I was in Thailand in the early 90s, I remember a Bangkok Post feature article that interviewed a number of "hit men". It seemed fairly legit, even if the stories were embellished. Most of it was centered around the regional drug trade. Of every newspaper article I've read, that's one I wish I'd kept. It was one part John Woo, one part local news investigative reporting.
This is something IT freelancers need to learn from other billable industries: any time spent on the client is billable. Interior designers, architects, lawyers, doctors, lobbyists, ad agencies and every other upper-middle class profession based around working with clients works this way. It's normal and as long as you're up front about it, no one will think twice about it.
Break up your time into 15 minute chunks and bill for it anytime you're doing something for your client.
Dependencies are unavoidable, true, but it's a good practice to vet libraries before you include them and make sure they're worth the risk.
The risk with Open Source libraries is usually long term maintenance - will the project be maintained for the lifetime of my project? If the project is not maintained, is it something you're willing to take on and will the license and community let you fork it? If not, there's risk.
You also have the risk we see here - ideology trumping pragmatism (that's a nice way of saying the developer had a fit and took his toys away for reasons even he doesn't fully understand). In those cases, you also have the chance to fork, assuming the license/community allows it.
For trivial operations, such as left padding, it's almost never worth the risk to use a library unless it's part of the language's standard library. Sure, don't write your own FFT or ORM, but if you can code a function in a few minutes for a well defined problem, there's no reason to add an external dependency.
-Chris
After a childhood living on the wrong coast to watch shuttle launches, I'm finally within driving distance of a launch facility (live in Austin).
Has anyone gone down to Brownsville to watch a launch? Any tips?
-Chris
Ignore peak oil, you've hit the real problem: large intelligent, underemployed, and underfunded populations.
Thanks to basic math, it's happening already with the royal family in Saudi Arabia. Up to a point, populations grow exponentially (S-curves rather than real exponential curves). When the Sauds took over, they were essentially a small tribe with a leader and a few princes. Fast forward a number of generations, and guess what, now you still have one leader but tens of thousands of princes (ever wonder why so many people have met Saudi princes? there happen to be many of them).
I had the privilege of working with a prince during a stint in the Kingdom. This was his biggest concern for their future: the royal family was too large and budget could not keep up with the cost of the entitlements. And, unlike welfare recipients in America, these really were entitled people. They all saw the previous generations living like, well, kings. They still do OK, but must live more modestly and are encouraged to work to supplement their income.
My friend was very concerned that most of the other princes would have difficulty transitioning and that the next generations (which, thanks again math, will be even larger) will have no social or economic system to fall back on.
Regardless of when peak oil happens, peak prince has already occurred.
-Chris
Not necessarily. _If_ Uber goes public, those researchers will have at least a year long lockout period where they won't be able to sell any shares or exercise any options. That's assuming they got good packages to begin with and asked the important questions about the shares they were being offered.
If they're like most engineers, the high salary, cool work environment, and other perks distracted them from the specifics of their equity packages. (and really, if they're smart, the negotiated better pay instead of better equity).
In the last boom, I joined a company that had just gone public (Critical Path, cp.net). They had products, revenue, and a solid team. They also had one rogue sales executive who faked $25M or so in revenue. Within a year, all value in the company was gone. Most employees had their options worth the strike price at the end of their lockout period. Many also had taken out loans to pay the tax bills on the earlier value of their options. Very few people made enough to buy more than a nice TV, many more walked away with a 2nd mortgage they're still stuck with.
There's a great chance Uber's value will tank after an IPO when the public's had a chance to really look at their business. Don't you wonder why they haven't gone public yet?
-Chris
What bothers me most about this situation is that these 40 researchers likely just threw away promising careers. Let me explain...
Uber, love it or hate it, is currently fueled up by large amounts of venture capital. The vast majority of that money is spent on lawyers and lobbyists working to change the laws to allow Uber's core business (software for transportation and delivery networks) to continue to exist. Some of it is used to subsidize their independent contractors to allow the contractors to provide downstream services at a price that customers will accept. The rest of the money appears to be spent on research projects to replace humans contractors.
Uber can do the latter for one simple reason: they have more money than needed for their core business. It's the same reason Google/Alphabet and Apple can invest in self-driving cars and other fun projects. The difference is that Google has a solid revenue stream from their advertising business, Apple has a strong hardware business, and neither rely on the VC community to fund their moonshots. Uber is not Google or Apple for one simple reason: they are not supported by revenue and won't be for a while.
Now, at some point in the near future Uber's investors need an exit. Uber does not have the revenues to pay back investors using dividends. The billions put into the company need to be converted into tens or hundreds of billions at the next round. The IPO market is not terribly strong at this point and there are few hedge funds or private equity firms that could finance a private round of that scale. There will be pressure soon on Uber to find a way out.
And, if you think Uber will suddenly find the revenue, consider this: the entire US taxi industry is worth around $11B. Given that Uber tends to undercut taxi rates by at least 20%, that's around $8B total Uber could expect if they cornered the entire market. Almost all of that will be paid to contractors, leaving a low margin business for Uber. I think Uber's investors know this, which is why they're currently letting Uber play around with moonshots while they still have cash in the bank. Ride sharing alone, the only thing Uber's been successful at, can't justify the investment and valuations. And at some point, Uber's contractors will need new cars, which their current paychecks don't really allow for.
tl;dr up to now: Uber spends a lot of other people's money on things not directly related to its current core revenue-generating business. Those investors need an exit soon or they will cut their loses and move on to the Next Big Thing. There letting Uber try to find the NBT, but that won't last.
Back to the researchers... They all left academic careers to pursue riches in the private sector. There's nothing wrong with that (it's exactly what I've done - I have a Ph.D. in CS and run a tech company). However, if they're like most academics I know, they don't really understand business enough to appreciate the consequences of this decision.
As outlined above, Uber as a bottomless source of capital is not long for this world. When Uber starts reigning in projects to find out which ones can generate sustaining revenue (or worst case, gets sold for parts), research projects will be the first to go. No company that's not wildly profitable has been able to sustain that level of research spend. And even profitable companies tend to cut their research staff when they need to improve the numbers. This is just the reality of corporate research.
Uber's cuts will likely coincide with the downturn in this business cycle, which will also mean fewer corporate research jobs, even for roboticists. As everyone with a Ph.D. knows, academic jobs are few and far between, even in the hottest fields. CMU will likely have their positions filled by the time their old staff wants their jobs back. What's worse is that there will be fewer jobs available and many of the researchers will have to take a step back in their careers to continue working in their chosen field.
If only a few researcher
Of course, you can adjust your adjustment and replace Facebook with MySpace and the OP's point holds true.
-Chris
Every time a computer beats a human at a "smart" game, we hear the same thing. And every time, when all is said and done, all we have is a program that can play a game well (and maybe a really aggressive marketing campaign to sell consulting services, Watson).
Look, we barely understand what intelligence is let alone know what it means to have a computer replicate it. We can have computers perform tasks that we ascribe to smart people and call it intelligence, but that's about it right now.
And, with deep learning and neural nets, we haven't gained any real insights into intelligence. We just have a black box mathematical function that can play a game.
Given that I never paid more than around $20/year for their print subscription, that's a bit steep. I'm all for subscription models for my favorite sites (Wired's one that I go to for entertaining tech news). $5-10 a year, and I'm in.
Heck, for that price, I'll even be OK with static ads that I know are sourced by Wired directly. Wired's demographics are people who like geeky toys. A few car companies could probably fund the whole site. You don't need targeted tracking and all the schemes to make sure everyone who ever showed an ad to the user gets a cut of the sale. Keep it simple!
-Chris
There's nothing wrong with depending on 3rd party tools and products. The problem is that most of the REST APIs that people are more and more dependent on are services, not traditional libraries.
If a library vendor goes out of business, I still have the last copy of the library and possibly even the source code. My product can continue to function until I find a suitable replacement. This is an acceptable cost of doing business, especially since commonly used libraries rarely just disappear.
If a service API goes down, my product is essentially bricked until I find and implement a replacement. This is one of those risks that most modern (er, young) developers don't appreciate. We haven't had a bust yet that shuts down a number of services over a relatively short period of time (hint: if you're using the service for free/at-a-cost-less-than-power-consumption or if it's not the vendor's core business, such as Parse, there's a good chance it will go away at some point). When that happens, the successful apps that relied on less successful services will be in a tough spot.
It'd be fun to do an analysis of the various API services people use and their interdependencies. I bet we'd find a few really scary single points of failure...
-Chris
I remember when Web Master was the hottest job on the market with six figure salaries and bountiful job prospects. Then we realized that part of their job was better handled by sys admins (setting up and maintaining the web server infrastructure) and the other part has better handled by a combination of software developers and designers (with some HTML chops).
Data science will go the same way. Half the job (gathering, transforming, processing data) will go back to traditional analysts (what data scientists used to be called), half the job will go back to software engineers (writing the tools that do the processing), and both will rely on statisticians to ensure they're actually doing their analysis correctly. (ok, just kidding on the last one, they'll keep doing sloppy analyses and no one will be the wiser - see: blindly applying p-values and t-tests, picking an arbitrary 'k' for k-means clustering, using discrete classifiers for continuous values (and vice versa), deep learning, and so on... )
-Chris
You're posting as an AC, so it's not really worth responding, but...
Please give me some citations to support your claims that millions are dying due to the FDA holding back innovative treatments.
While you're at it, give me some citations that show that the average American can properly interpret the result of self-prescribed tests and make sound medical decisions on their own without the advice of experts.
For the first, cancer is the genomic disease that kills the most people. There are roughly 600k cancer deaths per year in the US (http://www.cancer.org/acs/groups/content/@editorial/documents/document/acspc-044509.pdf) While it's a high number, it's hardly millions (there are about 1.6M new cancer diagnoses per year). And there just aren't any good blanket approaches on the horizon that will make a dent in that number (there are lots of interesting things being tried, but none of them have panned out yet, despite what [pick your favorite popular science magazine] might tell you).
For the second, I'll "cite" the entire anti-vax community as my counter example. But also see my comment about GWAS and reproducibility (and do the research yourself, it will help you understand how complex and incomplete the data actually is). Most of the science around genomics is not settled yet. And even in the cases where it is, there's still a lot of uncertainty around appropriate responses and treatments.
I also challenge you to get your genome sequenced and analyze the data yourself. And by that, I mean actually get your genome sequenced, don't do 23andMe's microarray panel. Google "whole genome sequencing service providers" to get a list of places that will do it for you. Go for 30x coverage to get data you can use for variant detection. Do an exome panel if WGS is too expensive for your budget, you'll get most of the useful information with that.
The ability to sequence individuals is definitely one of the most interesting things going on in biology right now, but it's still in its infancy as far as our ability to understand and apply it. We'll get there, but it's going to take time and effort.
-Chris
And by WGAS, I meant GWAS (genome-wide association study). Post-workday brain kicking in...
-Chris
Single cell sequencing isn't useful as a diagnostic technique for the same reason I outlined above: every cell has a slightly different genome sequence.
When you're sequencing for diagnostics, you need a consensus genome for the tissue or tumor, not the genome for individual cell in the tissue or tumor. That's because not every cell in the tumor will necessarily have the variation that led to the tumors and it's possible for a single tumor cell to be in the healthy tissue. It's only over populations of cells that the negative effects can be measured properly.
If you're measure gene expression instead of DNA variants (e.g., looking for gene fusions), the problem is even worse. Not only do you need to sample many cells, but some of those cells need to be actively expressing the damaged gene to be able to sequencing it.
Disclaimer: I helped develop a single cell sequencing product and currently run a gene sequencing software company. I'm also friends with people at the FDA. I can assure you, they're not protecting profits for anyone and have the best interests of the patients in mind. It might look like bureaucratic overreach at times, but their goal is for only safe products enter the marketplace.
That goes for interpretation, too, which is why 23andMe got smacked down so hard. The science connecting genotypes to phenotypes is not as strong as the popular press would have you believe (there's currently a reproducibility crisis in the whole genome association study (WGAS) community, where most of the disease/gene associations come from). Sure, you can go to pub med and read all the studies, but understanding the body of knowledge to place those studies in context is difficult even for professionals.
-Chris
"Are you so sure? Does it not make some sense that advancements could be made on how much you need to collect?"
On this point, yes, we're pretty sure.
Here's the problem: when there's something bad (bacteria, virus, mutated DNA) in your system, it usually appears in very small copy numbers (copy number is a technical term that tells you how many copies of something you see in a given sample). The relative abundance (another commonly used term that tells you how common your target is compared to everything else in the sample) of the bad stuff (not a technical term) is usually very small compared to the good stuff. So much so, that often times you need a large sample just to get a single copy of a bad thing. In most biological systems, we're talking needle-in-a-haystack small copy numbers for bad things.
Think of it this way: Let's say you have a gallon bucket full of coins with only a few quarters. You randomly sample a cup of coins. Can you confidently say there are no quarters in the bucket? Now say the coins are flowing through a series of tubes (no, these are not bitcoins on the internet) and your sample is determined by the coins present when you siphon off your cup's worth. What would the relative abundance need to be before you can confidently say quarters are present in the system using a cup for sampling? How about using a quart for sampling?
Somewhat like the laws of thermodynamics limit the ability to create perpetual motion machines, relative abundance/copy number place hard limits on the sample sizes needed to detect things in blood with confidence.
-Chris
"Who ever heard of a language you had to pay to use?"
S/S-Plus, SPSS, Matlab, IDL, PV-WAVE, Mathematica, AutoLisp (AutoCAD's language) and a range of other smaller languages developed in the late 70s and 80s and targeted at very specific technical markets.
To some extent, Palantir, Tableau, Spotfire, and even Excel also all are programming environments that are close enough to languages to count here (they all have solutions close to Scratch in spirit).
I'm just scratching the surface - every industry has these languages and environments. Sure, Python (NumPy/Matplotlib), R, and many of the Java-based environments and C++ libraries can be used to replace these, but most customers don't necessarily have the resources or time to move to these solutions. And, those solutions are never complete replacements. Believe it or not (yeah, I know this is /.), many people see value in using commercial solutions that meet their needs better than the free-as-in-beer/Free-as-in-ideology alternatives.
-Chris
ps: Don't forget Oracle and their flavors of Java and PL/SQL that are tightly integrated with the database
Google and Facebook make almost all of their money from advertising/consumer tracking related activities. Both would be very different companies of they had to rely on direct revenue sources.
Facebook could shift to a subscription model and probably do fine - I'm guessing at least 100M or so people will pay $5-10 a month to keep sharing photos with friends and family - FB works well to keep people connected. If they can't run their infrastructure and development on $500M-$1B a month, they already have bigger issues that will bring them down.
Google will have a harder time. They have nothing of value that could fund their operations beyond the ad/tracking services. A crash in the ad market would probably be the end for Google.
Amazon is probably fine for a long time. The web needs a storefront, Amazon provides it.
Apple can crash by ignoring user's needs. As a hardware company with a ton of money in the bank, it will take a while. But, Apple could lose market share quickly if another consumer computing trend emerges that cuts into their hardware business. See Blackberry for a recent example.
MS is too entrenched in the business/consumer world to go anywhere. Just like Oracle won't go anywhere for a long time.
Just my quick thoughts on the topic...
-Chris
First off: avoid the algorithm and math problems. The one or two geeks in the class will love them, the rest of the class will be turned off from programming for the rest of their lives. I have a Ph.D. in CS and still hate those types of problems (ok, I have a love/hate relationship with those types of problems - i love them, but hate using them for pedagogical purposes).
That said, the single best intro to programming/software engineering project I had was a graphics programming project when we barely knew how to program. Our professor gave us a small library that had functions like "create_window()", "draw_rect()", "clear_screen()", "get_input()" and had us do a series of exercises that put objects on the screen, moved them around, and then refactored into our own graphics library. Some of the more advanced students made simple games.
From a software engineering perspective, this taught a number of important lessons early on:
- Code reuse/trusting third party code (we had a library for the complex stuff - if you can stop NIH syndrome before it starts, you've already won) ;) )
- User interfaces (we had to get some input from the user to decide what to draw)
- Event loops (software does not live in a vacuum, despite what the functional guys want you to believe
- Debugging/iterative development (no one's project worked the first time)
- Teamwork (do this as a team, have different members write different parts to learn how to interface with other programmers... save pair programming for later)
- Refactoring/code organization (how to recognize when you've wrote the same code for each shape and move that into a function)
- That you can do cool looking things easily with software (never underestimate the power of a graphics to get people excited about computers)
This was in 1992, so we used X windows on Sparc stations and wrote everything in C.
In 2016, here's how I'd do the same project:
- Use (simple) Javascript (get over any biases you might have)
- Stick with simple functions and introduce hash tables/dicts as a general purpose container. Don't do objects (esp in JS, since there are too many ways to do them)
- Provide a library that creates an SVG canvas (use this as the graphics area)
- Create a few related elements like a text box or buttons for controls and user input, but do this via your library
- Have a mechanism for callbacks/closures (don't tell them what they are yet and lose them, just show them how to use them)
- Do it entirely in the browser with a simple text editor (this is a development environment everyone has on their computer already, IDEs are a course on their own)
- Have some exercises that use the interactive developer interpreter
- For the advanced students, give them a library call for loading remote data and have them change their graphics in response to it
In addition to the stuff we learned, this also:
- Introduces the browser as a development/rapid prototyping platform
- Gives students a basic idea of how web content gets made
- Teaches some basic networking
- Gives the advanced students a platform to get creative with
Good luck!
-Chris
The app, if you haven't seen it, is an interactive "book" that covers the basics of the video system for the Atari 2600. It uses a mix of prose and a basic simulator to introduce and demonstrate different techniques:
https://itunes.apple.com/us/ap...
Sure, programming the 2600 is a world removed from Victorian England, but interactive content done right can be very engaging, as David's app demonstrates.
I'm sure there are countless other examples of interactive content people have developed for mobile devices, and those might be the reason we don't see more of them...
-Chris
My advisor had a good way of keeping his student's writing modest and in check. First, words like the ones these researchers looked for just we're allowed. But, to really drive the point home, he'd replace every instance of "very" with "damn". It was damn interesting to read your manuscript in that context.
We need more advisors like him.
-Chris
"explain how poor people are prevented from voting "
A few ways. First, make sure the polling hours are during the work day when poor people have to make a decision between feeding their kids that night or voting. Also, make sure early voting has a short window. Then, require IDs to vote. But not just any ids, limit it to IDs that take some effort to get, like drivers licenses or state issued ID cards that can only be issued at the DMV. Close some DMVs and keep the other ones open only during those pesky business hours. Ensure the lines are long enough that it will require a three hour time commitment to get an ID. Once they reach the counter, turn them away because they're lacking some random piece of paperwork, even though they have more than enough with them to establish identity (true story: this is what happened to me last time I renewed my license in Texas - two afternoons off work and six hours in line).
That'll keep poor people from voting.
"[explain how] rich people who are non-residents can vote in local elections"
They can't, but they can flood the media with their message a strongly influence elections. They can also ensure that only topics that matter to them make it on the ballot. And after the election, they can just get their buddies who just got elected to do their bidding.
"That goes counter to every election system I've ever heard of."
My guess is that you've only read about elections systems in textbooks and never bothered to learn how they're actually implemented and commonly manipulated. As long as we've had electoral processes, people have found ways to game them.
-Chris
Um, the OP is wrong about the status quo? Look, most good devs I know with 5+ years experience make in the mid $100k range, have great benefits, and can find a new job on a moment's notice. If they consult, they do it because they can have a nice rate that gives them flexibility in other areas of their life. Most non-devs I know would love to make half what the devs make and have that type of job security. (and I'm not located in CA, NY, WA, or MA)
Also, most startup CEOs don't make millions. Most are looking for new jobs after a few years of making nothing. As for non-startup SMEs (small/medium enterprises), most of the ones that employee technical talent treat that talent well. Sure, if things go south, they may have to lay people off, but see my first paragraph for the solution.
Remind me what's wrong with the status quo???
tl;dr; developers have it really good right now. Quit your bitching.
-Chris
I think it's actually simpler than that. I don't think Facebook can technically do it.
You can look at the ordering and filtering issues from two perspectives:
1) It's a great feature for the user to de-clutter their timeline and show them relevant posts.
2) Showing every post to each user and giving users more custom filtering tools is actually technically challenging due to the underlying architecture of Facebook
My money's on option 2. That's not to say that you couldn't architect a system that does exactly that, but I suspect Facebook is too far invested in their platform to change things drastically.
-Chris
Not sure about in the US, but back when I was in Thailand in the early 90s, I remember a Bangkok Post feature article that interviewed a number of "hit men". It seemed fairly legit, even if the stories were embellished. Most of it was centered around the regional drug trade. Of every newspaper article I've read, that's one I wish I'd kept. It was one part John Woo, one part local news investigative reporting.
Here's a recent article about one being captured: http://www.bangkokpost.com/pri...
Of course, I doubt any of them used a web site to drum up business...
-Chris
Whatever the language or application, the one constant for me has always been the editor. I'm sure that will remain the same.
This is something IT freelancers need to learn from other billable industries: any time spent on the client is billable. Interior designers, architects, lawyers, doctors, lobbyists, ad agencies and every other upper-middle class profession based around working with clients works this way. It's normal and as long as you're up front about it, no one will think twice about it.
Break up your time into 15 minute chunks and bill for it anytime you're doing something for your client.
-Chris