At least it wasn't Oracle - <AUTHOR> https://chrisshort.net/one-fish-two-fish-blue-fish-sporting-new-red-hat/ <comment><USER3> I've worked for companies that got acquired and also acquired other companies.

Year 1 is usually nothing and things stay the same unless there is some serious fat that needed trimming. The interesting years are 2 and 3. That's when the parent company tries to optimize things (e.g. streamline the sales force), create synergies, etc and you start seeing the changes. Depending on where you are in the acquired company, it can be heaven or hell.

I'd like to read blogs about the acquisition at the end of year 2.

<comment><USER4> I've been part of 6 separate buy-out/merger/acquisitions (from both angles). In year 3 of current one.

The event, whether you are acquired or acquiree, presents significant and unique opportunities to move vertically and/or horizontally to improve your situation. If you're sitting there wondering about job security then you (a) didn't have job security in the first place; (b) are wasting everyone's time, including yours.

<comment><USER5> I don't think job security is the concern, I think job enjoyment and personal fulfillment is. For many here that I gather can work just about anywhere they want, sometimes the movement direction to improve your situation is outwards. The real time waste in several cases is hanging on.

</comment></comment></comment><comment><USER6> That's the opposite of what I thought when Oracle bought Sun.

Q: What do you get when you cross IBM and Apple?

A: IBM

On the bright side, now RedHat employees can flash their new IBM business cards at International Brotherhood of Magicians shows in Las Vegas to get in for free, thanks to the terms of a trademark infringement lawsuit settlement from decades ago.

<comment><USER7> Didn't Apple and IBM work on an OS boondoggle back in the Windows 95 time period?

<comment><USER8> IBM and Motorola worked with Apple to make the PowerPC chips Apple used in their (i|Power)(Mac|Book) ranges for years. They called it the AIM Alliance.

<comment><USER6> Then there were Apple and IBM's two joint ventures: Taligent and Kaleida (where I worked on ScriptX until it shut down).

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

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

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

Working at Kaleida was like having parents who couldn't get along and argued all the time, so no hard decisions ever actually got made.

ScriptX supported QuickTime on MacOS, Windows and OS/2, but Apple was shy about IBM and other companies having access to the source code.

IBM desperately wanted everyone to use and love OS/2 (so they renamed it Warp so the cool kids would dig it), while Taligent was tasked at solving the problem of Apple's shitty operating system. Taligent also had their own weird incompatible object model, as well as CommonPoint's "people, places and things" metaphor, which they shamelessly ripped off from Schoolhouse Rock.

[https://www.youtube.com/watch?v=Qk4N5kkifGQ](https://www.youtube.com/watch?v=Qk4N5kkifGQ)

CHRP was the Common Hardware Reference Platform for the PowerPC, which IBM and Apple collaborated on. IBM made a CHRP PowerPC Thinkpad that ran OS/2, but out of pride refused to sell one that ran MacOS, which kind of missed the whole point of CHRP. IBM just couldn't imagine why anyone would want to run anything but OS/2 on them.

I would have loved to have a MacOS powerbook running on wonderful Thinkpad hardware, because Apple's laptop hardware was pretty crappy at the time. It would have been the best of both worlds, but it was never to be.

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

And then there was OpenDoc. There were actually two different incompatible implementations of OpenDoc, one from Apple on MacOS and one from IBM on OS/2, and they didn't talk to each other (which kind of missed the entire point).

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

IBM was shipping a bunch of OpenDoc stuff on OS/2 (Eric The Half-an-OS), and used it themselves, but nobody else wanted to use OpenDoc or even OS/2, despite their extensive advertising campaign and Warp re-branding attempt.

[https://www.youtube.com/watch?v=MlrsqGal64w](https://www.youtube.com/watch?v=MlrsqGal64w)

IBM's implementation of SOM (System Object Model), which their implementation of OpenDoc was built on top of, required that you use IBM's C++ compiler to get special optimizations, otherwise every message send was quite expensive.

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

Apple had their own implementation of OpenDoc that used their own compiler, and wasn't compatible with IBM's.

Apple used their version of OpenDoc to create CyberDoc, a component oriented web browser, which was extremely cool and flexible, but didn't go anywhere unfortunately, even though it was a brilliant approach.

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

At the time, CHRP and Open Doc were supposed to be "the future", but in reality, neither Apple nor IBM really had their shit together nor were serious about swallowing their pride and getting along well enough to develop products that actually shared the same technology and plugged together and synergized as well as they promised.

It would have been wonderful if both Apple and IBM followed through with their plans to their full potential: A CHRP PowerPC ThinkPad laptop running MacOS, OpenDoc and CyberDog!

Kaleida missed the boat on CyberDog, but was around OpenDoc early enough to go through the motions of adopting its Bento file format (FWTW), but never did anything with OpenDoc itself (neither Apple's or IBM's).

The fact that there were two incompatible versions of OpenDoc on different operating systems, and ScriptX was meant to run on both, made that kind of difficult to impossible.

OpenDoc required huge amounts of memory, and so did ScriptX, which had its own totally different object model (like Dylan + CLOS), so it just wouldn't have been practical at the time.

As sad as it was, Steve Jobs was right to "put a bullet in OpenDoc's head".

Jobs explained (and performed) his side of the story in this fascinating and classic WWDC'97 video: "Focusing is about saying no."

[https://www.youtube.com/watch?v=H8eP99neOVs](https://www.youtube.com/watch?v=H8eP99neOVs)

Q: What about OpenDoc?

Jobs: What about OpenDoc??! (nods)

Q: Yeah.

Jobs: Yeah. (sips) (smirks) (leans) What about it?

Q: (laughs) Ooooh nooo!!!

Jobs: It's dead, right?

Q: Huh??!

Jobs: It's dead, right? (nods)

Q: Oh, I don't know, I spent a lot of time working on it. And it kind of makes me sad.

Jobs: (shakes) Yeah? (stands) Well, let me say something that's sort of generic. (paces and gestures) I know a lot of you spent a lot of time working on stuff that we put a bullet in the head of. I apologize. (opens hands) I feel your pain. (genuflects)

(prays) But Apple suffered for several years from no, from lousy engineering management, I have to say it. (applause)

There were people who were going off in eighteen different directions, doing arguable interesting things in each one of them. Good engineers. Lousy management. (slouches)

And what happened is you look at the farm that has been created with all these different animals going in different directions (crucifies arms), and it doesn't add up (bends over). The total is less than the sum of the parts.

(prays) So we had to decide what are the fundamental directions we're going in, and what makes sense, and what doesn't. And there were a bunch of things that didn't. And microcosmically they might have made sense, macrocosmically they made no sense. (waves arms)

(prays) And you know the hardest thing is, when you think about focusing (fists), right, focusing is saying yes! No. (palms out) Focusing is about saying no. (palms down) Focusing is about saying no. (emphasizes)

And you've got to say no, no, no. (chops) And when you say no, you piss off people. (points finger) And they go talk to the San Jose Mercury, and they write a shitty article about you, you know? (spreads hands) And it's really a pisser.

Because you want to be nice, you don't want to tell the San Jose Mercury the person who's telling you this (holds out hand), you know, just was asked to leave, or this or that, it was that, so you take the lumps.

And Apple's been taking their lumps for the last six months (chops), in a very unfair way (spreads hands). And it's been taking them, you know (fists), like an adult. And I'm proud of that (pulls up sleeves). And there's more to come (spreads arms), I'm sure. There's more to come.

Some of these -- I read these articles about some of these people who have left. I know some of these people. They haven't done anything in seven years. And you know, they leave (waves hand), and it's like the company's going to fall apart the next day (shrugs).

And so I think (hands on hips) there'll be stories like that that come and go (pulls up pants), but focus is about saying no (Clinton thumb).

And the result of that focus is going to be some really great products, where the total is much greater than the sum of the parts (chops).

And OpenDoc... I was for putting a bullet in the head of OpenDoc. A: I didn't think it was great technology. But B: it didn't fit (shrugs). The rest of the world wasn't going to use OpenDoc.

And I think as a container strategy (hand on chin), there's some stuff in the Java space that's much better. And even the OpenDoc guys were trying to were trying to basically rewrite the whole thing in Java anyway (waves hands), which was a restart (shrugs). So it didn't make sense (hands on hips).

</comment></comment></comment></comment><comment><USER9> Having been in Chris' shoes (being acquired by IBM) I found the reactions of different people in the company most interesting. Several people had the same sort of "Everything is different now that IBM owns us." reaction, but if you unpack that, the reality is a bit different.

For a company like Redhat I can't imagine it will be largely changed in the first couple of years at least, so for that period of time you will be working with the same co-workers, and if you're not in the Redhat C-suite probably for the same boss in the same facilities on the same stuff. So in that regard nothing has changed.

What will be different will be access to a company that has been running for over 100 years and evolved over that time, at all levels. Facilities all around the world. Access to some of the scientists that you may have only read their papers but now can chat with via slack.

If you're currently an executive staff level type (VP, Exec VP, etc) and you're part of the acquisition, you're going to be landing in a whole different world of agendas and counter agendas, that can be tough to navigate. You will want to establish relationships quickly, they will be both rewarding and help you see things that might be coming your way that you would miss otherwise.

At its heart though, IBM is just another company trying to do things to make the world a better place and to profit off helping the world get there. You will find the Finance guys are ones who have the ability to make things happen or not, the marketing folks may often be distracted by shiny objects that don't seem to contribute to the vision, and some of the fading parts of the business are not going into the long goodnight easily.

And if you're patient and look clearly, you will see that fundamentally the company bought you so that you're technology could both improve the company and continue to grow in its own right, and so everyone is "on your side" to a large extent. The biggest danger to your dreams will be your own executives, not IBM. They are the ones who have gone from being masters of their own universe to a star in somebody else's universe, and sometimes that transition affects them in ways that isn't immediately apparent.

<comment><USER10> >At its heart though, IBM is just another company trying to do things to make the world a better place and to profit off helping the world get there.

No, no, no. A big company like IBM may have started out that way, but what almost inevitably happens over the long term is that selfish, greedy, ambitious, power-hungry, sociopathic people become employees and work their way up to the top (or get hired from other companies where they have done likewise) and turn the company to their own ends. And these ends are generally bad for the employees, the customers, and quite often in the long term the financial well-being of the company.

Now it is true that sometimes you get a reformer at the top like Nadella at Microsoft who honestly wants to do things right, and has the brains to figure out how to do it. That said, it is quite clear that this has not happened at IBM.

<comment><USER11> > Now it is true that sometimes you get a reformer at the top like Nadella at > Microsoft who honestly wants to do things right, and has the brains to > figure out how to do it.

What kool-aid have you been swimming in?

</comment></comment></comment><comment><USER12> I used to work for Jet.com, which was acquired by Walmart, and I stayed there for about two years after the acquisition.

It was an OK place to work, and they gave Jet some level of autonomy, but I left when I read that Walmart wants to start "integrating" their stuff ours, which in my case was a lot of Java crap that was clearly at least 10 years old.

I doubt that my experience is atypical with this. Big companies like to buy smaller ones, but don't like having two versions of one thing, and very often they'll view their original version of something as superior to the one they just purchased. In the case of Walmart, I think they bought Jet exclusively for the name.

I'm hoping that IBM is smart enough to sit back and let Redhat do their thing. I don't really want Redhat to become something bloated and horrible like WebSphere.

<comment><USER13> Interestingly, I had a unique view on the other side of this. I worked at Walmart Labs at the time of the acquisition as well- remotely, from Jersey City. Long story short, upper management had changed, they were no longer supporting remote, at least not for management level, and I saw the writing on the wall that my future wasn't looking great- I fought against their massive tightly coupled Pangaea system (that Java code, shockingly was only a few years old, nowhere close to ten) and lost that battle, I was remote, my saving grace that I was working on grocery which was absolutely taking off at the time.

Anyway, I happen to go to a brewery and meet one of your product guys- he had a Jet shirt on, and I just went over and said hello. We got along great, famously actually, and after a few beers I said "hey you know, this remote thing... its not looking like a long term thing... you guys seem pretty interesting..." and we set up an informal meet and greet. I get along with everyone, and had a trip out HQ the next week. I poked around about Jet, and mentioned hey you know I live about ten minutes from their office, and yeah- all the talk was about how quickly they could get off their stack and onto Pangaea. I just fought that, and gone through the painful task of moving some stuff to their stack, and another 2 years of dealing with migrations and not focusing on customers just seemed terrible. I ended up leaving.

But yeah WMT in general is all about the "one right way" to do things. Which is great if its the right way, but I often used to say that there were a few bad teams that were just absolute anchors around the entire firm. I understand you don't want 10 teams building the same thing, but a little healthy competition is ok to me...

<comment><USER14> Where does Clojure fit in the technology stack of Walmart?

Cognitect has a few references that seem a bit old [1], but I see WalmartLabs release clj libraries from time to time [2], and I heard a podcast once where someone talked about working with Clojure remotely too [3].

1: [https://www.cognitect.com/walmart-case- study.html](https://www.cognitect.com/walmart-case-study.html)

2: [https://github.com/walmartlabs/lacinia](https://github.com/walmartlabs/lacinia)

3: [http://blog.cognitect.com/cognicast/087](http://blog.cognitect.com/cognicast/087)

<comment><USER13> I knew these guys, IIRC, clojure originally came from an acquihired startup. This grew into a relatively small team working on an e-receipts project that was remote but largely based in Portland.

The most interesting thing about that team was that it appeared that not just a beard, but an epic beard was required to on it. I keep in touch with one of them, but he has left the firm. The others... I should probably send a note to- those were good guys.

I guess more generally though, they are "off strategy" and clojure was not making inroads at Labs, at least at the time I had left. There was a lot of gravity towards only using Java on the backend, part of my friction with upper management was pushing node.js as a backend technology. My feeling on the Clojure guy was that they were a good team so they were left alone since they weren't a core feature and they never generated any noise. That's just my take on it though, why after the big upper management change they really bristled against certain teams and technologies but were content with others was not clear to me.

Before I sent this off, I figured I should look at your links- the featured guy in the podcast was the one person whom I had mentioned that I keep in touch with but had left the firm- as have the other two that were on it. I recognize three of the contributors to lacinia.

<comment><USER14> Got it, that sounds kinda disappointing. Also, Jet was one of the bigger faces of F# when it comes to big companies using it, so I guess... double disappointment :-( (I'd love to see both F# and Clojure become more popular on the job market).

</comment></comment></comment></comment></comment><comment><USER15> With Oracle/Sun it was pretty inverted...the first year was a huge cash infusion, and if anything Sun hardware projects had greater potential than before.

And yet, within 5-6 years the entire hardware division imploded.

And, meta-comment: this site layout is frustrating on mobile, the text runs off the left/right edges slightly and it _refuses_ to allow pinch/zoom. Sites really need to stop writing code to intentionally screw with readers.

<comment><USER16> >And yet, within 5-6 years the entire hardware division imploded.

I always wonder what would have happened if Apple had bought them.

<comment><USER6> For decades, I've wondered about this too -- on its face it seems like an intriguing possibility, but deep down I think it was impossible. Reason: Extreme cultural mismatch. Not that they're so different, but because of their overlapping similarities. They would both have wanted to be on top, in the driver's seat, calling the shots. No way they would have gotten along. No mutual respect. Too many clashing egos. Especially during the Jobs years.

Oracle's acquisition of Sun was just sad, because they were wiping them out to make them go away, since Sun couldn't swallow their pride earlier and sell out to a company they considered themselves superior to, like IBM or Apple. So their window of opportunity closed, and they got scrapped and devoured by soulless vultures. An acqui-expire.

</comment></comment></comment><comment><USER17> This article is really strange. the OP has only been at Red Hat for 4 months [1], and yet he speaks as though he's a Red Hat veteran.

[1] [https://chrisshort.net/resume-cv/](https://chrisshort.net/resume-cv/)

<comment><USER18> My model of the OP (or writer of the piece rather) is that he felt he'd reached safe harbor at Red Hat, especially under his personally difficult circumstances.

Imagine feeling that, then hearing your employer was being acquired by pretty much the antithesis of that culture, on a decline and happy to destroy anyone for a perceived bump in their falling stock price.

It may be different if your perspective is that of a principal from some failed startup IBM bought. They were nice enough as long as the handcuffs lasted, you didn't care about the bogus 401k match, and your large-ish check cleared.

</comment></comment><comment><USER19> Not sure why Chris felt so much anxiety about the acquisition. Red Hat was already a huge company and things change. After all, it is just a corporate job and he can find another one, especially in this climate.

I can only understand his anxiety if he is an exec high up the chain and likely will be trimmed and his multi-million dollar salary is affected, and he has a huge mortgage, and lots of bills to pay and so on. Otherwise, life just goes on.

<comment><USER20> I'm sure there's more than one reason, but he seems to indicate he works from home.

IBM apparently changed their policy on that in 2017.

<comment><USER21> [https://www.quora.com/Does-IBM-allow-all-of-its-employees- to...](https://www.quora.com/Does-IBM-allow-all-of-its-employees-to-work-from- home)

> _In the USA_ there was an edict last year for staff to work from specific > offices _based [on] their role_

</comment></comment></comment><comment><USER22> The one thing I can't understand is why people aren't more excited about the possibility for IBM to completely transform into an open-source-forward organization.

IBM does work for EVERY Fortune 100 company. I can't comment on the working conditions but as a person who regularly works with IBM I can tell you that they aren't much worse than any other 400K employee sized company. There are a lot of folks there that love process and a bunch that are IBM lifers.

Still, the potential to push open-source further into enterprise in a HUGE way, particularly in private cloud, and give a company that might not stomach a strategic relationship with a smaller organization like RedHat.

Please also don't forget that IBM is contributing to open source projects (Istio comes to mind) that align with their strategic direction.

<comment><USER18> [https://features.propublica.org/ibm/ibm-age- discrimination-a...](https://features.propublica.org/ibm/ibm-age- discrimination-american-workers/)

Maybe their awful corporate conduct outweighs open source handwaving?

<comment><USER22> Maybe there are two sides to every story?

I'm a person who looks to the future and hopes that e can find a better way forward. The company has new leaders, new employees, and a new focus on cloud.

There are no losers when a 100-year old Fortune 100 company validates your strategy and values.

</comment></comment></comment><comment><USER23> Theoretically someone could hire a bunch for Red Hat people and continue the business without too much interruption. The software is open source after all. Granted, the infrastructure would not come along and they couldn't use the trademark. But if I'm a customer and my rep tells me "yeah we had a mass exodus over to XYZ corp and are now supporting largely the same Linux stack under a different name" I may well take my business over there.

<comment><USER24> Yes, but whoever did the hiring would have to come up with some substantial capital in order to set up all the required infrastructure, and there would be a long lead-time before profits started coming in.

</comment></comment><comment><USER25> > after some consideration, I've decided to share my thoughts as a narrative > timeline. Trust me when say that I have given this format considerable > thought. It is likely the safest way (regulatory-wise) to deliver my > thoughts on the topic.

Does anyone have any idea what regulations might impinge on Chris's choice of format for sharing his thoughts?

<comment><USER26> _Does anyone have any idea what regulations might impinge on Chris 's choice of format for sharing his thoughts?_

None. People who learnt that their companies are being acquired via public news services are not in possession of any information the SEC would consider "insider".

<comment><USER27> The author did mention an all-hands with both Red Hat and IBM executives; there's a pretty good chance some "insider" information was shared there

<comment><USER26> It is very unlikely, because that's just not how this works. Remember all those execs have been in secret talks with each other for months without any employees having a single clue. They aren't going to divulge anything which could threaten the deal, not with billions on the line, not worth the risk that an employee would let something slip or even deliberately leak.

The company would likely be upset if anyone leaked and take disciplinary action, but the regulator isn't concerned with that.

</comment></comment></comment></comment><comment><USER28> > There were no folks reaching out from IBM saying, "Psst. Hey, man. RUN FOR > YOUR LIFE! GO GET HELP!"

That doesn't mean that there aren't folks who feel that way. There could, for example, be people within IBM afraid to speak out, even privately. There could also be people who have already left IBM who felt that way prior to leaving.

<comment><USER29> Most of who's left at IBM are either:

A. "lifers" who are biding their time until retirement and aren't interested in rocking the boat, or doing anything to make noise. They want to come in, do their time, go home and go fishing... lather, rinse, repeat.

B. New grads who have no clue what they have walked into because they haven't worked anywhere else for comparison and haven't been at IBM long enough to realize how dysfunctional they are.

C. contractors who really don't give a f%!# as long as their paychecks clear.

None would be particularly motivated to reach out to the people of an acquisition and offer any guidance.

<comment><USER30> 380,000 employees at IBM, you're sure your 3 categories encompass everyone?

<comment><USER29> No, I left out all the offshore people because I didn't think it was relevant at the moment.

</comment></comment></comment></comment><comment><USER31> Red hat always seemed like a fun company to work for to me. I'm not sure how my opinion of that will change now IBM is holding the ropes.

<comment><USER32> Red Hat was probably my top company that I ever wanted to work in, but this time around couldn't find good open positions so joined another company (only a few months ago). I feel blessed because I'd probably feel really bad if I joined RedHat and then it suddenly became IBM. Now, next time around (in a few years) I'll know more about this whole IBM acquisition deal, and if RedHat is still a good company to work in, I can make an informed decision.

<comment><USER33> Can I ask why? I'm genuinely curious. My understanding is their core business is selling Enterprise support for linux, which, no offense to them, doesn't strike me as particularly interesting. I know they also contribute a lot of open source stuff back, but in terms of working in open source Linux a company like Canonical seems more appealing from my limited knowledge, just because their main product is distributed under a free license unlike RHEL. In terms of working on interesting new software/infrastructure platforms, working somewhere like Hashicorp, or even working at Google Cloud or AWS also seem more appealing.

Not trying hate on Redhat, I just never got the impression of them being particularly innovative. A lot of the most interesting stuff I have heard of from them seems to have come from acquisitions, like CoreOS or Ansible. In which case, I don't see why these acquisitions now living under the IBM umbrella is necessarily that much worse than being under Redhat.

<comment><USER34> > but in terms of working in open source Linux a company like Canonical seems > more appealing from my limited knowledge, just because their main product is > distributed under a free license unlike RHEL.

RHEL isn't distributed under free software licence?

> In terms of working on interesting new software/infrastructure platforms, > working somewhere like Hashicorp, or even working at Google Cloud or AWS > also seem more appealing.

I work on Openshift and Kubernetes and for me and barring Google I can't think of a company where I will get to solve as many interesting problems as I have solved at Red Hat. AWS is very new to Kubernetes and I do not think they have lot of people who can mentor someone just starting with Kubernetes. From what I have seen, if you work for a particular cloudprovider, you pretty much become goto guy for that cloudprovider in Kubernetes. It can be blessing or curse but at Red hat - engineers are forced to think one layer above. How will this work on Ceph FS, NFS, iSCSI and EBS? And yeah - You don't feel like second class citizen if you are remote at Red Hat. At some companies even though - they allow remote, they can exclude you, if they want all hands on the deck (like physically).

It is true to some extent that - Red Hat strength isn't churning out new technologies (but they can surprise you). But to Kubernetes for example - <USER2> has brought a stability for enterprise(again I could be biased). If you scratch the surface, many features in Kubernetes that you take for granted was developed in Openshift.

</comment></comment></comment></comment><comment><USER35> Having worked at both an IBM and an Oracle acquisition, once you hit year 2 they'll wish it had been the other way around. A kind of nice thing about Oracle is they don't really want you to become an "Oracle shop" after acquisition. They bought you because you were doing something right, and they want you to keep doing that... just fill out these 10 obscure webforms at each step of the way.

<comment><USER36> Tell that to Sun.

</comment></comment><comment><USER37> > for $34 Billion (with a B)

What does the capital B mean? Is this long and short billions? I've never seen capitalisation used as a notation for that.

<comment><USER38> Usually, that's just a stylistic way for the author to really push the fact that the dollar amount was in billions and _not_ millions.

</comment></comment><comment><USER39> There is some precedence of an acquired company doing a brain transplant on its host. Think Pixar taking over at Disney, replacing accountants with creative folks.

Not familiar with IBM's current management enough to know if that is a possibility.

</comment><comment><USER40> That's a very good point. I wish it were Microsoft, Facebook, or Google. But IBM is not the worst case scenario.

<comment><USER18> I'll argue that it's at least _a_ worst case scenario, at least from the perspective of most employees. On-thread IBM apologists (thank goodness not many) notwithstanding.

If I was talking to Red Hat about a job - and I just submitted a resume before this announcement - I'd break it off.

</comment></comment><comment><USER41> He makes reference to the fact that he telecommutes. IBM leverages relocation where they have offices, as an approach to fire a great many individuals. That would be my first concern if I were him.

He is completely right about mental safety in the workplace. Indeed, even as a long time IBMer with a great track record, I don't feel safe by any stretch of the imagination. This affects my performance and well-being.

I wish him good luck.

</comment><comment><USER42> Red Hat needed to die anyways. It's a terrible ecosystem.

</comment><comment><USER43> IBM aquisition is not bad in my point of view, it is big corporation which guarantees stability to the employees.

<comment><USER44> I've worked with IBM for the past 25 years of my life in public digitisation. They are the worst partner we've ever had, the absolute worst.

They sell things they can't deliver, they never drive technology forward unless you pay them to, and then they get angry and confused when you pick someone who didn't stand still over them.

Back in the day, almost everything we did ran in IBM mainframes, next year we'll be signing away our last contract on any of our 500 different IT systems with IBM and we'll never do business with them again if it can be avoided.

And that's saying a lot, because I think most companies who sell software to the public sector are terrible leeches, but IBM always took it one bit further and never understood why no one loved them.

I mean, they still don't get why nobody wants watson, and keep on trying to sell it, never realising that what it does for BI is stuff we automated almost a decade ago, and what it does for deep learning is so much worse than some of the smaller setups that you can scale by running them on AWS or Azure ( probably other clouds as well, but being public sector we're in Azure and AWS ).

I think this will be absolutely terrible for redhat, and we're already making exit strategies for the two jboss setups we have for when it becomes necessary in a few years.

<comment><USER43> I thought all big corporations provided employees the conditions for safety and security. I also thought that IBM was technology & inovation driven company like Google or Amazon, not only IT solution.</comment></comment></comment>


Indian ISPs Speed Up BitTorrent by 'Peering' with a Torrent Site - <AUTHOR> https://torrentfreak.com/indian-isps-speed-bittorrent-peering-torrent-site-160828/ <comment><USER2> > From a networking perspective most Internet providers are generally not very > happy with BitTorrent users.

> These users place a heavy load on the network and can reduce the performance > experienced by other subscribers. In addition, the huge amount of data > transferred outside the ISPs' own networks is also very costly.

This could be re-stated with "BitTorrent" replaced with "video" and would still have the same meaning. It seems like ISPs are just acting like insurance companies and depend on the average use being low. It's as if they want to give the users less than what the users pay for instead of improving their networks. I get that managing load, utilization (and maximum demand) over time is not easy, but I doubt if the ISPs have a good enough capacity in the first place considering that many users do consume a lot of video content (which requires higher bandwidth and uses more of the capacity).

<comment><USER3> I believe the issue is with the distribution of bandwidth between many TCP connections. The problem is that each TCP connection is treated with equal priority, meaning that a web page loading through a single TCP connection competes on equal footing with each of your 100 BitTorrent TCP connections, all running at a relatively low speed per connection. If this activity saturates your Internet connection, and you then try to load a web page, the web page TCP connection attempt will be placed in the back of the large queue that has accumulated in your router, and will take 20 seconds to load.

I also believe the asynchronous configuration, eg. 10/2 mbit rather than 5/5 mbit, of most residential Internet connections exacerbates the problem. One thing would be getting a connection attempt out on a 5/5 mbit connection, but you're constantly sending out huge amounts of ACKs of very small TCP packets already (due to BitTorrent), and your outgoing bandwidth is much smaller than your incoming.

<comment><USER4> It's really curious, because even when ISPs have QoS setups they can't seem to guarantee fairness. It's always per-connection instead of per-customer-IP.

My ISP for example seems to classify traffic and prioritise based that (HTTP(s) ports get more bandwidth than others up to the first couple of MB, BitTorrent goes in a low-priority group, etc). Yet I can still eat up all the bandwidth I want by just using multiple connections.

I would think it would be even easier to do this on the customer-IP level? Average over some time span, and customers who haven't used their fair allotment of the bandwidth for that time period get priority over others, and the guy with 2000 bittorrent connections has the same claim to the bandwidth as grandma loading her online banking in the browser through one TCP stream.

Are there some issues I'm missing that make this harder than it seems?

</comment></comment></comment><comment><USER5> That's a (technologically) brilliant solution, counter to the usual stuff they do antagonizing and annoying users. Hope this article doesn't end up killing Torbox, and hope more of the new players among Indian ISPs (like ACT, You) take this route too; BSNL is of course never going to do it, and Airtel doing it would probably put Torbox into enough scrutiny to kill it, so I hope they don't!

The article keeps mentioning peers in "local network" repeatedly - as an eternal beginner in the networking world, I wonder what exactly they mean. It's obviously not creating LANs willy-nilly (...right?), so what level do they consider "local" here?

<comment><USER6> Probably other people served by the ISP in, say, the same city?

<comment><USER7> I'd say so. In Portugal, back when we had caps with different amounts for international vs national vs same-isp traffic, a group made a fork of Emule that could filter the peers based on which group their IP belonged to.

The result (for popular files) was that somebody would download it internationally, then it'd spread nationally and then inside each ISP in stages. It actually worked pretty well.

<comment><USER8> We actually had roughly the same set up in college, using DC++ instead of Emule. Connections within the university weren't limited, but connections outside were. So one person would download it at limited speeds, then spread it around at unlimited speeds.

</comment></comment></comment></comment><comment><USER9> Quoted from article: "The question is, however, how long this will last..."

I hope people do not link this to promotion of piracy straightaway. I hope there are also enough legal torrent websites that come up, so that the government does not see torrents as illegal and start acting against it.

It is only the content that makes a torrent legal or illegal. The concept of torrent is fantastic.

<comment><USER10> What piracy? I'm not a pirate. I'm just downloading multiple terabytes of Linux ISO's each month.

<comment><USER9> Ofcourse you are not a pirate :)

But the article ends with a note on piracy, which is irrelevant in this context. Also most people think that torrent means piracy, which is wrong.

</comment></comment></comment><comment><USER11> American ISPs could do this, it would just be marketed differently.

Just remove all speed restrictions to traffic within their own network.

If only traffic leaving your network is a problem for scaling, then don't restrict internal traffic. The P2P clients would naturally favor those local faster peers, and if enough larger ISPs did this, then the P2P clients would be explicitly changed to favor local peers.

<comment><USER12> The problem is my speed limit is determined by my modem edge device's sync. And that's determined by my snr from the node. I don't think its possible to open up more speed for me if I'm already on the highest tier of the service. I guess for people who aren't, this is an option. Its not like I'm on a 1gbps line and they're only giving me so much internet. I'm on the max the last mile technology can afford.

<comment><USER11> I don't really know the numbers, but perhaps the majority of the customers for your ISP are not like you but have the entry level plan. And perhaps the majority of their p2p bandwidth comes from that large contingent of entry level users. This is not obviously true since p2p users are probably more likely to have the upgraded speeds, but it might be true. In that case, it might be that allows entry-level users to have faster access to internal nodes might reduce the overall traffic outside of the ISP.

So the ISP could benefit, and users could benefit and the ISP doesn't need to make any statement for or against p2p clients.

</comment></comment></comment><comment><USER13> Israeli ISPs did that 10+ years ago it didn't end well the BSA and a few other copyrights owners went after them. Another thing that some ISPs did to torrent users was injecting the the "upload rate cheat" into their customers traffic to get them banned on trackers that detect traffic faking.

<comment><USER14> So fun! Imagine having a ISP multiply numbers in SMTP traffic.

It's the wild west out there.

</comment></comment><comment><USER15> Some ISPs do not count upload traffic towards the data caps. This encourages upload/seeding behaviour which results in higher % of local peers, reducing their cost and increasing user experience. From a networking perspective it makes sense as traffic is usually one way from DC towards user. If they can reshape it becomes efficient and cost effective.

Some universities had another way of doing something similar, torrents and similar services are for most part blocked within the network. However local file sharing services like DC++ thrived, the administration is well aware of this, but do not do anything. The few people who get content from outside share internally. Performance was great as sharing was effectively only WAN and the university saved on bandwidth

</comment><comment><USER16> Some ISPs in Russia were doing the same (I don't know if they still do). The idea is that *.torrent files contain retracker.local in the list of trackers, this tracker is local to each ISP and will respond with local peers.

</comment><comment><USER17> "Ironically, many ISPs have also been ordered by courts to block access to hundreds of piracy sites, including many torrent search engines. For now, however, Torbox remains freely accessible."

yep that's the india i know

</comment><comment><USER18> In Italy one of the first providers to offer "fiber to the building" (Fastweb) basically tolerated on their network a huge seedbox / ftp / file exchange that everybody knew about. This was better for them, because keeping things local as much as possible kept their costs down and real internet traffic light.

I don't know if that "thing" is still there, I expect the copyright ayatollah will have eventually cracked down on it.

</comment><comment><USER19> Interesting setup. For my company (in Aus) our most expensive cost, by far and away, is the last-mile bandwidth.

<comment><USER13> That's relatively a new problem for you, 6-7 years ago before the new oceanic cables it would have been a different story.

India isn't that well connected considering it's a nation of 1.5bln people or is it 3 now.

And since many torrent trackers now disable DHT and local peer discovery you tend to get random peers rather than be able to connect to peers close to you which means they get more and more international traffic.

Considering Indian ISPs don't have much to offer in terms of interconnects and peering agreements they most likely pay premium on their end to peer with tier 1 and tier 2 service providers in Europe and the US.

So for them the international bandwidth is very expensive. For you in the down under the available international bandwidth at this point exceeds you local one since the infrastructure lags behind because for many years it was pointless to lay fiber locally as there wasn't enough available bandwidth to feed it.

P.S. I don't think too many people would get your pun most of the users here are far too young and far to restless ;)

</comment></comment><comment><USER20> Nothing new, I heard about an ISP that, oriented by the law dept, even put the local peer in the DSL IP range so it looked like yet another client. The peer saved lots and lots of international bandwidth.

</comment><comment><USER21> torbox.net is down

<comment><USER22> >Offline. We are experiencing an unusual load on our server. We are working to fix the issue.

Yeah, the article seems to have broken their site.

</comment></comment><comment><USER6> Yes, and we love them for it.</comment>


Trump wants new aircraft carriers returned to 'Goddamned steam' power catapults - <AUTHOR> http://foreignpolicy.com/2017/05/11/trump-new-aircraft-carrier-u-s-s-gerald-ford-emals-steam-launch-catapults-navy/?utm_content=bufferdccaa&utm_medium=social&utm_source=facebook.com&utm_campaign=buffer <comment><USER2> I get that there've been cost problems and implementation issues with bringing EMALS into full readiness, but that's not a reason to kill electromagnetic aircraft launch altogether. Electromagnetic aircraft launch has significant legitimate technical advantages over steam: not needing high pressure steam piping, being able to precisely meter the acceleration profile (to reduce stress on airframes), not having "cold cat" issues, and being able to deploy it (or downsized versions of it) on vessels that do not have ample steam / desalinated water supplies.

Subcontracting out components of a complex system makes sense _after_ it's has been properly designed and tested in the field and all the hard-learned lessons have been internalised. Applying this methodology to creating the first instance of a system that has never _been_ fielded before is not likely to work so well. Expecting the semi-incestuous menagerie of {General Atomics, Alion Science and Technology, Kato Engineering, L3, QinetiQ, STV, Inc., Curtiss-Wright, ESCO, ITT} to create a deployment-ready EMALS with no fielded precedents was a huge mistake. Taking a complex, never-built-before weapons system and putting it in production while it's still in testing is folly, having its development overseen by a literal clusterfuck of subcontractors doubly so.

<comment><USER3> Electronic catapults need to operate for months at a time without problems, so far they can't even do days.

</comment></comment><comment><USER4> The article offers context for the quote towards the end:

      But some experts say Trump's comments, already
      being widely mocked among defense types, aren't
      without merits, lauding in particular his push to
      name-and-shame vast defense cost overruns on
      systems like EMALS.

      "The president's critique of the program is
      correct. He's right to be frustrated and he's
      right to step in and tell the Navy to pay greater
      attention to these overruns," said Jerry Hendrix,
      a navy expert at the Center for a New American
      Security.

      The price tag for the three Ford-class aircraft
      carriers ballooned from $27 billion to $36
      billion in the past decade, and the project is
      behind schedule in part because of the EMALS
      system, as the Atlantic reported. Sen. John
      McCain (R-Ariz.), chair of the Senate Armed
      Services Committee, slammed the carrier project
      as "one of the most spectacular acquisition
      debacles in recent memory" in 2015.

</comment><comment><USER3> First he was right about Andrew Jackson, now he's right about carrier catapults? What the heck is going on?

On May 1, 1833, Jackson wrote, "the tariff was only the pretext, and disunion and southern confederacy the real object. The next pretext will be the negro, or slavery question"

And electronic catapults have failed all testing and aren't remotely ready for actual service.</comment>


A peer-to-peer organisation's design publicly available - <AUTHOR> https://nothing.peerdom.org <comment><AUTHOR> The product design agency 'Nothing Interactive' from Switzerland adopted the peer-to-peer (P2Porg) organisational design (inspired by Sociocracy) more than a year ago. They now made it publicly available, so others can learn.</comment>


Show HN: Percollate – a command-line tool to grab web pages as PDFs - <AUTHOR> https://github.com/danburzo/percollate <comment><USER2> You might want to include some actual pictures of the input and output in the readme. The current examples are just one-line command snippets which aren't as useful to someone who hasn't decided to use the tool yet.

<comment><AUTHOR> You're totally right. I will add some examples to the README so it's clearer what it does (passing the article through Readability, et cetera)

</comment></comment><comment><AUTHOR> I've been sporadically working on this over the last couple of weeks, and I think it's now stable enough to get other people's feedback on it. I got the idea while perusing Simon Wardley's mapping book-in-progress ([https://medium.com/wardleymaps](https://medium.com/wardleymaps)), and I wondered whether I can bundle all the chapters into a decent-looking PDF. (It works pretty well for that purpose). I also wanted it to be a sample app for gluing things together for the purpose of producing books in the browser.

I'd love it if you gave it a spin; please let me know if you find anything nasty!

</comment><comment><USER3> How is it different from, let's say:

chrome --headless --disable-gpu --print-to-pdf [https://www.google.com/](https://www.google.com/)

<comment><USER4> \--print-to-pdf is very limited.

As soon as you need to control anything, you have to use [Puppeteer]([https://developers.google.com/web/tools/puppeteer/](https://developers.google.com/web/tools/puppeteer/))

</comment></comment><comment><USER5> Polar has a similar feature if you're just wanting an archive of web pages:

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

We support 'captured' HTML pages. Basically what we do is we fetch the full HTML of the content and store it in a PHZ file (polar HTML archive) and then we save that to disk (it's just a zip file with JSON metadata).

The Polar app is an Electron app so it has full access to render HTML.

We then inject our self into the network layer using protocol interceptors and if you're loading the URL you just captured we load the content from the PHZ instead of the network.

You can then annotate the content, take notes on it, tag it, and keep it forever without risk of it vanishing.

I use it for important documents that I can't afford to ever lose. For example, the Etherium whitepapers are in HTML , not PDF. they're also living documents so I can just capture anytime I want.

HTML files don't often print properly so this way I can keep them the way they were meant to be seen.

<comment><USER6> Hey, this is pretty cool. Just watched your videos. You certainly have a tool which is natural for average person's use, but you may have a barrier in natural use. The page marks is not a natural activity, but scrolling is. So if the system remembers where you are in the document as you scroll while reading, then that's a winner. In addition, a bookmarklet/icon in the browser itself could be better (but you most likely know this already).

In any case, many people have tried creating such a tool. I once used to believe that such functionalities should be part of the browser itself. But there's always been a disconnect between local files and browser. Now in the mobile world, it is even difficult to stay in sync.

</comment></comment><comment><USER7> Examples please, and can you show me the differences made by the enhancements?

<comment><AUTHOR> Roger that! I'll be adding examples to the README. The main enhancement right now is running the article through Readability, the others are just trying to fetch the best-quality image, and removing some things from Wikipedia articles — so, more of a placeholder for future enhancements :)

<comment><USER8> Speaking of Wikipedia articles, have you checked out their "book creator" [0], it's a link on the left of every page? It has some significant issues [1] and as of now can't be used to download pdfs, it seemed to use an "Offline Content Generator" [2] that became unrepairable. I wonder if something like Percollate could be used as the backend generator for Wikipedia's book creator?

[0] [https://en.wikipedia.org/w/index.php?title=Special:Book&book...](https://en.wikipedia.org/w/index.php?title=Special:Book&bookcmd=book_creator&referer=Main+Page)

[1] [https://www.mediawiki.org/wiki/Reading/Web/PDF_Functionality](https://www.mediawiki.org/wiki/Reading/Web/PDF_Functionality)

[2] [https://www.mediawiki.org/wiki/Offline_content_generator](https://www.mediawiki.org/wiki/Offline_content_generator)

<comment><AUTHOR> I think they're already looking into something similar, either through Electron, or their own wrapper over Chromium. I understand from skimming the resources your linked to that they had reliability issues with Electron, and I can confirm from a separate project that Electron and Puppeteer can become a little slow / unwieldy for a large-scale project. So I'm not sure :/

</comment></comment></comment></comment><comment><USER9> Just tried it on their GitHub page:

percollate pdf --output p.pdf [https://github.com/danburzo/percollate](https://github.com/danburzo/percollate)

The font is gigantic and the page tiny. Barely get to the second headline on the first page.

And there is no way to tune this on the command line (yet).

<comment><AUTHOR> You're right, the default page size (A5) and font size are things that need to be easily customizable. I resisted adding many options to the CLI, but I think this is a good way to solve it? [https://github.com/danburzo/percollate/issues/27](https://github.com/danburzo/percollate/issues/27)

<comment><USER9> Yes. This would work.

It's probably a good idea to not introduce flags like `--font-size 12p` or `--page A4` since it leads down a rabbit hole. (Where do you stop?). Directly passing down CSS seems appropriate here.

<comment><AUTHOR> Implemented in the latest version :)

</comment></comment></comment></comment><comment><USER10> This made me smile:

> percollate html Not implemented yet

<comment><AUTHOR> Hah, yes :) It's more that I haven't figured out what the HTML version should look like, and whether it should be self-contained (images, styles), how to handle web fonts, et cetera

</comment></comment><comment><USER11> Nice!

<comment><AUTHOR> Thank you!</comment></comment>


Shopify Earnings release 2Q 2020 - <AUTHOR> https://news.shopify.com/shopify-announces-second-quarter-2020-financial-results <comment><AUTHOR> Total revenue in the second quarter was $714.3 million, a 97% increase from the comparable quarter in 2019.

New stores created on the Shopify platform grew 71% in Q2 2020 compared with Q1 2020, driven by the shift of commerce to online as well as by the extension of the free trial period on standard plans from 14 days to 90 days

Q2 2020 GMV grew 119% compared to Q2 2019 with year-on-year GMV growth accelerating in April and May and decelerating in June and thus far in July

The migration to Shopify Plus of larger sellers continued in Q2 2020, resulting in a record quarter for new merchant adds to Shopify Plus. A large number of merchant upgrades to Shopify Plus in Q2 2020 outpaced the number of downgrades, which peaked in April before returning to pre-COVID levels by quarter end.</comment>


Downs–Thomson paradox - <AUTHOR> https://en.wikipedia.org/wiki/Downs%E2%80%93Thomson_paradox <comment><USER2> There are many multiple reasons that lead to this.

For example, it's usually easier to increase the 'main arteries' of the road network. Just widen the road or build more roads. This option usually goes away close to the destination.

If you just keep building more highways, you end up with hurry up and wait situations where the congestion starts close to the destination and spreads backwards. Cars are waiting to exit highways in the mornings and streets leading to highways are full in the evening.

If you solve all these issues and build enough highways, entries, exists, streets etc. you end with a sparse city. Traffic is faster but distances are long. More traffic is needed because walking distances disappear.

</comment><comment><USER3> Discussed a couple of days ago in the context of average Uber speeds in London and other congested cities [1].

[1] [https://news.ycombinator.com/item?id=20113084](https://news.ycombinator.com/item?id=20113084)

</comment><comment><USER4> This may apply in part, or in limited circumstances, such as those where mass transit was a viable option to begin with.

But road capacity has increased with population growth, another factor behind why road capacity over the long term may not yield the expected results in relieving congestion, though congestion would be worse without those improvements.

From my own annecdotal experience in some of the most heavily trafficked roads in the tri-state area, capacity increases have absolutely improved congestion. Conversion from a two Lane to a three lane highway in one area about 15 years ago cut off at least 20 minutes of travel time even during peak traffic times.

</comment><comment><USER5> I've started to cheat congestion to get away from this paradox by commuting at 10am and 3pm. I'll work-from-home for 5 hours per day and work in the office for 4. That extra hour I save commuting is put towards getting ahead at work.

I would like to be able to optimize this further and WFH fully for 1 or 2 days and schedule all in person interaction on 3 other days but my work has an official no work from home policy so I can't implement that on my team. I can only take advantage of the "flexibility" as they call it</comment>


Tell HN: List of HN Subdivisions  - <AUTHOR> Hey,
Every once in a while, I see a comment or something that brings up a subdivision I hadn't known. The last one I discovered was /noobstories. The obvious ones are /newest, /threads, /comments and /leaders. Here's a list of the least obvious ones that I have found. Add any missing ones in the comments. Happy new year!

  /noobstories - news submitted by new members (intended for moderation
  /noobcomments - comments submitted by new members
  /active - actively commented stories
  /best - best recent stories submitted
  /classic - submissions by established members
  /bestcomments - best recent comments submitted
  /newpoll - submit a new poll
  did I miss any?
 added:

  /saved?id=yourusername shows stories you've upvoted
 <comment><USER2> I got these from looking through the Arc 3.1 source.

<http://news.ycombinator.com/topcolors> shows the most popular colors of the top bar.

<http://news.ycombinator.com/welcome> prints "Welcome to Hacker News, <username>".

/vote is the page that votes go to

<http://news.ycombinator.com/submit> is, trivially, where you can submit pages

<http://news.ycombinator.com/submitlink> is /submit where you can only submit links; no text. However, the page still says you can put text in.

/item is the permalink to a comment or submission (or internal message, in case of comments/questions to YC applicants).

/edit lets you edit a comment

/reply submits a comment as a reply to a submission or prior comment

/submitted?id=<name> lets you see the submissions by user name.

/rss is the rss feed

<http://news.ycombinator.com/newcomments> is the latest comments on HN.

Those are, as far as I can tell, the publically accessible pages that haven't been mentioned elsewhere on this submission. There are some admin-only ones, like /badsites and /editors.

<comment><USER3> /edit also works on submissions. useful for grabbing the url from a dead'd submission.

</comment></comment><comment><USER4> As to docs /lists tells you what some of these do.

/noobstories - submissions from new users

/noobcomments - comments from new users

If I remember right, new users are 'registered less than a year ago'

/classic is the complement of /noobstories, submissions by users with accounts older than a year [edit: mbrubeck below says this is actually all submissions but the ranking only takes into account non-noob votes. reply to correct any other inaccuracies]

/active is recently active submissions

/best is recent submissions with the most points

/bestcomments is same as above but for comments

neither /newpoll nor /saved are subdivisions really, the former is an interface to post a poll, the latter only works when parametrized by a username and shows 'submissions upvoted'.

It really wouldn't hurt to have a help link in the top nav bar describing most of this stuff along with the formatting rules, the relevant etiquette links, etc. It would cut down on their frequent reposting and indignant reminders to startled users ('You're not supposed to do X! Have you not read [obscure link unreachable from anywhere obvious]!')

I've never been able to figure out the reason for not having this information easily available - in more cynical and less charitable moments, when yet another 'L2post, n00b' article graces the top slot, I imagine it's some sort of infantile secret treehouse thing under the guise of 'well, a real _hacker_ would figure these out'.

</comment><comment><USER5> Here are some clickable links:

<http://news.ycombinator.com/noobstories>

<http://news.ycombinator.com/noobcomments>

<http://news.ycombinator.com/active>

<http://news.ycombinator.com/best>

<http://news.ycombinator.com/classic>

<http://news.ycombinator.com/bestcomments>

<http://news.ycombinator.com/newpoll>

The FAQ (<http://ycombinator.com/newsfaq.html>) listed in the footer also has a few more:

<http://news.ycombinator.com/formatdoc> \- Formatting rules

<http://ycombinator.com/newsguidelines.html> \- Guidelines

</comment><comment><USER6> Thanks for posting these. I'd forgotten about /best

Found a story I had missed "Is college worth it?" and a fascinating insight by lionhearted about how you might get into an airline lounge:

<http://news.ycombinator.com/item?id=1011748>

</comment><comment><USER7> Note that "Lists" is the first link at the bottom of the page.

</comment><comment><USER8> I'll admin I'm being lazy, but does anyone have a greesemonkey script to add these to the top?

<comment><USER9> Why not just memorize them like terminal commands?

</comment></comment><comment><USER10>
        /saved

Documentation on what they all mean would be helpful.

<comment><USER11> I hate to say this, but if you actually have to ask the developer for some simple docs on something basic like this, that's a big red flag to me.

<comment><USER12> Well, the basic parts of the site are self-evident, certainly to anyone interested in the hacker community. And the other, more esoteric aspects of the site are 1) in the source and 2) occasionally mentioned in articles.

Not sure I would say that it is a red flag about the site.

<comment><USER13> I would say it's a red flag about the site. It's certainly not a red flag about the person (why should you have to read through the source to work out how the software works? There isn't even a link to the source from the software beyond using a Google search).

<comment><USER9> I'd say its fun and a challenge to find things by exploration. In some cases, such as poll posting, they are deliberately left unpublicized to prevent over abuse.

</comment></comment></comment></comment></comment><comment><USER14> see also:

HN tricks

<http://news.ycombinator.com/item?id=767275>

</comment><comment><USER15> What is /classic show?

<comment><AUTHOR> edit: see below.

<comment><USER16> No, it shows all posts, but the ranking uses only votes by established (>1 year) members.

<comment><USER9> There is obviously no need to complain about HN turning into Reddit if you compare the differences between /classic and the normal HN frontpage. The differences are minor. Most of the articles on the front page are the same ones that established members approve of.</comment></comment></comment></comment>


Impediments to transpiling Rust to C? - <AUTHOR> https://internals.rust-lang.org/t/impediments-to-transpile-rust-to-c/8112 <comment><USER2> Nobody in C land uses - fstrict-aliasing, hence the argumentation is absurd.

<comment><AUTHOR> Indeed. Support for -fno-strict-aliasing and -fwrapv can be expected for modern C compilers, so I don't see any real hurdles besides the obvious engineering and maintenance effort required to support a robust transpiler.

<comment><USER3> There's also one that exists, so that proves it can be done: [https://github.com/thepowersgang/mrustc](https://github.com/thepowersgang/mrustc)

<comment><AUTHOR> So there is hope to overcome the "not as portable as C" showstopper.

<comment><USER3> Yes, though with important caveats:

* mrustc doesn't implement a borrow checker.

* mrustc's original goal was to bootstrap rustc, and so it's based on Rust 1.19 as of now.

So, it's not a panacea, but it is proof that it can be done.

<comment><USER4> No borrow checker is intentional. I believe the intended workflow is that one uses the regular Rust compiler for that. Which should be doable for embedded systems (for which I think mrustc is most relevant for), as it supports cross- compiling rather well.

<comment><USER3> Totally! I think it is the right choice. But I wanted to be clear about what it actually is, that's all!

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> Compile to LLVM IR then target C?

<comment><AUTHOR> -march=c was apparently removed from LLVM? See [https://stackoverflow.com/questions/5180914/llvm-ir-back-to-...](https://stackoverflow.com/questions/5180914/llvm-ir-back-to-human-readable-source-language)

I didn't know that it existed in the first place and what i expected was a bit of a higher level approach. Not even sure if going through Rust -> LLVM IR -> C -> asm would have a negative effect on performance, i.e. if the C code reconstructed from LLVM IR is optimal.</comment></comment>


The hidden cost of C++ (2009) - <AUTHOR> http://www.rachelslabnotes.com/2009/10/the-hidden-cost-of-c/ <comment><USER2> With modern optimizing compilers and CPU architectures, you can't really predict the cost of code merely by looking at it anyways. Not in any language.

Will that function call be inlined? Does it have side-effects? Are the arguments constant, so that it might even be evaluated at compile-time? Can it be hoisted out of a loop? Do its pointer args alias, preventing many of these operations? Is it big enough to blow the cache, or will it all fit in L1 and benefit from really fast memory accesses? Can branch-prediction operate effectively on its loops, or does it have an unpredictable pattern that will flush the pipeline many times?

I've heard that the best way to get your program to run fast is to get it into a compiler benchmark suite, so that compiler-writers account for it when writing optimizations. Failing that, it's all about profiling so you can measure the _actual_ cost rather than relying on what you think you know about the programming language.

<comment><USER3> These are good points, but I don't think it relieves you of having to know whether your making a virtual function call or not, or wether you're passing an argument by value or by reference. You do have to know that, and in C++ you cannot know that by looking at the call site. In C and in many other languages you can.

<comment><USER4> In C there's nothing stopping the function you're calling from turning around and invoking dynamic dispatch.

As a trivial example, objc_msgSend(). This is a C function, but it's also the entry point for objective-C's message sending (e.g. dynamic dispatch).

Basically, what I'm trying to say is, focusing on the cost of the function call itself is useless if you don't know the cost of the function implementation.

<comment><USER3> Absolutely, but to learn more about the implementation you have to look at the function's code. Every line of that code poses the same problem, so it's recursive down to every last expression.

<comment><USER2> ...which may involve loops or conditionals that then involve tracing more function calls or performing other dynamic dispatch, and so on farther down the tree until you have to know the whole codebase. Eventually you run into the halting problem: you can never know whether a given line in an arbitrary program will be executed, because if you could, just replace that line with "HALT" and you've solved the halting problem.

Can't we just agree that you can't predict the performance of an arbitrary program without measuring it? (You can predict the performance of _some_ programs quite accurately, but that has nothing to do with language choice and everything to do with coding standards that bound execution time.)

<comment><USER3> If you're saying that it doesn't matter if you know whether you're calling a virtual function or whether a parameter is passed by value or by reference then we cannot agree on that. If you have reason to use C++ at all, these are not things you can simply ignore because they can affect performance rather dramatically.

What we can agree on is that knowing these things is just a small part of what affects performance and that performance can be rather unintuitive.

</comment></comment></comment></comment></comment></comment><comment><USER5> I use C++ daily for systems level programming and I love it. If I could only have one programming language it would be C++. I can write anything in it and I actually enjoy doing so. Maybe I'm weird or something, but I know a lot of other guys who feel this way too.

And, I know some other guys who do hard core embedded C programming and they are migrating to C++. They love it compared to C and can't wait until every line of their C code has been reimplemented in C++.

C++ will be around for decades to come and many folks actually enjoy writing it, they just don't advertise that fact.

<comment><USER6> Decades might be right. I can't think of a compelling reason for anyone to learn C++ today, but having put in the time to learn it reasonably well, I won't be surprised if I find myself still using it occasionally twenty years from now.

<comment> mike-cardwell I started learning C and C++ about three months ago. My reasoning is, they're used all over the place. My operating system is written using C and nearly all the applications I use are too. I want to be able to modify the programs I use, and I want to be able to write native applications that run quickly. Those are my motivations. And I haven't been this happy learning a language for years.

<comment><USER7> "I started learning C and C++ about three months ago. My reasoning is, they're used all over the place. My operating system is written using C..."

Your operating system is written in C. Why learn C++? The return of investment of learning just C is much much higher than learning C++. Been there, done that.

<comment> mike-cardwell I feel I will be a more rounded programmer if I know both.

I've been concentrating too much on C++ I think. This thread has prompted me to go back and spend some time writing some C.

</comment></comment></comment></comment></comment><comment><USER4> I'm disappointed. I expected this to be a post along the lines of Ridiculous Fish's two posts on C++ features that you pay for even if you don't use:

1\. [http://ridiculousfish.com/blog/posts/i-didnt-order-that- so-w...](http://ridiculousfish.com/blog/posts/i-didnt-order-that-so-why-is-it- on-my-bill-episode-1.html)

2\. [http://ridiculousfish.com/blog/posts/i-didnt-order-that- so-w...](http://ridiculousfish.com/blog/posts/i-didnt-order-that-so-why-is-it- on-my-bill-episode-2.html)

Thankfully one of C++11's requirements was to not introduce any new functionality that had penalties even if you aren't using it. Too bad that wasn't a requirement for the original design of the language.

<comment><USER8> I've read the first article and I'm not convinced the problem this guy describes incurs real costs in reality. After all, there is no reason to include inline function definition in dynamic objects unless they are called without being inlined or their address is taken; both of which are extremely unlikely for class-inline methods. The author fails to convince me that if C++ didn't require taking the address of an inline functions to yield a consistent value, real-world C++ code could/would run significantly faster.

The second article is pretty much obsolete with C++11, which makes copy-on- write string implementations impractical.

<comment><USER4> How does C++11 make copy-on-write string implementations impractical? I know the short string optimization is used now, but I don't see how that's incompatible with COW (for strings that are too large to use the short string optimization). And I don't see how move constructor/assignment is incompatible either. Is there some other C++11 change that I'm overlooking?

<comment><USER8> I can't give you a definite answer, unfortunately, but I believe the more detailed specification of the semantics of string references/iterators in the new standard makes it very difficult to implement std::string with copy-on- write semantics without losing the advantages of such an implementation.

For example, consider the following function:

      char f(string &s)
      {
        const string &t = s;
        const char &ch = t[1];
        s[2] = 'x';
        return ch;
      }

This should be valid code, but with a copy-on-write implementation, writing to the string on line 3 could invalidate the reference created on line 2.

As far as I know there isn't a proper solution to this problem without changing the return type of `std::string::operator[](size_type) const' in some non-standard way.

<comment><USER4> Did you read the 2nd link? This is a problem even in C++03. The solution is to invoke the copy on the access of `t[1]`, which is what libstdc++ does. That was the whole point of the second link; that using any operator/method that returns a char reference (operator[], at(), etc) ruins COW.

<comment><USER8> > The solution is to invoke the copy on the access of `t[1]`, which is what > libstdc++ does.

No, libstdc++ specifically DOES NOT unshare the string buffer when calling the CONST version of operator[] (really, go look it up). That's the whole point of CoW: to only copy when the string is written (or at least, when you have to pessimistically assume it will be, because somebody has gotten a non-const reference to its contents).

You could "fix" the issue by unsharing the buffer whenever a const iterator/reference to the string is returned, but then you lose most of the performance benefit of sharing the buffer in the first place, because most strings that are constructed are read at some point.

Because of these difficulties we'll see standard library implementations move away from copy-on-write implementations and then the whole issues doesn't exist. That is to say: the performance of the test case the blog author describes will be consistently "bad" because std::string will behave pretty much like a std::deque/std::vector.

</comment></comment></comment></comment></comment></comment><comment><USER9> Awesome! Another " _I_ don't understand writing good code in language X, thus _that language_ has 'hidden' deficiencies." post.

You can write non-performant code in any language you'd like, and obscure it in non-trivial ways. That's not the fault of the language.

<comment><USER10> No, sorry. There are a bunch of factors that make the point a little more complicated.

If you're writing, let's say, scenegraph traversal, it's really tempting to get it working on the PPU and then port it to run on an SPU. A vtable dereference to main memory will crash your SPU job and it is not always obvious why. Obviously, you can't use static analysis tools to make sure the right instructions are transferred, so you have to do it by hand. A modern PS3 game has on the order of low hundreds f different SPU jobs...not much fun. Even discounting that, SPUs will work best when fed branchless parallelized jobs, I wouldn't be surprised to see an order of magnitude difference between a vtable call on a pointer array and a static call on an object array.

Keeping pointers to objects in a polymorphic array is a games performance anti-pattern because of the dereferencing cost, but it's necessary to call virtual functions...there's a hidden cost right there.

Which loop is faster, by eyeballing, and by how much?

      void load(Assets* a) {
        for (int j=0; j<m_numAssets; j++) {
          loadAsset(a[j]);
          m_numLoadedAssets++;
        }
      }

      void load(Assets* a) {
        int numLoadedAssets=0;
        for (int j=0; j<m_numAssets; j++) {
          loadAsset(a[j]);
          numLoadedAssets++;
        }
        m_numLoadedAssets = numLoadedAssets;
      }

I've seen the former style run literally 1000 times slower than the latter...that's obvious? I submit in a world of out-of-order processors it is not at all.

I don't think that all the author's points are spot on...Koenig lookup is Byzantine but IDEs do a good job of it, ditto source-level reasoning about dispatch. The underlying theme, that C++ is not a good fit for modern game development, shouldn't be so trivially dismissed.

<comment><USER11> How is your example a language thing? Would a JITed language improve the locality of the m_numLoadedAssets variable? I'm not quite sure I get it.

<comment> loup-vaillant m_numLoadedAssets is a member of some unnamed class the snipet of code is extracted from. When you call the method, it is likely deeper in the stack than any local variable, or even in the heap.

It depends where *this is allocated. In the worst case, it is allocated in main memory while you wanted to stay in the graphic memory, or something.

A naive compiler would then access memory (or the cache) instead of using registers. A Sufficiently Advanced Compiler would guess that calling ++ many times is the same as incrementing in one go, and hoist that out of the loop, but apparently this one is a bit cruder.

Now the same could be said about m_numAssets, but this one isn't written to, so the compiler only have to put a copy in a register, which I guess is a simpler optimization to do.

<comment><USER11> You explain the memory locality issue well but the question is how is the situation better in any other language.

<comment> loup-vaillant Oops.

To answer your question, that particular situation would be better in any language that forces you to explicit the reference to "this" (or "self"). Imagine how we could modify C++:

      void member_function() {
        int local_variable++;
        local_variable++;        // This is okay
        member_variable++;       // That should not be allowed
        this->member_variable++; // This should be written instead
      }

Applied to the example in the GGP above:

      void load(Assets* a) {
        for (int j=0; j<this->m_numAssets; j++) {
          loadAsset(a[j]);
          this->m_numLoadedAssets++;
        }
      }

We see that every non-local access is prefixed by something ("this->" and "a[" here). The heavier syntax suggests a heavier cost, so the programmer will more easily think of hoisting those out of the loop, if possible (either manually or through compiler optimizations).

</comment></comment></comment></comment></comment></comment><comment><USER12> The same underlying point can be made in such contrasting styles: Linus ( <http://harmful.cat-v.org/software/c++/linus> ) vs the OP.

<comment><USER13> Still they're both effectively right about it. "Object oriented niceness" comes at a cost. With C++ it might be smaller than in dynamic languages like Python, where things like function call overhead can be ridiculously big, but it's still there.

<comment><USER14> I think they are both wrong about it. What the argument boils down to is that the limitations of C prevent you from using things that might lead you astray. That's not an argument for or against C++ it's just an argument against large languages in general and an argument for programmer discipline in specific. It might work for Linus if he reimplements C++ features in a better way but it does not help all users and doesn't help all the time. Do we honestly believe a beginning programmer will be better off reimplementing std::vector or just using a fixed array instead?

If I remember correctly somewhere further down in that particular Linus rant he was saying that you can look at a call site and tell what's going on, the same argument the poster here is making, but do we honestly believe Linus never uses function pointers? And the argument about the name of the function giving us a rough estimate of the overhead does not sound valid to me.

As a C programmer and former C++ programmer I can see a valid argument hidden in these types of posts but I think we'd be better off with a little less attitude and a little more useful guidelines.

<comment><USER15> I think this IS C++ specific.

ObjectiveC has a much smaller call site complexity penalty.

<comment><USER16> Well, not specific. Surely it is in C++; surely it is in other languages too.

</comment></comment></comment></comment></comment><comment><USER17> I don't necessarily disagree with this assessment but you can easily create functionality in C that requires looking at multiple source files to understand whats going on.

        x = foo(bar(), baz());

Now you have to look at the definitions for bar and baz to understand the cost of this line.

I guess this is the trade-off with using a high level language. Expressivity vs transparency.

<comment><USER18> This page gives another "nice" demonstration of C (in actual usage, not an obfuscated code contest): <http://oldhome.schmorp.de/marc/bournegol.html>

What's especially nice is that TRUE is defined as -1 in that source, not 1, which could easily confuse someone who isn't intimately familiar with C's boolean operators and conditional expressions (since something like if((a < b) == TRUE) { ... } would actually be incorrect).

Even with that in mind, it would still be nice to have a "safer to use" systems language than C++ generally available. Perhaps Go or D can fill that role (though good luck making that happen for game development on Windows...)

<comment><USER19> For many years that language for me was Turbo Pascal, but then it faded away. :(

</comment></comment></comment><comment><USER20> Note: post is from 2009.

She also has a followup where she explores the "pressure points" of writing games in C++:

[http://www.rachelslabnotes.com/2009/11/there-are-never- enoug...](http://www.rachelslabnotes.com/2009/11/there-are-never-enough- render-engines/)

</comment><comment><USER21> The days when you can reason about performance by looking at function signatures are, in my opinion, long gone.

I can count on one hand the number of times that I thought that changing the function signature of a few methods was going to impact whole application performance. Every time, it was in a low-level function that was called all over the place. Or, more to the point, I dug into function signatures when evidence pointed me there.

I can't even begin to list all of the other problems I worry about that actually do impact whole application performance on a regular basis.

</comment><comment><USER22> Slapping an "explicit" modifier on all your constructors eliminates what the author is complaining about.

<comment><USER23> I really wish 'explicit' was default and the keyword was 'implicit'.

</comment></comment><comment><USER24> Abstraction in general comes at a cost.

<comment><USER13> Obviously, yes. One can't expect jumps across multiple levels of libraries, wrappers and APIs to be free of cost. That's what Carmack referred to as "20 layers of crap". He's effectively right about it. On the other hand we can't reinvent the wheel everything we write a line of code.

One of the most important aspects of balancing productivity with performance is knowing which parts of code are crucial to performance and should be written with that in mind. That's one of the toughest parts as well. Usually one is better off profiling than guessing but I believe an educated guess can go a long way nevertheless.

</comment></comment><comment><USER25> in 1999 I was a total C++ dude. I had to work that year on a port of metal gear solid for PC. I was surprised to see such well written C code by the konami developers, with nice oo system that had certain tcl element to it. There were only comments in japanese but that did not stopped us from understanding how it worked.

<comment><USER15> Object oriented C is a great paradigm when done right.

<comment><USER19> Problem is that 99% of the developers that work in the industry usually do it wrong.

<comment><USER15> I'd say the number of people who do object oriented C right is as high or higher than the people who do C++ right, for a given set of people. It's just simpler, with fewer leaky abstractions.

</comment></comment></comment></comment><comment><USER7> For me, the hidden cost of C++ was the mental overhead of programming in it. I had to be constantly alert about the many many ramifications of almost every line I wrote.

</comment><comment><USER26> Can we get a [2009] in the headline?</comment>


Glyphr - HTML5 based font editor - <AUTHOR> http://glyphrstudio.com/ <comment><USER2> This is without-a-doubt, the most useful and coolest thing I've seen hit the Hacker News homepage this year. Seriously, this is amazing. It works really well and is easy to use as well, you could be onto something here. It's seeing people create things like this that motivate me more than any, "Why you should switch to Google Go" article ever could.

<comment><USER3> Thank you! It's a work in progress, but it's fun to work on something you're passionate about. I'd recommend it :-)

</comment></comment><comment><USER4> If you make this fully featured, this might spawn an entire generation of font designers (for good or bad :)). Also think about people people forking fonts like on github.

This is magic, congrats.

<comment><USER5> Played around with it, incredibly easy to use!

It looks like the bits to import/export the fonts in a portable format (json) are already in place. You could literally run a git repo with the font files and serve it up to a web interface. That would be awesome :D

</comment></comment><comment><USER6> Free and open source too: [https://github.com/mattlag/GLYPHR](https://github.com/mattlag/GLYPHR)

Nice work!

<comment><USER7> Not quite - there doesn't seem to be a license mentioned anywhere.

<comment><USER8> Couldn't find anything either, made a ticket ([https://github.com/mattlag/GLYPHR/issues/26](https://github.com/mattlag/GLYPHR/issues/26))

</comment></comment></comment><comment><USER9> You are amazing, "A designer who teach himself to code by making beautiful and awesome apps" best post of the day. But yeah the code is ... but the UI and the concept itself is beautiful ;). Keep improving and good luck.

</comment><comment><USER10> Wow. As an typography enthusiast who's miserable with bezier curves, I've _never_ seen something this straightforward. I love the coordinates it gives you on handles and points. Being able to easily work from metrics forward is a great touch as well.

I gave up on trying to learn with Fontlab's TypeTool because nothing was nearly as clear or usable as this.

This is the perfect entrance to type design, and I see myself wasting a lot of my time with this in the coming weeks.

</comment><comment><USER11> Wow, and it's free. One suggestion: make the handlebar points a little bit larger, or increase their "hotarea". Hope I explained myself. Great work!

</comment><comment><USER12> Am I missing something, or does it only support the ASCII character set?

</comment><comment><USER13> You should definitely consider adding support for drawing using Raph Levien's Spiro curves: [http://www.levien.com/spiro/](http://www.levien.com/spiro/)

Much much better than Beziers for many purposes.

<comment><USER14> need to be gpl for that ;)

<comment><USER13> Or I'm sure it would be possible to email Raph and work something out.

<comment><USER14> Its not ;)

But there is a js version on [http://fontly.com/sandbox/spiro.html](http://fontly.com/sandbox/spiro.html)

</comment></comment></comment></comment><comment><USER15> This is great, and I love how they got some UI things exactly right, such as zoom with the mouse wheel, and pan with the space bar held down, including visual feedback for the tool switch.

</comment><comment><USER16> This looks really nice. The demo seems slick so far, though I've never had any experience with font-design. I've always wanted to mess around with it a little more, but it hasn't been very convenient.

Interested to see what folks have to say who have used professional tooling.

Also glad they have the sandboxed online try-out to mess with: [http://glyphrstudio.com/sandbox/](http://glyphrstudio.com/sandbox/)

</comment><comment><USER17> Amazing but it seems that there is an obvious bug in handling scroll events.

I am using Magic Track Pad in Safari so there is no visible drag-able scroll bar in the attribute panel. When I scroll the attribute panel, the scroll events just escaped the attribute panel and cause the glyph to scale. I must concede that the scaling is smooth and responsive, rendering this behavior quite funny but delightful.

Also, it would be more amazing if unicode were supported.

</comment><comment> 97-109-107 I personally liked when there used to be a barrier to entry for designing (horrible) fonts. Nonetheless, this is quite a feat, wow. There are other contenders too, there is: [http://www.prototypo.io/](http://www.prototypo.io/) [http://www.metaflop.com/](http://www.metaflop.com/)

</comment><comment><USER18> This is a gorgeous UI. I'd love to hear about the technologies used in building it.

<comment><USER19> Here is the source code: [https://github.com/mattlag/GLYPHR](https://github.com/mattlag/GLYPHR)

</comment></comment><comment><USER20> Is there a method to import a TTF or OTF font to start from? I've done a lot of work on a personal font I use, but I'd love to see how it plays out in Glyphr. Recreating it from scratch seems like a big ordeal.

<comment><USER21> TTX will export OpenType to XML as well as convert the resulting XML to OTF.

</comment></comment><comment><USER22> Wow, the "linked shapes" feature is something I've wanted in a font editor for a _long_ time. Is this the first font editor with something like that, or has it been done before?

<comment><USER14> Its part of the TrueType specification from Apple in 1987, which calls them 'components' \- they are in all modern font editors.

</comment></comment><comment><USER23> There are two additional on-line font editors:

FontStruct - build a face with pre-defined blocks, uses Flash, proprietary, sponsored by FontShop. 6 years old.

[http://fontstruct.com/](http://fontstruct.com/)

typism - development history and novel path drawing, uses SVG+JS, MIT licensed. Fonts are distributed under OFL. 5 years old.

[http://typism.appspot.com/](http://typism.appspot.com/)

<comment><USER14> FontStruct is proprietary flash.

Typism is dead, no one worked on it for ages.

[http://prototypo.io](http://prototypo.io) is new, active, libre, Angular, on github, but! it suffers from the classic problem of processing and such; designing visual things isnt best done by writing code. Its why metafont didnt catch on - [https://www.google.co.in/search?q=why+metafont+didnt+catch+o...](https://www.google.co.in/search?q=why+metafont+didnt+catch+on)

That's why I help start [http://metapolator.com](http://metapolator.com) which will become a much more powerful online font editor, because it allows you to design typeface families instead of letters.

<comment><USER24> Hey dave, Currently in Prototypo, users design fonts in a visual way only. Using code will come later, when we can make it user-friendly enough and fully integrated in our visual editor.

Anyway, the future looks bright for open-source online type design software. There's a little competition and many possibilities for collaboration. That can only be good!

</comment></comment></comment><comment><USER25> This looks really nice, but there are a couple things I can't figure out. How do I add new characters? How can I add new glyphs for ligatures? How do I set kerning pairs?

</comment><comment><USER3> Hello, Hacker News! I've been seeing a huge response since we released Glyphr Beta 3 earlier this week - it's been very exciting! I'm trying to answer all the questions i'm receiving. Until then, please play with the app and let me know if there is any feedback. Thanks!

Glyphr Studio team (aka Matt) @glyphrstudio

<comment><USER26> It looks beautiful and very easy to use, except for the one fact: the whole UI is quite slow in my browser (Firefox 27 on Linux Mint). Maybe it's my laptop, it's 2 years old, but I don't see anything on the screen warranting this sluggishness...

</comment></comment><comment><USER27> Since we're on Hacker News: What's the business model here? I see an awful lot of work for a very limited market. $1000+-license after release?

In any case, _great_ job by the programmers here.

<comment><USER14> $1,000 for a font? The average price is $20 and selling 50 copies is possible. Sometimes more, sometimes less.

</comment></comment><comment><USER28> "Features galore" and yet, holding Shift does not restrict the cursor to only X or Y movements for dragging in straight lines.

That said, this is a very cool project.

</comment><comment><USER29> Nice editor. Though I wonder with all the font links lately, is the world really short on fonts? Shouldn't Google fonts and the like just about cover any need?

<comment><USER30> Google fonts is incredibly frustrating as soon as you look beyond skin-depth. For one, it's annoying to use Google Fonts for professional work, because more often than not the font you want to use is available in only one weight, or it's missing an italic style, etc. So, you walk in thinking you're going to come out with a terrific type solution for your client or project, and you walk out realizing you are effectively being upsold by a type designer. Not that it's a terrible thing.

Now, let's say you look at the full catalog of commercial fonts. What's happening is a sort of acceleration of fashion. No sooner did the squared serif font come into style than it is on its way out. People are designing new fonts, other people are enjoying the new stuff, and the old stuff gets pushed out (not completely, ever, but enough that your average designer starts to really get annoyed seeing the same old fonts).

So this tool is probably a great thing--it should help boost the industry and it will also put more downforce on the value of the same old junk that has been around forever. So if you are really OK with standard fonts, or plan to use free fonts forever, there should be an increase in the amount of that stuff that is available for you to use.

This should also help commercial fonts take hold. People will start to notice fonts more, and they will start to understand the difference between the amount of work that goes into paid fonts vs. unpaid.

Fonts are not a solved problem by a long shot.

<comment><USER14> Google Fonts has only single style families on purpose, to prioritize a limited budget, so the most popular single style fonts can be improved into families with confidence there is demand for them.

But expanding single styles into families is not as easy as it should be. That's why I help start [http://metapolator.com](http://metapolator.com) which takes www.metaflop.com and removes the 'write metafont code' part of the process.

As you say, if you want the fonts to be better sooner than Google, you can pay for it - either by commissioning the designer to improve the open source fonts or by going across the street to a paid web font service.

</comment></comment></comment><comment><USER31> Very cool! Works as expected, except one arrow on the F demo didn't allow me to change the angle (near the 2nd bar of the F), but otherwise: awesome!

<comment><USER14> Its probably a tangent point type. Change the point type :)

</comment></comment><comment><USER32> Needs keyboard support (PC and Mac) like for undo. Also needs to support moving objects with the mouse.

</comment><comment><USER33> It should be possible to generate the font file in-browser (using Web Platform tech), right?

</comment><comment><USER34> The path nodes indicate direction, that's useful.

<comment><USER35> Dealing with screwball windings with no ready way to discern their orientation make this one thing a piece of feedback manna.

</comment></comment><comment><USER36> I joined Hacker News to just say WOW ! Cool !

</comment><comment><USER37> This is dope. Muchas Gracias de Tucson!!

</comment><comment><USER38> Nice, the tool is minimalistic</comment>