Hacker News new | ask | show | jobs
by WalterBright 1457 days ago
When I developed the first native C++ compiler around 1987, I thought I'd better check with AT&T's lawyers if I could:

1. sell a C++ compiler

2. call it C++

Their lawyer was very nice, and said sure. He also laughed and said he appreciated that I was the only one who bothered to ask.

7 comments

In the early internet days, when I was young and learning HTML, the book I used to learn recommended asking permission to link to a website. I thought that was weird, but I was a rule follower then. So I, a kid, sent a message to the 'webmaster' of a local government site and dutifully asked permission to link to their home page.

The said no.

If I'm ever a super-villain, I'm using this as my origin story.

On the other hand, I've consistently found you can often get what you want just by asking for it. A lot of people seem unwilling to do this.
In particular, if you're developing Free Software or Open Source Software, and a company wants to hire you, it is _expected_ that they're OK with you continuing to do so. If any contract says otherwise, explain that you need to keep doing what you're doing in order to stay at the level of expertise that you're at. If a future employer would not agree for you to keep doing that, you shouldn't sign.
I find that if you simply change the wording of their contract to what you are happy with, initial all your changes, sign all pages, sign it, photocopy it, and send it in, nobody rejects it.

Later when they try to hold you to the original contract, you simply ask them for the contract you signed..

This has worked for me everytime :)

Note that not notifying the other party of changes could possibly be construed as fraud, depending on what legal system you are under.

But even when notified of the changes, the other party is quite likely to accept reasonable changes when they have a fully signed copy, as it is more convenient than pushing back...

If they don't want the signed contract back, that's the first time I've seen it. Every employer I worked for wanted the contract back with a signature. Newer ones were OK with an electronic (not digital, just pixels instead of ink) signature but they all wanted a signature.

When they get the modified contract back that's their notification of your adjusted terms. Is it polite to ask them to print a modified contract? Yes. But it may not always be practical.

[This is not legal advice, duh]

Because employer/ employee is asymmetric (unless you're literally hired by an individual) my understanding is that it is good sense for them to prefer your amended contract if the terms you wanted are acceptable, because the law in many places says if you have a take-it-or-leave-it contract then the person in the "take it or leave it" position, here the employee, is entitled to interpret any ambiguous provisions in the most advantageous way. Having amended the contract, you are now on equal footing with the employer and any remaining ambiguity is resolved equitably which means less risk of nasty surprises for them.

Wait until contracts start to come in DocuSign, where the only thing you can do is to scribe something obscene instead of a signature.
There is no way I will every use DocuSign. Think about it: the chances in the longer term of DocuSign being hacked approach '1', and that means that everybody that ever uploaded their signature to that site runs the risk of having other documents signed with that signature without the recourse that it wasn't them uploading their sig to some online service.

And then there is this:

https://www.americanbar.org/groups/litigation/committees/com...

Remember that some contracts protect against this intrinsically by stating that no amendments beyond those stated in print are valid.
Just line that clause out.
It's best to write down what you expect and get agreement on important matters like this.
It definitely doesn't hurt to ask questions, even if you don't always get answers

Many years ago I asked my employer why my salary was lower than the contractually agreed minimum salary for 21 year olds in their organisation. I never received a reply but I did receive a raise and pay backdated to the point where I was hired.

Years before that I asked my bank why I can't just use all the ATMs since they all have money in them and they're all connected to the same network. I never received a reply but some years later the ATMs were indeed all usable (of course, subsequently many began to charge money for withdrawals, so it's still worth going to the "right" ATM if you care)

More recently I asked my bank if they can avoid giving me a contactless capable credit card when they issue new cards. At first they said this was impossible, but when time came to renew my card and I mentioned being disappointed that it would now be contactless, the call taker said actually she can do that, she'll cancel the renewed card she's just had issued and send me one without contactless, but it will take a few days.

That card expired, and a few months ago I received its automatic replacement, this time it does have the contactless logo like all the others, but it came with a slim "Contactless-less" sheet explaining that the bank noticed I don't want a contactless card and have told this card not to allow contactless transactions despite the logo however, it is actually a contactless card and so if I change my mind I can just call the bank and activate the contactless feature.

[ You might wonder why I don't want a contactless card. Contactless credit cards can OK modestly sized payments based on proximity, which is convenient but clearly poses a risk of fraud I don't want. My phone is also capable of proximity based transactions, but it is not limited to some arbitrary size of transaction and I need to explicitly unlock it to allow the transaction. So, the phone "is" my credit card for the purposes of routine transactions, but it has better security. ]

I used contactless for a $150 purchase this weekend, and it seemed so strange. The shop was clearly trying to do the modern commerce setup, with tablets running some sort of Square product and not getting up to go to a central till to pay.

I work in fintech, and have a lot of contact with UK developers who mention "the contactless limits are creeping up from GBP30 to GBP100". This in a country which is way more familiar with modern card tech. Meanwhile, my American bank, which probably gets 250 calls a day asking "why does my card have a Wi-Fi logo on it?" will seemingly let me unload my entire account with a tap.

> Years before that I asked my bank why I can't just use all the ATMs since they all have money in them and they're all connected to the same network. I never received a reply but some years later the ATMs were indeed all usable (of course, subsequently many began to charge money for withdrawals, so it's still worth going to the "right" ATM if you care)

This happened not because of you asking but simply because the banks figured out that they only need one ATM in a certain region for all of the banks.

Never mind the subsequent service level reduction.

I'd read up on how the protocol works... There could be a live "relay" attack available , but it's not like someone could just swipe your butt and make a bunch of cloned cards. The magstripe is more of a hazard than anything else as it the numbers on the front un-encrpyted.
I'm aware in considerable detail how EMV works, both for wired and wireless transactions. This was a choice made in light of my understanding of how flawed the technology is.

See Ross Anderson's extensive material (sorry there's a lot of other stuff in here too) at Light Blue Touchpaper (a reference to Cambridge University's traditional colour and the instructions on fireworks):

https://www.lightbluetouchpaper.org/

On the other other hand, ask for forgiveness not permission.
More than one person has come to me with a story that they'd developed a side project without notifying their employer, and now that it was done and they were distributing it were worried their employer was going to claim ownership.

I didn't have anything helpful to say. I've done side projects when I was working for Big Corps, but in every case notified management beforehand and got a written ok. Never had any trouble with it. When I've accepted job offers, I'd also provide a list of projects that were mine and had them sign off on it as a condition of employment. Never encountered any resistance to that, either.

But these poor people were sweating bullets imagining all the bad consequences of their employer finding out.

Just ask, in advance. If you're a valuable employee, they'll say ok. Never heard of one saying no. And they'll appreciate that you asked instead of sneaking around.

But be careful not to use company equipment.

> Just ask, in advance. If you're a valuable employee, they'll say ok. Never heard of one saying no. And they'll appreciate that you asked instead of sneaking around

Yahoo told me I couldn't participate in the Netflix recommendation challenge (not that I would have done well), and then 6 months later praised another Yahoo employee who did well in it. #notstillbitter

Yah, you have good cause to be bitter about that.
The decisionmaker who praised is probably different from the one who told you no.
Have you got that "no" in written?
Doesn’t it bother you that you have to ask some manager if you can do something (a side project) in your free time?

It sounds as you are their slave, and not an employee who works x hours per month for y amount of money.

Imagine a baker that has to ask the boss if he/she can bake a loaf of bread at home

Well I had kind of the reverse situation: I wanted to contribute to Cygwin, owned by RedHat. RedHat would not accept my contributions unless I got a signed release from my employer, IBM at the time. Well I tried to get this signed release, but all I got was the run-around. Nobody would bother taking the risk. It's one of the reasons I left.
I'm also surprised at how natural people talk about that, like it's totally ok your employer "owns" your free time.
If that baker intends to sell that bread they also may run afoul of non competes.

See https://www.eater.com/2017/10/13/16459044/non-competes-chefs...

> Doesn’t it bother you that you have to ask some manager if you can do something (a side project) in your free time?

Not at all. A salaried position comes with more open-ended expectations than an hourly position.

Besides, why the resistance to simply asking making it open and honest and the boundaries clear? My agreements on those things tended to be 2 or 3 sentences. I'd sign it, I'd get a veep to sign it, make a copy, and file it away.

It's just good business to do such things.

I've just been accumulating all my contributions for when I quit or come up with a good enough alias to contribute them under.
I might not have been a valuable employee, but I tried making a Plex clone in my free time when I was at Apple, asked if I could open source it, went all the way to the VP of tech to ask permission, just to be uncerimoniously told that it was not allowed, because they "really wanted me to be fully focused on Apple".

I'm not sure I agree at all that they'll say "ok" just because you're a valuable employee; I think you might have gotten lucky at your BigCorps.

Apple will be Apple.

But there are lots of other places to be.

It really depends on the organisation, but from my observation (I, myself, never developed any side projects worth releasing so this is based on what others did), most large organisations are not like that. Legal and HR specifically are very risk averse, so permission is usually denied by default, unless there is a overriding benefit to the company (or someone else to take the hit when things go wrong, a very cynical take I know).

Ethically speaking, I would think that as a principle, employees should never agree to ask the employer for permission to do things in their own time, for their own purposes, outside of the area of the business. Employees are just that, employees, not indentured servants. There are duties owed by employee to employer (and vice-versa) but this should not be one of them.

It's complicated. If your contract says you can't do it, that means there is a legal path toward stopping you if someone bothers. That means someone has to care enough, which means that as long as you don't piss anyone off and don't get too much press you'll be fine. If you ask, it is in nobody's interest to say yes especially lawyers.
And yet I never had any trouble getting a 'yes'. One of those companies was Boeing - as big and bureaucratic as they get.
I always refer to the Apple=>Woz=>HP story where Woz went to his employer 3 separate times to seek their blessing and receiving an a-okay each time that his involvement with Apple was not going to be contested by HP.

DOH!

One of the reasons why Woz is a smart cookie. Think of all the problems Apple could have had if he didn't.
How about, thoroughly read your employment agreement (and everything you sign).

> Just ask, in advance. If you're a valuable employee

That is a massive, massive if.

Yeah, well, no. Realistically no one ever will fight or most likely even decline a good job offer over a typical employment contract, and no employer will ever change a typical employment contract specially for you, unless you are somehow preemptively assumed to be a very valuable employee, in which case you are most likely being hired for some very high-level (like, executive) position, so your contract isn't "typical" to start with. And this is far less likely than actually becoming a valuable employee just by doing your quite ordinary job for a few years.

You might as well recommend fighting over your gym membership contract, of a bank contract, or a telecom operator contract. Right, it's your free choice, uh-huh. Either you accept it as is, or you go fuck yourself and workout at home, without internet, looking for a job where you'll be paid in cash (which also is far from being common). Again, unless you are preemptively perceived to be a very special customer (i.e. "expected to bring in a lot of money"), in which case your contract probably isn't typical to start with. And it is most likely your lawyer who negotiates over it for you anyway.

I do. Every word.
Or, ensure that it is in your contract eliminating the need to ask.

For example my employment contract states (I'm paraphrasing), anything I do outside of work I own copyright on. And anything I do for work is owned by work.

I wonder if there is more than one country in the world where it’s possible for companies to own their workers like this.

In Germany for example you can’t give away the copyright on something you wrote as a person. The only thing you can waive is the distribution part of your copyrighted works.

What you do outside your work hours is only subject to the law, not an employee.

This doesn't stop companies from putting it in their contacts to scare you though. I worked at a FAANG in Berlin and that clause was _the_ reason I almost don't sign.
I would generally say, "ask for forgiveness not permission if you'll be fine walking back your decision later."

Forgiveness often makes sense at work, at least for software engineers, and for modest decisions. Do things the way you think is best instead of getting blocked for weeks looking for permission. If, later on, someone comes knocking and wanting to change it, fine, whatever.

However, taking the "forgiveness" route with more important / harder to change / expensive things - like building some addition to your house, building a software business separate your software job - is a recipe for disaster.

It's a little more nuanced than that. Developing home nuclear reactors is an example where the approach might not benefit society at large.

Edit: Comment is off-topic but I've heard this phrase so many times it's triggering.

Thanks for all the examples.
> the book I used to learn recommended asking permission to link to a website. I thought that was weird

You thought correctly. You should have read a book written by someone smarter. Imagine a world where you'd have to ask book writers if you're allowed to cite or to refer to their books in yours.

It easy to say that in hindsight but it wasn’t that unusual of advice in the early days of the web (which is when the GP is describing).

The web (and internet as a whole) was a very different playground to what it is now. In fact you only have to look at how trusting early internet protocols were and all the bolted on hacks we’ve needed since to see the change (eg SMTP, FTP etc all have security as an afterthought).

P.S. Bjarne Stroustrup and especially Andrew Koenig were super nice and supportive of my efforts in those days. The nascent C++ community was very welcoming.
And yours was a huge improvement over 'cfront'!

https://en.wikipedia.org/wiki/Cfront

vs

https://en.wikipedia.org/wiki/Digital_Mars

Did you get into trouble because of the Zorland joke?

Zorland was a mistake. Philippe was well within his rights to threaten a lawsuit over it.
I didn’t do anything as amazing as you did, but in about 1999 I made a website with a nav menu “inspired” by the then current Microsoft website nav (it was all vbscript dhtml and I basically copy and pasted it from the ms site). I emailed them to check it was ok to copy their nav (it wasn’t even a commercial project so I don’t know why I was so polite), but they replied and they were really nice. They said they encourage “engineers” to create new things rather than copy, but anything I needed from their site I could take and then a load of links to dhtml resources in case I wanted to build my own. I wonder if you did that now would you just get a response from their legal team?
One of the first things I ever did with significant complexity in HTML was stealing the Apple.com Nav bar. When you're just starting out, that is a challenge all it's own!
Not a silly question at all, though. The situation isn't the same with Java, where expensive approval is needed before you can call your solution a JVM.

The Kaffe VM, for instance, is careful to show a disclaimer: technically, Kaffe is not Java. [0][1]

[0] http://www.kaffe.org/

[1] https://softwareengineering.stackexchange.com/a/433377/

I recall that Microsoft's Visual C++ user license had a clause that forbid you from creating a C++ compiler with it.
I believe that was for your protection.
More sales for Zortech C++!
Sounds like a challenge
Here, hold my beer!

or

Hide and watch!

Still boggles my mind reading things like this- so cool to hear origin stories from the horse's mouth, so to speak. But if he hadn't been nice what would have happened?

I'm sad to imagine the future we are headed towards where only new technologies are worked on, just to get the patents and sit on them, while everything pre-existing is deprecated and abandoned. Microsoft's embrace extend extinguish works eerily well.

Do you think we are headed in a better direction now? Or is it simply different?

I remember working with ATT in the late 90's when it was ATT broadband. They were still using green screen computer terminal windows for everything and were trying to get a GUI off the ground. Everything was alt and tab to switch windows etc, no mouse support! Into the mid 2000's! This was done by getting regular employees to try and cobble something together. The miraculous thing was that they pulled it off. Just took them a few years longer than it should have. ATT 'corporate' was known for being every bit the tv trope of a big business back then.

I remember seeing early builds and laughing it was so bad. ATT in particular was very much stuck in its ways as a corporation and was not inclined to change even the most broken of things.

When it finally rolled out it was such a mess. All the IT people could do was wince. Everyone but the people who mattered saw it coming. They hired some firm to re-do it all. That happened who knows how many times within just a few years after that. Went from refusing to update to doing it constantly and always breaking things.

I must say it was pretty insane watching $12k long distance bills from calls to, for instance India, get re-rated to several dollars.

Wondered how accurate the accounting could possibly be with so many inaccurate and fungible dollar amounts floating around.

Edit to add- years later I was working as an HVAC service technician and had to do some work at cell phone towers, server locations (wasn't really server farms back then), and phone agent locations for all cell phone carriers in Albuquerque, NM.

It felt surreal to see bow fast and far the companies had gotten in only a few short years. Companies (especially ATT) that couldn't figure out basic things about computers were at the cutting edge of like all the technology they used. ACs were top of the line Lieberts, they had all proprietary software on everything. The super remote cell phone towers had AC, power, storage, and communications redundancy. Their security had been beefed up to top tier. Contractors all needed top tier security clearance now.

I don't know if it was the Kevin Mitnick generation of phone phreaks, hackers, and social engineering, or the world in general, or a change in CEO but it was kind of like watching the titanic become some super-advanced space-faring time-warping ship.

That had kinda given me hope that- damn, maybe we can enter the new age jumping in with both feet. As a kid it felt like progress had been so slow!

> But if he hadn't been nice what would have happened?

I would have tried to negotiate a deal. If that failed, I would have abandoned making a C++ compiler.

Consider that at the time C++ and ObjectiveC were neck and neck, judging by the message volume on newnews. I rejected doing O-C because Stepstone demanded royalties for implementing it.

When Zortech C++ was released, an inexpensive native C++ compiler that was well-adapted to the 16 bit DOS model, C++ took off, and O-C sputtered and died. If AT&T had also demanded royalties, C++ would have been a failure, as cfront was not very practical.

90% of programming in those days was done on DOS, and Zortech C++ was top of the heap. If I may say so, Zortech C++ gave C++ the critical mass it needed to surge ahead.

My partner made the mistake of telling Eugene Wang of Borland how well ZTC++ was selling, and from the look on Eugene's face I knew we'd made a big mistake. Borland did an abrupt change in direction and went all in on Turbo C++. And the rest, as they say, is history. Microsoft also soon abandoned its object extensions to C and went with C++.

My graphics class instructor was Jack Bresenham. The class was given in Borland's Turbo Pascal, but I asked for permission to write my code in the then-new Turbo C++ (since Jack knew C, I was sure he'd allow it).

It came time to demo our work. Everyone else's code ran at least 5 times faster than mine. How could this be? Well, the Turbo C++ compiler was on the "immature" side at that time and produced really inefficient binaries. While the Borland Pascal compiler was mature and created code that ran really quite fast. Lesson learned. :)

That's what you get for not having the foresight to pick the compiler written by the guy who would go on to create C# and TypeScript [1].

[1] https://en.wikipedia.org/wiki/Anders_Hejlsberg

My C# story: We were a Visual Basic 6 shop, writing COM+ components being called by classic ASP pages. Microsoft .NET had just been announced and we spent some time doing an evaluation between it and Java (JSPs and Beans) - our brand new CTO was concerned about Microsoft technology being a monoculture and felt that Java would allow us to pick from several competing vendors so we could be using the best of breed[0].

We spent several months doing a technical comparison. And in the final meeting they went around the room getting opinions from everyone. All but one chose .NET (the dissenter was: "Whatever you think, boss"). The CTO said "That settles it. We're going with Java."[1]

So we spent hundreds of thousands on Oracle database licenses (because if you're changing languages, might as well change databases too, right?) and consultants to write a prototype. When they were done, it scaled to a grand total of two concurrent users on the fastest Compaq servers we had. While our existing VB code was serving about two hundred. Again, mature technology vs. immature technology.

I've been a big fan of C# since then. While I think the latest changes to the language and runtime are mostly eye candy (how hard is it to have a Main method, really?) there's some good stuff in there (I spent some time looking at System.Threading.Channels recently)

[0] The idea isn't bad, but what happens in practice is you get about 2 top-tier vendors and a bunch of also-rans.

[1] When choosing a technology stack, the CTO will pick what they want and everyone else's opinions are secondary. I think this must be a corollary to the "When a business moves, it's always closer to the CEO's house" rule.

Optimising compiler is not the same business as a language implementation :-) related but not the same at all
That compiler got template support very, very late, and conforming support much later than that.
Man, it really is history. Crazy to think had things been a little different how different would things be today. If kid me knew one day I'd run across this in an online forum I don't think I'd have believed it.

As others said- thanks for sharing the insights, made my week.

The refusal to open-license Minix is another one that has had major repercussions.
Yes, that was a giant mistake. But you have to keep in mind that there was already a deal with Prentice-Hall at that point and re-negotiating that to open sourcing it may well have been prohibitively costly for Tanenbaum / VU.
I don't even really think it was a mistake, it's just that it indirectly caused linux. Of course the Hurd being a Turd helped there, too.
It's the Butterfly Effect, for sure.
Thank you for giving these details. I feel like AI is the next step in some kind of implementation war after languages and then browsers.
Does C++ have much of an AI/ML implementation? I saw something recently about the language missing a good AI/ML framework since there was no way to do proper differentiation (might be the wrong term, sorry).
This doesn't make much sense, for two reasons: 1. Various ML libraries are implemented in C++ and have wrappers for respective interpreted languages. 2. Given higher-level languages can do auto-diff, c++ as a lower-level language is likely to be able to do it (and it can).

It just doesn't have as popular libraries such as python/R etc given the latter are far easier to work with + lower barriers for entry.

PyTorch is written in C++ and has a C++ API (although the most famous API is — as the name suggests — the Python one).
dlib is pretty good: http://dlib.net/
> Microsoft also soon abandoned its object extensions to C and went with C++.

Anyone have any info on what those abandoned Microsoft extensions were?

I heard it was called "C*". But I've never been able to find out more about it. Just that a Redmondian told me that Zortech's success caused them to abandon it. Probably it was in the very early stages.
One of my favorite tech books is 'The Idea Factory' which covers various periods of innovation at (AT&T) Bell Labs, including the creation of the first real cell phone technology.

When I first got Pacific Bell (now part of AT&T) DSL in California in the early 2000s, it was run by a seperate division of the company, "Emerging Products Division". i always assumed that was because the traditional side of PacBell just didn't get digital at all and the leadership kept them apart to avoid the innovator's dilemma.

> When I first got Pacific Bell (now part of AT&T) DSL in California in the early 2000s, it was run by a seperate division of the company, "Emerging Products Division". i always assumed that was because the traditional side of PacBell just didn't get digital at all and the leadership kept them apart to avoid the innovator's dilemma.

This technique had previously been used by IBM to the the PC out: they built a whole division from scratch in Boca Raton away from the IBM mother ship in NY

I definitely wish more recent tech had gone the standardized way similar to how IBM standardized computer building. We’re into four decades of being able to build PCs from customized/off the shelf parts because IBM didn’t go the “make it impossible”/proprietary route.
Actually that credit goes to COMPAQ. IBM used commodity parts to save money but it was COMPAQ who famously cloned the BIOS a and made IBM-alikes against IBM’s wishes.

But by then the cat was out of the bag: IBM tried to achieve a proprietary beachhead with Micro Channel (and OS/2) but that added value for IBM, not the customer.

Don't forget that Microsoft maintained momentum in this area. MS loved having open standards because it let MS pit OEMs against each other, causing hardware prices to drop while Windows license prices stayed the same.
This is why at one point all the big players in open source were hardware manufacturers. The software tries to commoditize the hardware, and the hardware tries to commoditize the software.
Definitely going to give that a read. Now that you both mention it, many BigCo's did have fragmented segments back then, were I suppose now everything is helmed by the head (Alphabet/Google).

Maybe it was some kind of turning point. Also about that time did CEO age drop through the floor? They went from all being ancient to mostly 40 and under somewhere along the line.

Thanks for the book suggestion!

What do you mean by "trying to get a GUI off the ground?" Was it that ATT corp IT was trying to deploy a windowing OS onto employees' computers? Or that they were developing a graphical OS a la Plan9 and failing?
> I was the only one who bothered to ask.

Was it necessary to ask? Unless C++ is patented and you live in a place where software patents are actually a thing, what could prevent you from writing your own implementation of something?

I had no idea what IP rights AT&T held over it. There was no way I was going to invest blood, sweat, and tears in developing a C++ compiler only to get sued over it.

Besides, it was polite to ask.