HNHacker News
TopNewBestAskShowJobs

timv

1,579 karma · joined November 21, 2012

Tech Lead/Architect/Engineer (& Occasional Manager)

Sydney, Australia

Email: my-hn-username (at) adjective.org

-------------------------------

Current:

- Elastic (elastic.co)

Previous:

- Prospection (prospection.com.au)

- Site Tour (sitetour.co)

- ActiveGrade (activegrade.com)

- Dragonfly Technologies (dragonflytechnologies.com.au)

- Carpadium Consulting (carpadium.com)

- Macquarie Group (macquarie.com)

-------------------------------

submissionscomments
timv··on Security for Elasticsearch is now free
Dockerfiles from v6.6 onwards are available at https://github.com/elastic/dockerfiles
timv··on Ask HN: What should an ideal developer interview process look like?
"Full day" absolutely matters though, especially if you want to attract passive candidates.

If I'm unemployed, then full day is fine. If I'm really keen to get out of my current job, or really keen to work for you, then I might do it. But if I'm just exploring opportunities, or I have other options in progress, then I'm not taking a day off just to interview.

With any interview when it might be really obvious 10 minutes in that it's not going to work. If I've scheduled that during my lunch break, or for an hour before/after work, then that's a small cost.

If I take a day off work to interview, then that's costing me in the order of $1000. If I don't know whether I want to work for you, then why would I do it? And I definitely can't do that for 5-10 different roles that I might apply for.

A full day is also quite hard work. Interviews are stressful. Dealing with people you don't know, trying to make sure you don't do/say something stupid, it gets exhausting.

I generally expect 4-6 hours worth of interviews before an offer, but the typical process stretches those over a few weeks, which allows the candidate to fit them into available blocks of free time, and gives the candidate oppotunities to think about how things went, what questions to ask, whether this seems like the right fit, and pull out at any point.

timv··on Bullshit Job Notes
The article was updated. It now says > he told me it was fine

It used to say > he told me he didn't complain

They're different. The original article definitely read like

I decide to turn the lights off in a shared office without checking with anyone else, but my office-mate assures me that he wasn't the one who ratted me out

timv··on Ask HN: Is it possible to get pigeonholed to certain company sizes/cultures?
You're welcome, but I'm happy to at least elaborate on why that answer was a poor fit for us:

- It presumed that the existing spreadsheet would be flawless and bug-free. That is almost never the case; ad-hoc spreadsheets are often riddled with mistakes.

- It presumed that it would be a high risk/expensive task to replicate that spreadsheet in a technology that was more suitable for the job. Yet (if you assume that the spreadsheet was essentially correct in its function) it is one of the simplest implementations - you have a working specification for the behaviour you're implementing. If you are not confident in your ability to replicate a working spreadsheet, and then test that your new code behaves identically, then what are you going to be confident to build?

- It presumed that the technology used to automate the spreadsheet would replicate its behaviour faithfully. But that's only true if you use the same underlying application, so you'd only get the benefits if you automated Excel. If you used Open/LibreOffice, or Apache POI, or something similar then you still have all the risks that come with a reimplementation.

- It failed to account for the operational complexity of such a solution. Automating a spreadsheet is fragile. The resulting system would likely be a nightmare to operate.

- It failed to account for the long term maintenance cost of running a suite of business applications that are cobbled together from bits-and-pieces without any planning or cohesion. In that environment you should assume that an application will be in service for 7-10 years with the possibility of it running for 20 or more years. One of the biggest ongoing costs for that team was the number of bespoke applications we had, each using esoteric technologies and inconsistent design approaches. For example, a project to upgrade the underlying Operating System (or web browser, or database, or ...) would need to test each of those apps and potentially fix bugs. Which meant finding the source code, working out how to build it and package it, etc. Not to mention the cost of trying to stay on top of security patches for the underlying components and libraries. Consistency has massive value in that sort of environment.

You learn those lessons from experience - if your experience has been in a similar sort of working environment. I don't presume that every senior engineer has that same set of experiences and will agree on the same set of priorities and tradeoffs. But if I'm hiring you and paying a senior engineer salary because you have experience, then it needs to be experience that is applicable to the sorts of problems we face and the decisions we need to make.

timv··on Ask HN: Is it possible to get pigeonholed to certain company sizes/cultures?
Disclaimer: You've only given us a few paragraphs to draw on, so we need to fill in the gaps and make some assumptions. You'll need to test whether those assumptions actually fit with who you are.

From your intro, my guess was that this would be a senior/junior mis-match. With 10 years of experience, employers will think of you as someone who should be a senior engineer, and they are likely to be evaluation you based on that expectation. That might be your expectation too - you didn't really say what sort of roles you were applying for, but if you're applying to "senior engineer" roles, then each company will have an implicit set of expectations about what a senior engineer can do. Some of those expectation might be made explicit in the role description, but many won't be. The role might talk about "mentoring junior developers" but there's an implicit expectation about the content of that mentoring - you have to know certain things in order to be able to teach others about them.

Those expectations will vary by company, and even by hiring manager. Some interviewers will think "A senior Java engineer must know spring+hibernate", but if you've spent your career working in the Hadoop ecosystem, then that's not likely to be true. Or "A senior engineer must understand the trade-offs of unit-testing vs integration-testing" (and be able to give the answer that they want to hear) but that's a question that is more relevant for certain project types, and not every engineer is going to have an opinion on that.

A likely problem here is that your 10 years of experience haven't given you the right set of skills to be able to answer their interview questions in ways that satisfy their (probably unreliable) interview filter. Maybe you really don't have those skills, or maybe you have them in some form, but not in a way that matches the interviewer's expectations.

Some time ago, when I was hiring into a medium/large bank, my expectations for a 10+ year engineer would be that you could be given a loosely defined problem, work your way through the details to understand the real task to be solved, design a solution (typically changes to be made to an existing system), implement and unit test that solution, assist in developing a system testing plan, assit in implementation, and understand the implications for support/operations. Each of those steps has a bunch of further detail that varies greatly by workplace, and interviews have "right answers" that assume you've done this enough times under similar enough conditions to be able to reach the same conclusions as they've reached.

As an anecdotal example. I remember hiring for a particular role, and one of the questions proposed a scenario where a particular business function was currently being driven from a spreadsheet, but they had outgrown that, and wanted to automate more of the workflow, and wanted to run a project to build a web-based internal system for that. How would you approach that? One of the candidates said something along the lines of "If they have a working spreadsheet, then I wouldn't want to change that. There's lots of risk in reimplementing it, so I would look at tools that could be used to put a web front end on top of the spreadsheet, and automate it that way." That was the wrong answer. It was a valid answer, and they explained why they wanted to take that approach, and "because risks" is somewhat reasonable, that team was not big on risk-taking. But whatever that candidate's experiences had been, they had led him to propose a solution that didn't fit with our expectations, and made what we considered to be the wrong trade-offs (and he persisted with that proposal even when we prompted him to go in a different direction). It's quite possible that some other company would say "Yes, that's exactly what we wanted to hear, you're hired!", but he wasn't the right person for us.

So - what's the solution?

You might try angling for a less senior role. It's hard when you have seemingly relevant engineering experience, to pitch yourself as a mid-level engineer, but you might need to find a way to do it. Then the expectations are lowered, you can get in the door, find out where your previous experience was leading you astray, and then be promoted to a senior role (or switch to a new company, now that you have the skills you need for the interview). You might need to trim your resume in the process so that you only mention the last 5 years of experience, and don't look too senior.

Alternatively, it might just be an interviewing issue. You might just need to translate what you do know from "small company" to "big company". Try something like https://interviewing.io/ and learn how to explain the skills you do have, in terms that big companies like.

--

edit: s/prompted/promoted

timv··on Plans for OCaml 4.08
I agree with the rest of your comment, but I think this Ceylon is probably closer to Kotlin. is unfair on Ceylon

Kotlin basically has the Java type system with a few extensions, but no substational changes.

Ceylon has its own type system that draws heavily from the FP/ADT style of thinking. It's not OCaml (nor does it want to be), but it's also not Kotlin.

timv··on Hello, GitHub
Well in this very specific context, it's hard to imagine that Microsoft will be avoiding using GitHub just because it's owned by Microsoft.
timv··on Tech company career ladders
> Has anyone seen career growth stall directly because they lack a degree

Like @paxys (sibling comment), I've not seen it be a problem once you're in, but it does affect the ease with which you get job offers, and those can be a big part of career growth.

Sometimes you land a great job, in a great company, with a great manager and you work your way up, with the right opportunities at the right times with the right rewards.

But most people find that they run into a blocker somewhere along the way. Maybe the company isn't growing fast enough to create relevant oppportunities. Maybe you get a manager who sees you as irreplaceable and doesn't want you to move up. Maybe something stuffs up and the blame falls on you and your promotions get stalled for a while.

And in all those cases (and more) it helps to have a ticket out of there. Even with 5 to 10 years of experience, some % of hiring managers / recruiters will look at where you got your degree (and in what discipline) and take that into account when deciding whether to interview you. And fewer interviews leads to fewer offers, leads to fewer choices, leads to less control over your career path.

The lack of a degree is not a total blocker - once you get into that first role and prove yourself you've got good chances - but it will have some impact and could make it harder to meet your goals.

timv··on Avoid Google Maps with Gnome Maps on GNU/Linux
I read your comment, but in the absense of any specific examples it was hard to know the details of the problem.

The OSM Wiki contains a Data Catalogue for Australia. https://wiki.openstreetmap.org/wiki/Australian_Data_Catalogu...

The issue right now is that both the PSMA data (that you want OSM to use) and the ASGS data (that you infer it is using - and in some cases that might be the source of the boundaries that were entered, but it is not officially in use by OSM) are licensed under CC-BY, which is not 100% compatible with the ODbL that OSM uses.

The necessary solution is to request an explicit waiver from the data provider, which has been requested for PSMA, but (as far as I know) never received a response.

timv··on Silicon Valley Venture Capitalists Prepare for an I.P.O. Wave
Yes, but what you need to be able to predict is how the market is going to value your stock in $N years. Knowing that you have cool tech coming down the line, or that your colleagues are way smarter than your competitors', etc, might give you inside that analysts lack, but it rarely qualifies you to predict how the stock is going to perform - particularly in a large enough company where the pieces you see are small picture relative to the overall performance of the company.

It's also easy to get blinkered, and deceive yourself into thinking that the company will be successful despite the warning signs that those outside the company might see.

I worked at a bank during the GFC. And it was easy to believe (perhaps correctly, but that's irrelevant) that we weren't really in that much trouble. We were solvent, we were diversified, we weren't exposed to sub-prime, etc. But the market took a beating to us. And it didn't feel like that was justified. But that simply didn't matter. The stock was in free fall, and even if we were right and the market was "wrong", the market is always right because that's what sets the value. If you could afford to take a long term view, then the price recovered, and it wasn't the end of the world (though there were definitely better performing investment options). But I had colleagues who were leveraged against company stock and were getting margin calls every second day.

Which brings me to my second reason for hating to hold stock in my employer - those colleagues couldn't sell their stock due to insider trading rules. They had to find the money for the margin call, because the fact that they had "much more information and market insight" (as you put it) actually meant they weren't allowed to sell. Holding (public) stock in your employer is a big risk because even if you see the price crumbling, you may not be able to get out, and you just have to take the hit.

timv··on Avoid Google Maps with Gnome Maps on GNU/Linux
That's not the case in my local area. The suburbs boundaries align quite accurately with the boundaries provided on the local council's GIS. The OSM boundaries are line-strings, so they don't have all the contours from the council, but it's clearly a representation of the real boundary, not the ABS boundary.

What areas are you looking at.

timv··on Au Revoir
> You assume that they all want to scale.

If they've taken outside investment based on a business plan of scaling, then it doesn't matter whether they want to scale. They either need to do it, or hand it over to someone who will.

I love nicely sized companies that are profitable and long term viable without the need to chasing after constant growth, but you only get to do that if the investors agreed to it. That's much easier when the investors are just the founders.

timv··on Omaha man ‘liked’ a tweet, then lost his job
You also need to offer other options within the company if they exist.

So if you're reducing the number of staff employed to support "system A", but you have vacant positions supporting "system B", then you you need to offer those positions to any affected staff, or show why those employees would not capable of doing the new job.

timv··on Omaha man ‘liked’ a tweet, then lost his job
But that wasn't the other option. They could have fired the executive who was responsible for managing and training the staff (who clearly failed to do so) or the executive that implemented a customer support system that allowed staff to like tweets that could cause significant damage to the company.

Or they didn't have to fire anyone - it's not like China actually gets to see employment records for random staff in Omaha.

timv··on Running Java in a Container
> your dependencies better be deplorable in a JVM too

Sadly, many Java dependencies are quite deplorable.

timv··on Opening the code of our X-Pack features
It depends on what "immutable" means to you.

Elasticsearch is stateful, it's essentially useless if you don't have some form of persistent storage for it, because its purpose is to act as a datastore. So we make no attempts to treat the Elasticsearch containers as if they're stateless in the "no permanent storage" sense, but you can point your Elasticsearch data directory to a mounted volume and keep that state away from the core image.

But having an immutable image is a bigger deal. The expectation that users have of docker images is that you don't need to edit anything on the image files themselves, but that the configuration is provided from an external source, typically through environment variables.

Installing X-Pack is an image change. It stores new files in the plugins, bin, and config directories of Elasticsearch, and will typically require changes to your main cofiguration file. That's something docker users generally don't want.

Installing a license is a state change. The license is loaded with an HTTP API, and we store that data in the data directory alongside the stored documents. So for most users it's not a violation of their "immutable" expectations.

The other expectation is that you can simply start the container, and run it to completion and then terminate it - you don't want a process that expects to be started, and then reconfigured, and then restarted, etc. That affects other aspects of how you can configure Elasticsearch, but doesn't impact the licensing issue quite so much.

timv··on Opening the code of our X-Pack features
Disclosure: I work at Elastic, primarily on the X-Pack features in Elasticsearch

> They introduced X-Pack by bundling it with the default distribution as a time-limited trial without explicitly stating that it is just a demo.

I assume you're referring to the Elastic docker images, as I believe that's the only place where we've ever bundled X-Pack without any explicit opt-in (Our windows installer also includes X-Pack, but it's clearly marked as an optional & commercial component).

We totally underestimated the confusion and difficulties that would cause, and it was fixed with the 6.0 release.

The difficult was balancing the different needs of different users, with the constraints of how docker containers are typically managed. X-Pack requires a file-system level install, which is not something that docker users expect or want - an image should be built once and then be essentially immutable. No one likes to have to enter the container in order to install a new plugin.

Since it was possible to disable X-Pack functionality, or install a free license for a subset of the features, it seemed like shipping the container with X-Pack pre-installed and letting users dial it back as needed, was the better option compare with shipping without X-Pack and forcing customers to reconfigure their container so that they could get the features that they needed.

We didn't expect that there would be so many users for whom Docker was the primary/initial point of contact with our stack. We believed that we would be mostly working with users who already understood what X-Pack was and what they were getting. When it became clear that that wasn't true, we had to come up with a solution, which is what we shipped in the 6.0 release. We didn't want to change the behaviour in a minor release and cause more confusion for users who were relying on X-Pack being installed, so it wasn't simply a case of changing the way the images.

The X-Pack licensing code was built on the premise that X-Pack was a plugin the was explicitly installed so that those who installed it would know what was going on. And when it was written, that was true. One of the consequences of that assumption was that it would automatically generate a trial license on start-up, and then you could install your own purchased license after the fact. In order to offer Docker containers that worked the way users would expect, we had to make changes to that so that X-Pack could be installed, but default to only enabling the free features, so since 6.0 we are now able to provide 3 different docker "flavours" - pure open source, basic (free license), platinum (trial license for paid features).

We do want people to use X-Pack. We believe that the free (basic license) features offer something useful that users should know about, and the success of the company relies on users knowing that our commercial features exist, and being able to evaluate them and decide if that's something they want to purchase. But the docker situation was never intended to be a "bait-and-switch", it was just a problem that caught us by surprise and took some time to rectify.

For historical accuracy, the inclusion of X-Pack in our docker images was not the introduction of X-Pack, it had been available for quite a long time before that and the underlying commercial IP was several years old before we started publishing Docker images.

timv··on Products Over Projects
> It's more like you're defending the idea of roadmaps by saying any list of stuff to do — or even saying "we're busy!" counts as a roadmap. That's not what's generally understood by the term, nor is it what the article is getting at.

I'm defending roadmaps because I believe that any plan with future dates counts as a roadmap, and because such things are essential to any sort of cross unit coordination.

If the DB team says "I've prioritised Geo, but I've not committed to it, so I therefore cannot give you any idea of dates", then that's not helpful to me. I still need to deliver my Geo capabilities, but all I know is that the team I'm dependent on may or may not do it, at some point in the future, and even though they have the best information about when that might be - because they know their priorities, workload and team size, better than I do - they're not willing to tell me what it is.

So, I need to work around them to get something done, and build it myself, even though there's a possibility that they'll deliver it in the timeframe I need. I have no other choice because they won't help me put a plan together. Sure, I've now avoided being affected by those "things that popup" but only because I've avoided having any dependency on the team that ought to be doing the work.

Other teams are making plans. Launching a product takes time. Meeting compliance deadlines takes time. Reskilling a workforce takes time. Getting contracts signed takes time. They are incorporating your roadmap into their plans, and if the roadmap you give is "I'm not willing to give you any predictions past the end of this month" then that's the roadap that they're basing their plans off. It absolves you of any responsibility because you never committed to anything, but the organisation as a whole suffers because everyone else is having to spend more time and money to work around you.

timv··on Products Over Projects
> If you’re doing innovative new things, a roadmap is almost the worst possible way to try and co-operate on them.

Very few organisations are or should be exclusively doing "innovative new things". Upgrades of old tech, compliance with new regulations, automating out dated processes. Those are all needed and rarely need innovative new things.

> it’s top of our list, we estimate starting on it after x”. Neither of these need a roadmap.

Because you've decided that "roadmap" is term that doesn't apply to "starting on it after x".

"We haven't started on this, but we will plan to do it next" is a roadmap!

"We like the idea, but the team are all busy on things that we expect to take up all their time for the next 6 months" is also a roadmap

As I said in my parent comment:

> You need _some_ form of roadmap to make this stuff work. The argument is about size (volume and duration) and flexibility.

It is unlikely that any organisation can/should do a 3 year roadmap. But a lot of teams already have a 6 month roadmap because they're already committed to that work.

timv··on Products Over Projects
> It's such a seemingly innocuous request — "what things are you working on this year and what dates will we get them?" — yet answering it (as asked) can have dramatically outsized repercussions.

Yet, the extreme alternative of being entirely unable/unwilling to answer the question: "I need this, when are you able provide it?" also has huge repercusions.

If your organisation is aiming to be more than a bunch of independent units that happen to share a balance sheet, you need co-ordination and sometimes that requires a roadmap.

If the internal "Database as a service" product team doesn't offer any sort of Geo capability, and I need it then I have to solve that problem. If that team cannot provide a roadmap, then I have to build a work around within my product team. This costs money, and that affects the P&L of the organisation. The organisation's goals are best met by having this capability built in the right place, with respect to upfront cost, ongoing cost and time to market.

You need _some_ form of roadmap to make this stuff work. The argument is about size (volume and duration) and flexibility. But those aren't absolutes, and we can argue forever about "how big is too big?" (but let's not). And so we end up with articles that talk in vagaries like "big change programs with detailed roadmaps" which doesn't mean much.

timv··on Products Over Projects
>> for greater responsiveness and a higher benefits realization ratio, “product-mode” is a more effective way of working than projects.

> This is a sweeping statement.

It also can quickly degrade to being horribly untrue. A product team justifies its headcount and activity decisions in a silo.

The product owner justifies a budget that translates roughly into team size and then sets to work on whatever satifies the objectives they've been given.

But a recurring truth of large organisations is that silos evolve to justify their own existence and size. You keep having $N people costing $X working on product $T because the product owner justified it to someone, not because it delivers the high benefits realization across the organisation.

The article's "New Silos" section just sweeps this to the side with "but it's better than the old silos". And it can be, but isn't definitively so. Any autonomous unit runs these risks, and unless the unit has its own P&L (with a real source of income, not just money taken from other people) preventing it from becoming bloated and serving its own desires (over the objectives of the organisation) takes hard work and requires proper oversight.

timv··on The scrypt parameters
Either the library you were using was terrible, your servers were powered by hamsters, or you were feeding the wrong parameters into the algorithm.

The code below takes ~15 seconds on 1 year old MacBook running Java 1.8.0_111-b14 and uses no 3rd party libraries:

        PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, 10_000_000, 256);
        SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");     
        byte[] hash = skf.generateSecret(spec).getEncoded();
timv··on AWS Single Sign-On
> unless I've just been unaware of them

Is there a reason you would expect to be aware of them? Is this a field that you work in?

Your experience doesn't align with those of us who work in the application security and identity management space, yet you seem to be speaking so confidently about it.

timv··on AWS Single Sign-On
> Perhaps but it's only been in the last few years that I've been hearing about it, mostly WRT the cloud vendors (AWS, specifically).

As business have become more willing to move core services to cloud platforms, they've demanded that those platforms provide a single sign on solution that integrates with their corporate directory.

So, the popularity of SAML has certainly risen with the popularity of cloud / SaaS, but it's perfectly normal for a technology to become more popular with time (until it eventually goes into decline), and that increase in popularity means that it becomes more widely known, and some people who have never had to deal with it before, now come into contact with it.

I've been involved in SAML implementations at fairly conservative technology organisations (banks, pharma) for more than 6 years (and for most of that time it wasn't my core role). It's old tech, that's in wide usage, it just isn't something that most people need to deal with because it's boring identity management infrastructure that most application developers don't get involved in.

timv··on AWS Single Sign-On
While there are a thousand reasons to hate SAML, your concerns are not accurate.

1. I guess "relatively new" is a vague term, but SAML v2.0 (the current version) was standardised in March 2005 - it's now 12.5 years old, I don't call that new.

2. SAML is very widely used in certain segments. Every SSO product supports SAML, including cloud vendors like Azure, Google and now AWS, and also specialist vendors like Okta and OneLogin. Within the dreaded "enterprise" space, SAML is absolutely the #1 SSO technology in play.

3. The golden SAML attack is a load of crap. It basically says "If you can get the private keys of an identity provider, then you can impersonate that identity provider". Yes, SAML relies on the confidentiality of the signing keys. That "attack" is the equivalent of saying Linux security is broken because if you have the root password you can modify any file.

timv··on Elasticsearch 6.0.0 GA released
Groovy was a security nightmare. The groovy sandbox simply doesn't do enough to protect a server.

Our scripting language "Painless" is faster and more secure than we could achieve with groovy, so in Elasticsearch 5.0 we made Painless the default and deprecated groovy.

In 6.0, groovy is gone.

We didn't do it to be minimalist, but we couldn't in good conscience continue to ship an insecure scripting language when we had an alternative.

Disclosure: I work at Elastic on security.

timv··on Top medical experts say we should decriminalize all drugs (2016)
I know that I could find a supplier of marijuana if I wanted. I'd just need to walk 100m down the street and ask the school kids hanging around in the park. Easy.

But I also know that I would be risking various legal and social consequences. A conviction for possession of drugs would affect my employment options, it would affect my travel options (visa forms often ask about such convictions), it may cause issues in the future if I ever got into a custody battle for my kids.

Given all of that, I have no plans to walk down the street and buy some weed from my friends' kids.

But I do have a collection of cigars in my house which I enjoy on occasion.

If it were possible to buy marijuana in the same way I can buy cigars, with the same legality, for a comparable price, then I might do so.

Now, I don't really see why society should care if I were to substitute some of my tobacco consumption with marijuana consumption, but there's a reasonable probability that this would be one of the outcomes if marijuana were totally legalised.

timv··on Show HN: No Coin – A browser extension to block coin miners
Only if you can guarantee that someone subscribes.
timv··on A startup founder and ex-Facebook engineer’s story of the BSD + Patents license
Two possibilities come to mind (and they can both be true).

1. Somewhere in FB's patent portfolio is a patent that is broad and vague enough to cover some part of React, so the patent grant/revoke clause has meaning and value. Changing the license would mean that they were giving up something that they value, and they don't want to do that. That might not be true for RocksDB, in which changing the license is relatively low cost.

2. React is more widely used and more easy to detect (public facing websites) so the patent clause offers protection against a wider range of potential threats. Lots of sites use React, or react-like libraries.

Since the purpose of the patent clause is as a protection againt offensive patent suits, they seem to think (probably with good reason) that React is a worthwhile shield that they don't want to give up. For RocksDB they feel that balance is different.

timv··on A startup founder and ex-Facebook engineer’s story of the BSD + Patents license
No.

The majority view seems to be that there are none.

But Facebook has a very large patent portfolio, so if they wanted to sue/counter-sue you, they could probably find something that was close enough to lock you up in litigation for a long time.

← PreviousPage 2 of 13Next →