I remember thinking that sounds like a good way to build a below-average team that seems very impressive from the outside. When you look at what they're doing, this strategy actually starts to make a lot of sense.
They're selling a product that's somewhat incomprehensible. The value of that product is very difficult to measure, due to both its complexity and the "how do you put a dollar figure on social impact"-factor.
They're selling that product to government agencies, which probably can't properly evaluate that kind of purchase and don't care much about cost or ROI (due to government's inherently inefficient incentive structures). Credentials matter for winning contracts, because if you're the person who makes that decision, credentials and prestige are something tangible you can point to and prove you did your job.
This doesn't sound like the makings of a great respectable tech giant, though. This sounds more like one of those companies built specifically to exploit inefficiencies in government spending.
Like in "nobody ever got fired for choosing IBM"? Seems like they've just copied a page from an the old book... and this still works, and lots of more competent startups who could do their jobs better will not get those contracts.
- Upton Sinclair
As for getting the ax, that didn't happen to me, but even if it had, I've never had problems finding a job, nor have I ever lived paycheck-to-paycheck. It'd be inconvenient but that's about it.
The first is vague bordering on meaningless and trivially true for any engineer, the second is simply nonsensical without context. It's bullshit in both cases but I'd be much more inclined to ask about the latter, what it even means to deploy an engineer "forwards"?
I found that most forward deployed engineers are in practice deployed ever so slightly off-centre, and you really need to hire a couple of them to make sure it averages out. For tasks sensitive to robustness I sometimes like to stut them between a leftward and a rightward deployed engineer on either side.
How would you compare or contrast, say, EDS or Bloomberg?
It's as ignorant of basic technology as saying my car runs on a particular type of rubber so I can't use batteries.
Honestly, for a tech site I'm ashamed this is the top comment, just seems to be an excuse to rag on Palantir and decry not using the present FOTM.
The code at my current job is much better written, is more thoroughly tested, and is more pleasant to continue development on. The codebase at my previous job was a rat's nest, caused primarily by lower-skilled developers, no time allocated to technical debt or refactoring, a breakneck pace of product release, lack of a good automated testing suite, lack of good continuous integration and presubmits, and the weakly-typed/dynamic nature of JavaScript itself which doesn't scale well to larger server-side codebases.
So long as a given language/platform isn't deprecated (and Java definitely isn't), I'd rather work on a solid codebase in it than a weak codebase in a more alluring, recent language.
While the prize for Worst Tech Used in a Professional Setting might go to InterSystems Caché ® (syntax errors will bork your entire runtime, with no undo). And it's all downhill from there.
Nodejs (javascript + libuv, aka control flow obfuscation framework) is a strong contender. I've never worked so hard to make so little code reliable, robust, deployable. And there is no Right Way to use nodejs. Everything changing all the time, every day is a do-over.
As for Swing. Remove (or ignore) it's goofy MVC and it's just like Qt. State of the art UIMS for desktop when they both came out.
I wish JavaScript were statically typed, but I'm not convinced about switching to TypeScript yet. I can see other ways Node.js could be frustrating.
NodeJS leverages the advanced V8 JIT and async operation in its crudest form. It's good for certain classes of tasks (a lot of I/O with simple logic around it), but not as great for the more general case.
OTOH Typescript can alleviate many of the problems of JS proper, the execution model is still a bit uncomfortable. I'd rather take Erlang /Elixir for the typical Node case.
> the weakly-typed/dynamic nature of JavaScript itself which doesn't scale well to larger server-side codebases
has less to do with it.
Do you really feel that your strongly-typed Java job would be so great if all of the other poor practices of your previous job were in place?
I have to say that, just looking at the language itself, C# is probably my favorite, but the surrounding stack including Windows makes me prefer Java on Linux to it, especially Java 8 because of its support for lambdas.
Although, it's also been my experience that the other factors mentioned have more of a role than the attributes of the languages involved themselves.
Have your ever tried to maintain a large js project? It gets harder the bigger the codebase gets.
Read about AXD 301 development.
There's absolutely great test and CI tooling for JavaScript. The fact that you and your team didn't spend enough time to develop an expertise with them isn't the languages fault.
I'm more inclined to think that Palantir's problems are inherent to the enterprise revenue equation.
"Features and code quality that aren't contractually mandated" = profit
The more things you can put in that category, the more profit...
I suppose they could have used Kotlin, Scala, Haskell, or some other more language with a more advanced type system. But it would have been truly horrible had they written their back-end in an awful (dynamically typed) language like JavaScript or something.
As far as the UI, they should just do that in Javabuilders and call it a day.
Which is what matters when delivering business value to fulfil customer's needs, not to be something cool to write blog posts on HN.
Also a few days reading "Filthy Rich Clients" would make wonders to some Swing developers that actually care about UI/UX.
How do you know?
While HTML5/JS is not without its own problem. Yet using it over a native framework like Swing, enables the development process to leverage external knowledge (Open Source libraries, etc.). This problem is further worsened when your competitors in enterprise Business Intelligence space can leverage those tools, while you are stuck with maintaining the old stack for government customers.
I think many people have a misconception of what modern java is. They still think java code is all this verbose monstrosity where every single thing requires massive amounts of boilerplate code. And yes, at one time it was that thing. But modern java isn't like that at all, with streams, collections, optionals and closures getting rid of much of the boilerplate.
For example, this is the entire body of the REST endpoint that fetches a drawing for a particular location in my current codebase. It wouldn't be any simpler had it been written in typescript.
return Drawing.getForLocation(id)
.map(d -> ok(Json.toJson(d)))
.orElse(notFound());Try writing a serious CAD application in HTML5/JS for example.
On the one hand, you can't deny the wins that comes from bullshit-free operations - no installing, no permissions, no need to deal with sysadmins to approve a new program[0], and updates do themselves. Files are backed up and trivially shared across devices.
On the other hand, you're now locked in to a vendor system, with vendor software doing file management, version control and sharing. You need constant access to Internet to do anything at all.
Then there's also issue of performance. I actually registered for a free personal account and started playing with this software. I saw more-less what I expected: it kinda works, like most such web tools kinda work - good enough to do something, but laggy and slow enough to piss me off if I were to spend more than 10 minutes designing anything in it.
--
I can understand all the cloud nonsense (though I prefer regular files, thank you very much). But from the quick experience, the application would feel much better if it was a desktop/mobile native program, not a webapp. It's like with Google Office suite - looks cool to have it in a browser and it sorta can help with the basic things, but try to build a reasonably-sized document, spreadsheet or slideshow, and the performance drop will make you tear your hair out.
--
[0] - How security is done on work machines is ridiculous, though it's a separate topic. I'll just leave this: https://xkcd.com/1200/.
If you need to print something that looks reasonably nice - then maybe Word would make sense.
Thankfully we are sort of living in digital era where printing is synonym to bureaucracy.
I think this was done a few years ago, but it still amazes me.
All my mobile devices have OpenGL ES 3.x running intensive native games without issues.
Yet for mobile browsers I have to specifically enable the WebGL 2 support.
No user without technical skills is ever going to deep dive in the browser flags to enable WebGL content on computers that don't have any issue playing 3D games.
I'm not familiar with their product, but a web app would certainly introduce more developer time spent on keeping cross-compatibility with older browsers while a Java/native app is practically WYSIWYG.
-- We achieve magnitudes higher visual scale via GPU client/cloud computing... while running in a browser
-- We intersect with some of Palantir's customers (though we're more fortune 2000 sec/fraud/etc.), and are deploying fine. WebGL is ~5 years old.
This may also be a good point to note.. The Graphistry team is ~doubling! If scaling visual analytics for cybersecurity, anti-fraud, etc., sounds worthwhile, please send your CV/LinkedIn/Github to [email protected] !
If your problems are interesting and we get along well, I will happily work on whatever out-of-fashion tech stack you have that the web development intelligentsia sneer at. And we'll do great things!
I had a blast making Wordpress development not suck and it led me down a lot of interesting roads and brand new ideas.
These other potential hires who only believe in The One True Stack are silly.
You can still make your SV rockstar programmer salary writing code in Java. Don't they still use it at Google?
But better yet, we have embraced Cloud Native, so between containers and microservices it doesn't really matter what language we use.
We use Java, Python, Go, Ruby, C++ and our front end is React.
Individually, every language we use is both powerful and flawed. But together it builds a pretty amazing platform.
But I really resent this sort of mentality. It causes a lot of work trying to 'upgrade' your tech stack when you'd get more benefit from fixing your architecture, refactoring, building new features, fixing bugs etc. I'd rather work on improving software in meaningful ways and make the company more money.
You don't have to like Java, but it is fine to use and there are plenty of potential hires.
Sure, but isn't Java basically the biggest language in the world? And it can't "limit development velocity" more than C++.
on the call (which started at 7:15) he talked 90% of the time. he would ask me two or three questions at a time, and when I would get a chance to answer one he would jump in and answer the rest of them for me.
I was rejected for lack of technical skills
Same kind of thing happened when I interviewing for AWS. Forgot to call for phone screen. Manager didn't show up on day of interview. Forgot about me during lunch. Had to parrot back the leadership principles while doing even sillier whiteboard puzzles. Then "we'll call you next day" as I had a few offers in hand was more like 2 weeks later.
It was in the early days, so it was a very startup-y attitude, "we're so smart" sort of thing. The engineers were smart, from Stanford and CMU, so it was partially justified. I ended up not taking the offer. Not for a particularly good reason, it just didn't fit with life circumstances.
Looking back, it would have been a bad idea. I didn't understand the product, which is pretty essential when joining a company. The stock was granted as options, so without an IPO it is illiquid. The salaries were all low, but at the time someone could have lived in Palo Alto on them.
It turns out they thought they could tackle this problem of disparate data silos and change the world while respecting privacy. They weren't able to automate away the expensive process of having Forward Deployed Engineers do data integration work.
Enterprise in a nutshell.
And honestly, not what the customers want. If they're hiring you in the first place, they generally suck at tech. So they'd much rather have "Stanford grads on site every day" as proof of how they're spending money.
So it's a non-starter for Palantir's management when they're looking at existing customers and their desires, and the continuing trickle of naive tier 1 undergrads. Just keep the company cool enough to attract the crop under Google, Amazon, & FB...
And if the customers don't want 100% software data integration, then why spend a lot of money to automate 85% of it?
https://www.reddit.com/r/cscareerquestions/comments/5ncqti/n...
You don't seem to be alone in having issues with it.
This unfortunate reality is why I try to avoid dealing with systems that developed professionals who are solely specialized at gaming those systems - like MBAs or career politicians.
I'm a senior engineer. Those types of interviews are to stoke the egos of green engineers who remember the solutions to their algo finals questions. If I can look it up in a book, it's not worth the time to quiz me on it.
Anyone who brushes off a question stating that it's beneath them is going to get walked right out of the building by my team.
Check out this React component, which is pretty cool: https://palantir.github.io/react-mosaic/
Plenty more examples here: https://palantir.github.io
Google at least is known to use C/C++ for its backend. Python is (or was?) used in YouTube.
For data crunching, especially statistical jobs, Python is probably also a good fit although it's not as efficient but have a number of good statistical, mathematical and ai toolkits that seems to be more active.
For running more specialized jobs, R have even more tools, but is a bit more shaky as a general language although it is a nice functional language, as many tools are more scientists scaffolding rather than nice abstractions.
Then you have fortran and matlab. I've heard of using erlang as a fast real-time analytics tool too, but then you probably need to roll your own everything.
But what do you suggest? Node.js claim to fame is mainly that most web developers know it, and js have formed their mental image of what programing is and how a computer works.
Do people actually just skip that step and just directly deploy their R? That seems really scary.
The major difference I've seen between most of these companies is whether they've embraced Java 8 yet.
With the latest container-based toolchains I think it's not a bad idea to deploy some R-based services for certain type of tasks.
Google has quite a lot of java.
Java is huge in a lot of places.
And I've put myself in poverty before by quitting a multi-national pharma that bought my company out and I lived on my 10k savings over 15months while I found a new job.
Palanatir is not harming the world because of 4-5 shitty executives. They are harming the world because of 100's of shitty employees that only want money.
Fuck all of them.
>I cannot say enough bad things about Palantir.
>I cannot comment about the technology but I sure as hell can at a people level. I was a speaker at a conference where one of the Palantir cofounders gave a keynote. This was a conference organized by college students for their peers. As with all such situations these kids worked incredibly hard and his talk was incredibly disrespectful to that.
>If I hadn't been so disgusted I would have thought to record it. Rather than talk about anything relevant to his audience, or frankly anything informative, he told 'stories'. We have all seen that type of talk, but I have never seem one which so blatantly braggadocious about his interactions with this and other country's intelligence branches. I found it somewhat ironic, for someone who works for Peter Theil, that the level to which the talk, and his representation of the 'good' the company does was so absolutely and unapologetically statist and authoritarian. He talked about who's jet he rode on, who he knew, and other things that seemed simply organized to ensure we knew just how important he was. Several of the stories were overtly misogynistic, and none of them had any useful knowledge about Palintir or working for them. I was sitting with another speaker and we were literally shaking our heads. I felt bad for the organizers and felt the shame he[the speaker] seemed incapable of.
Sounds like you got a ton of useful knowledge about Palinitir and working for them!
Can you explain this more? I don't work at Palantir, but I do insist I get paid for working every two weeks.
How are they harming the world? I mean, aside from converting oxygen to carbon dioxide.
That's... not exactly better, tbh
You can run a profitable business even when using Java, Typescript and React. Infact choice of language probably makes less difference than us geeks would hooe. Outside of really bad language choices.
A trick now being repeated by Cambridge Analytica. The press eat up the story of "Big Data stole the election", and they do their part acting a bit dodgy, and presto they have that reputation and are probably getting buried in cash.
Nobody wants to admit working with them so if they fail to fulfill their promise, nobody finds out. If they do end up on the winning side, the collaboration gets "leaked"...
https://www.nytimes.com/2017/03/06/us/politics/cambridge-ana...
If so, then your choices are:
1. Write separate native clients for Windows (in C#) and OS X (in Swift or Objective-C), and perhaps Linux (in whatever). It'll be hard to hire people who can work on all three, so you'll need more headcount and organizational/technical complexity.
2. Use a cross-platform framework like Qt, Wx, Gtk, etc. This will probably push you toward C++, which can be difficult to hire for. And you'll get constant complaints that the UI doesn't "look native enough" anyway.
3. Use Electron, and whichever JavaScript SPA framework is trendy this week. Have everyone on Hacker News declare your client to be "Flash for the Desktop", and be forced to re-write it with the next trendy framework two years later so that anyone will want to work for you.
4. Use JavaFX, and the JDK's built-in "javapackager" tool to create native installers for Windows, OS X, and Linux. Each of which includes a bundled JRE, with a size smaller than Electron. You won't be able to find a lot of JavaFX experience on the market... but Java developers are easy to find, and it only take a few weeks for decent ones to get up to speed with the framework.
Hell yeah, I'd use Java on the client side. None of the options are great, but Java's probably the least-bad.
I wish that applets had never been invented, too. But only because of market confusion. So many people who don't know anything about Java mix up applets (which haven't been relevant in almost 20 years) with Swing or JavaFX desktop apps, think that security vulnerabilities found in the browser plugin mean that standalone Java apps are "insecure" in general, etc.
The market confusion I would blame on Netscape for choosing "Javascript" as the name for their scripting language.
I don't believe you really have anything to contribute to this thread, and are just bouncing from one tangential reference to the next to feel insightful.
I have to respectfully disagree that nobody confuses Java and Javascript these days. There's an active thread on Quora about this very topic.
Of course C# is just a much better Java, but AFAIK its crossplatform capabilities aren't mature. And it has a tendency to evolve a bit too fast. Your desktop codebase will probably live for at least 10 years, if not more, so it's better to start with a stable technology from the right family (i.e. not overly deficient from the modern perspective.. Qt somewhat fails on this front).
Other than playing around with that, I don't think I've done anything substantial with Java-based UIs running client-side since 2003 :/
outdated software stack ...
no meaningful ML/AI strategy
Yeah, because not being buzzwordy enough is just SO much more important than having meaningful products and services that fulfill a vital role.Whether that strategy is well reasoned and sophisticated is a completely different matter - but to imply that said strategy doesn't even exist is deeply misleading / straight up wrong.
Machine learning isn't just some buzzword used to attract VC money. It really, truly, does work.
Java may not be sexy or purty, but it works and you can actually hire people to do it.
How is that supposed to be even vaguely relevant?
Palantir sells intelligence, not hip-compliant software.
This is the first fallacy of software engineering. In general, nobody cares what the tech stack powering a solution to a given problem is. If it solves the problem, then it is considered a success by customers. There are exceptions to this rule, but there aren't many, and they don't really apply to Palantir's model. In their case, as long as the system spits out the data it is supposed to, they could have used Visual Basic to program the backend and customers would still buy it if it worked as advertised.
Better yet, it's been widely used for a while, so there is no issue recruiting experienced developers.
In general, nobody cares what the tech stack powering a solution to a given problem is.
When I choose a tech stack, I'm always concerned about recruiting. Some stacks are easier/cheaper to recruit in than others.
Wait what? There are several reasons why IE managed to crush Netscape, but the complexity of their software stack isn't even on that list.
I was working in the industry when all of this went down, and I can assure you that Netscape's software stack had absolutely nothing to do with it. The actual story is mostly about Microsoft leveraging their monopoly to push competitors out. This is part of their standard modus operandi since the company was formed.
If you think I'm wrong, please give some evidence to it.
Microsoft leveraging monopoly power was certainly a/likely the major factor, but Netscape also had serious execution problems trying to get out an email server and directory management product.. at the time they could have stolen significant share from Novell.
A lot of this is I believe covered in the famous "never do a rewrite" JWZ essay and in Ben Horowitz's book.
Yes it was. Building an integrated web/email/etc client was harder than they thought it would be, and then there was the Javagator fiasco.
But what really killed Netscape the company - which was planning to give the browser away anyway to create demand for their expensive server products - was that version 3 of Netscape Enterprise Server was terrible. The only thing less reliable than it was the watchdog process that came with it that was supposed to restart it when (not if) it crashed...
Where Netscape got into trouble was in the decisions which they made: that massive rewrite was poorly timed, along with the catastrophic management failures trying to grow so quickly, and their new codebase was arguably too complex but that's not an argument against the stack unless you're claiming that certain problems couldn't happen in a different stack, which seems implausible.
I turned down a job there a long time ago, I did ontologies academically so I already knew they didn't work for what they were trying to do.
Also, there is nothing wrong with a Java/Swing backend. Its not cool, but any company handling that amount of sensitive data will not use a 'cool' stack.
I do see some Java stuff here. But it would appear at least they have talent in very bleeding-edge technology stacks. Is this all for show?
Everyone I know at Palantir has at one point or another mentioned to me (boasted about?) how difficult it is to get a job at Palantir. Sample size < 5, but I'm starting to think this isn't a coincidence.
React is the latest example of it. Great! They just discovered how many 80's UI's used event loops.
Maybe they should bother to learn how to do it in first place?
And I even argue that it's possible to make swing apps that fit nearly seamlessly into a platform given enough attention to detail which is not a popular opinion.
How long did it take again to get anything resembling proper layout controls in a web application? Oh wait, we still don't have it. Motif had a better model for this back in the 80's.
Wow, you must be a grumpy old man, hating those youngsters. They can't even tie their shoelaces alone...
Actually I have seen some people under 40, who could use a microwave oven, use a smart phone, and some could even use desktop applications. I believe many of them can find their way around stuff outside the web browser.
Regarding developing swing apps as "use swing": I have managed to do it after reading the docs, and I'm under 40. It was actually more pleasant than using HTML+JS.
Reading the docs is a good place to learn. That's how I did it when I was under 40.
What? How is this even correlated to the value provided by the software they sell? So they're SOL because they didn't do a rewrite?
> they have no meaningful ML/AI strategy
They mostly sell software and services around data integration of disparate data sources and the ability to query that information and make connections easily. Their flagship product is a graph database with access controls built in. ML/AI is so dependent on the particulars of a given data, so I don't know how valid this criticism is. If they're able to provide value without productizing machine learning, sounds good to me.
> Finally the political environment along association with Thiel isn't helping them make any new friends.
Agreed
https://www.quora.com/How-is-the-state-of-ML-in-Palantir/ans...
If I were to guess I would say you failed the interview. You should probably brush up on your Java and Swing.
Sadly in 2017, their tech stack is falling apart, they have no meaningful ML/AI strategy, the agencies/corporation cannot be fooled any longer, and employees have suddenly realized that the stock (without an IPO in sight) might be worthless and have begun leaving.
Finally the political environment along association with Thiel isn't helping them make any new friends.
Having known several people who work or were hired at Palantir, I can assure you it probably has the worst overconfident brogrammer culture. So much so that I truly hope no US government agency is using them for critical functions because its nothing more than hot air.