12 ms·
Hi! I'm the person who wrote that blog post. If you have any questions whatsoever, please let me know! English is not my native language and "The solution is t
by lhecker 4y ago
Hi! I'm the person who wrote that blog post.
If you have any questions whatsoever, please let me know!
English is not my native language and "The solution is trivial" was meant sarcastic. The solution isn't trivial at all, nor is it complete, because solving the corner cases is complex.
I'd also like to mention ahead of time that DirectWrite/Direct2D is very fast at drawing western (Latin) text without coloring (>2000 FPS). In other words, in most situations Casey's suggestion doesn't help much, but it does address his termbench issue. At the time we assumed we were using the API incorrectly, after all Direct2D already had everything Casey suggested we should implement and it ran very fast outside of termbench. The new solution is largely identical to regular Direct2D with the only major difference being that ClearType/Grayscale gamma-correction is run on the GPU instead.
Casey's suggestion wasn't unique to me, as a significant number of other terminals do it exactly that way in OpenGl, something I was quite familiar with already. Originally I credited alacritty in the blog, because that's how I knew how to do it, but I removed it to keep the article as succinct as possible.
Update: I'm very sorry for publishing the blog post without giving proper credit where it is due, and it's been updated since. I'm sorry for my continued, overly defensive behavior.
- BaculumMeumEst 4y agoDid you participate in the molly rocket discord?
- TIPSIO 4y agoThis is way above my pay grade. Just don’t take anything personal. Being defensive / know best is in this industry everywhere at all levels and organizations. Being humble in general is hard, being humble in code reviews is harder, being humble to Internet comments in any forum… sometimes impossible. Then repeat that with two super genius experts - eek. You find everyone is usually trying their best if you ever have face to face (except server admins, they are stone-cold psychopaths, stay away). Would bet you both are helpful and open minded at the end of the day.
- lhecker 4y agoOh yeah, for sure. I can't tell you how much I regret being that defensive about something that benign. This was certainly a life lesson. I've apologized to Casey in person before (well, to my best ability) and I'll apologize again if given the opportunity to do so. I just wish people wouldn't say I'm taking credit, when it's an old, widely used idea and when I spent such an incredible amount of time reading and understanding DirectWrite/Direct2D's code in order to ship this renderer in the state it is.
- CogitoCogito 4y agoMaybe you should post in that github thread pointing out to the people originally arguing with Casey that the solution is in fact trivial and that he was right all along. It sounds like you and he are both on the same side in this discussion.
- Big0_nlogn 4y agoIt's not that you were taking credit, or that you were somehow wrong, it's that you initially put down Casey's idea so vehemently and so publicly. I think the lesson is, if you're going to step into the public arena, be humble, or be very, very right.
- ilovefood 4y agoThis is great advice (except the server admin part :-) !!) It's sometimes tough to dissociate the problem with the people involved. Hope this will have a positive resolution as most of the people seem to be experts at what they do.
- salawat 4y ago>You find everyone is usually trying their best if you ever have face to face (except server admins, they are stone-cold psychopaths, stay away). The server admin is a reflection of the union of the community of devs, maintainers, designers of their hardware, and users/benefactors of their boxen. If your server admin is a psychopath. You may want to take a hard look what goes into keeping their boxen ticking along smoothly, and the demands of those using it. Sometimes you get to be a peaceful, serene shepherd. Sometimes, you're trying to keep that last critical link to reinforcements alive under siege from all threats, foreign and domestic, all at the same time. Occupational hazard I guess.
- gldnspud 4y agoPerhaps leave sarcasm out of technical blog posts, or add a footnote to indicate sarcasm? I couldn't tell you were being sarcastic and it seems others couldn't as well. I only found out through this comment. Text is the worst medium for sarcasm since sarcasm is often signaled by vocal inflection or body language, neither of which are present in your post.
- chrisseaton 4y agoBaffles me that people think sarcasm is a good way to communicate on the internet. You are begging to be misunderstood, either accidentally, or maliciously.
- TIPSIO 4y agoIt is a good way to communicate though.
- chrisseaton 4y agoBeautiful comment because I can't tell if you're being sarcastic, and your comment works either way.
- Veen 4y agoIt's not really sarcasm (which usually connotes contempt or mockery, which I suspect the blog writer didn't intend). It's irony, and irony has been widely used in written communication since we stopped using writing exclusively for record-keeping. It can and does work on the internet, provided (i) the writer is prepared to accept that a subset of readers won't "get it"; they'll fail to pick up on contextual clues that signal irony and (ii) you have to be a good enough writer to include those clues so that at least your intended audience knows not to take it literally. EDIT: To clarify, in this case, irony was a bad idea because it was badly executed. The context that would allow readers to interpret "The solution is trivial" as ironic was only available to people who were privy to the original conversation, while the blog post was intended to be read and understood by a much wider audience who lacked that context.
- jffry 4y ago> English is not my native language and "The solution is trivial" was meant sarcastic. The solution isn't trivial at all, nor is it complete, because solving the corner cases is complex. I think it's really difficult to convey sarcasm well in text, and what seems obvious to you as a writer might not come across as sarcasm to readers. I certainly didn't understand that as sarcastic right away. It might be better to address it directly and in a friendly way, like this: > Like I did, you might be wondering right now why we don't just create our own, much larger lookup table and wrap it around Direct2D. Well, we can’t just tell Direct2D to use our custom cache [...]
- lhecker 4y agoThank you for your suggestion! I believe I can't just edit the article now, since that would be disingenuous, but I'll try to avoid sarcasm in the future and use something like you suggested instead.
- ghusbands 4y agoYou could edit the article in a week or two, once things are calmer (maybe leave the original text in crossed-out form, or a link to the original via archive.org); it might help future readers who don't get there via this controversy.
- dleslie 4y agoPerhaps worth considering is that sarcasm doesn't transmit easily over text, and certainly not in contexts where it's not expected. If you want to be clear about it, a common convention is to write /s after your sarcastic statement. It might also help to acknowledge that Casey's feedback and the interaction with them was constructive and instrumental to this improvement being considered and deployed, even if the team ultimately took another approach than the one that Casey suggested.
- lhecker 4y agoWe actually took the same approach Casey suggested, at least when it comes to the drawing part which is what this is about. A lot of terminals implement it that way. We have a long way ahead of us to improve the performance of our text ingestion now though. I'm not sure what role Casey's feedback had in this being considered for implementation. His original termbench tool was _incredibly_ valuable for sure, but I'm not sure later discussions changed the outcome of that. If we had figured out a way to solve the issue while we continue using Direct2D, we would've definitely sticked with Direct2D. Since there was no solution, there was only one other way to solve it and it's a way that has many other terminals already do it.
- vmception 4y agoJust going to add that referring to someone as a community member [of Microsoft] is such a self aggrandizing term for "someone reported it on the project's github issues page"
- toqy 4y agoI read it as member of the open source community rather than the Microsoft community.
- ergocoder 4y agoYour team needs to get the story straight. The other person in your team indicated it wasn't sarcasm. I couldn't imagine how bad your team would treat team members with inferior authority when your team treat your own users like this. Non native speaking skill is really no excuse here.
- Traster 4y agoIt's pretty clear the disconnect here, there's one side that says "Do this optimization it's trivial" and the other side going "We have to write an entire text renderer that's far from trivial" and the result was this blogpost saying "Hey we didn't this thing and it was trivial! All we had to do was write an entire text renderer first". So in a straight forward sense yes, the concept is trivial, but in a more real sense it's not, since your straight forward idea is straight forward only once you've done something difficult.
- pas 4y agookay. so. a bit offtopic, but ... how come it's 2022 and Microsoft, with all its glory and industry leading best practices and trillions of microdollars of Azure-colored dollars valuation ... doesn't have a library for this? you know, the company that makes the thing, the suite that is used worldwide, underground, spacestationside, all the 365 days of the year. I mean it's no wonder the introduction of the computer doesn't show up on the GDP charts when the industry is in fucking shambles and isn't even ashamed for it ... https://www.youtube.com/watch?v=5IUj1EZwpJY&t=35m40s https://www.youtube.com/watch?v=5IUj1EZwpJY&t=35m40s :|
- jbverschoor 4y agoNo disconnect whatsoever.. Just someone who wants to make promotion by writing a blogpost, and dismissing someone else's input. Politics and ego that's all
- nickysielicki 4y agoThe sarcasm was evident to me, FWIW. I don’t think you have anything to apologize for.
- notreallyserio 4y agoSarcasm is usually very easy to spot if you assume the best in people. If you let cynicism take over then things said can be interpreted in the worst possible light.
- LigmaYC 4y agoCaseys suggestions were pointless because Direct2D is fast at drawing western text without coloring? Didn't casey open an issue because the terminal was slow with coloring? It seems like you managed to optimize Direct2D with your 'glyph cache' pixel shader but that doesn't mean caseys suggestions were pointless.
- lhecker 4y agoI didn't say they were pointless anywhere. They were anything but. I did say however: If we had figured out a way to solve the issue while we continue using Direct2D, we would've definitely sticked with Direct2D. Since there was no solution, there was only one other way to solve it and it's a way that has many other terminals already do it.
- ghusbands 4y agoYou didn't use that word, but you did say "in most situations Casey's suggestion doesn't help much", which is probably what your parent post was responding to. Despite the apologies you or your team have given, you continue to denigrate and downplay. First, Casey's suggestion "doesn't help much"; then, "Casey's suggestion wasn't unique". And so on. Casey suggested a solution, spent time proving it was easy, and you even used the suggested solution to good effect, and you're still trying to downplay Casey's contribution or involvement. If Casey hadn't kept pushing, it's doubtful you'd even have gotten around to doing this, so some actual credit is warranted, along with perhaps a real apology.
- __ryan__ 4y ago"Sarcasm" unfortunately has a negative connotation. It makes it sound like you were being spiteful. In practice, I interpreted the text as "There's a simple solution... but we cannot use it", which is a perfectly fine thing to say, in my opinion.
- otterley 4y agoIt’s a good idea to have a native-English-speaking editor (and sometimes more than one!) — ideally one who has full situational context — review draft blog posts before they are published, and this is a good example of why. Doubly so if you’re representing a big company.
- tinus_hn 4y agoIt’s a bit silly to berate a customer for their use of ‘it’s easy’ and then use it yourself. ‘It was sarcastic’ and ‘it was a language issue’ are weak excuses. It’s just poor form, why make an excuse in the first place? You can just say this was a mistake and try to be better next time.
- thaway2839 4y agoRemoving a credit or a reference is probably the worst way to add succintness to an article. It's literally saying "the contributions of people whose work I based my work on is less important than the least useful sentence in describing my work".
- hitekker 4y agoYeah, Leonard inadvertently gave away the game with that comment. Removing credit from a blogpost because you want it to be "succinct" is not justifiable. I think he's trying hard to pretend he didn't know any better; that excuse seems increasingly thin given the developments of this thread. He just didn't care about other people. Edit: it looks like Dustin from the same team at Microsoft shares the same hostility https://news.ycombinator.com/item?id=31284857 https://news.ycombinator.com/item?id=31284857
- lhecker 4y agoI'm not sure editing the article would be the proper thing to do at this point. Someone else suggested to edit in 1-2 weeks for possible future readers. I can add back the sentence where I accredit Alacritty for the general, underlying algorithm/idea then, because that's where I heard about it first. There isn't really any other alternative, performant way to implement GPU-accelerated terminals, so I don't think hearing about it again from Casey changed my perception of what the only alternative to Direct2D is, in case it's fundamentally flawed for our purpose which it turned out to be.
- TrueTom 4y agohttps://www.youtube.com/watch?v=nDO24U3hMkU https://www.youtube.com/watch?v=nDO24U3hMkU (it's bit long-winded but the general message is sound)
- dmitriid 4y ago> I'm not sure editing the article would be the proper thing to do at this point. Someone else suggested to edit in 1-2 weeks for possible future readers. There's nothing improper with adding "Edit: credit to the <name of the person> who suggested the solution. While the solution seems trivial, there are certain technical challenges to overcome". > because that's where I heard about it first. No. That's not where you heard it first. Otherwise you wouldn't have written "this needs doctoral research on performance" in the original issue. Edit: I misattributed this quote, you didn't say it. > I don't think hearing about it again from Casey There's an actual, verifiable screenshot of your reaction to his words. That was not an "again".
- Xunjin 4y agoHonestly?! Your article is pretty good, here is a great example how misreading and Twitter cancel bubble works out :D Do not let your sarcasm/irony out of the articles, I've enjoyed.
- rfiat 4y agoIf you don't mind a comment about your English, I'd suggest that what you wrote seems like it's better described as "tongue in cheek" than "sarcastic". "Sarcastic" can have connotations of meanness or snarkiness whereas "tongue in cheek" suggests good-natured joking, which seems to match the tone of the original post better.
- dangerface 4y agoSeems like the solution was to convert a true type font to a bitmap font, I remember doing the same thing for my video games when I was a kid in the 90s its good to know I wasn't the only one that found it challenging.
- dangerface 4y ago> Casey's suggestion wasn't unique to me, as a significant number of other terminals do it exactly that way in OpenGl, something I was quite familiar with already. In your reply to Casey you made it sound like you where unaware when you say things like "I'm somewhat surprised that other accelerated terminals aren't already doing this" is OpenGL not accelerated? What am I missing here?
- lhecker 4y agoYou got the wrong person, I didn't write that. Once it became obvious that it's the only way to solve the issue and that a different use of Direct2D can't help with this, I implemented a prototype based on my pre-existing knowledge and explained how it works to the team.
- jbverschoor 4y agoThe problem that the poster has is that his input is basically being dismissed. He was too 'overconfident' with his 'opinion'. But it is exactly what has been implemented. It's basically this scenario: > "You don't understand, it's very very hard, next to impossible, to create a website where you can leave an email address. i think you should reread all the RFCs and a bunch of programming books. You have no right to say anything, WE are Microsoft, not you, so you have NOOOOOOOOOO idea" > 1 year later: "We created a website where you can leave an email address. It was actually not that difficult. But look, WE are Microsoft, so let us explain how smart we were to figure it out".
- woojoo666 4y agoThat's not how I interpretted the github thread and blog post. It seemed like the MS team was saying "yes we know this is one way to solve it, but it's incredibly difficult", and one year later they post "we finally did it and this is how difficult it was". As the author of the blog post mentioned here, the sentence about how "trivial" it was, was actually sarcasm, and the rest of the blog post highlights the technical challenges
- jbverschoor 4y agoThat's not how interpreted it.. there's way too much elitism in tech. And also aggregations about how easy or difficult things are. "AI will solve things" -> they have no clue, and just trust it's gonna work itself. "It's difficult to add a field to that form, it'll take 2 weeks" -> usually bs. I read the thread, and I fully agree that it should be a weekend work. So yeah, it's just other devs mismanaging their time, and therefore saying that things take way longer. The issue created 2 days afterwards (https://github.com/microsoft/terminal/issues/10461 https://github.com/microsoft/terminal/issues/10461) starts with the previously suggested solution which didn't make any sense because the original post "didn't understand how DirectWrite works, and yadayadayada". The solution is as trivial as "but just optimize our render pass instead" No sarcasm there. The whole sarcasm is just covering up their own ass 1 day later implementation starts. 2 days after that it was implemented.. > Yep! And I'm entirely on it! So eager to work on an issue created by himself instead of someone else! > Terminal cannot turn away valuable performance work simply on ideological grounds. The "Atlas-Engine" label hasn't been added to the original issue either. It just stinks like people using politics to improve their HR performance review.
- noncoml 4y agoHi! Are you also the person who wrote the first, insulting, reply?
- zamadatix 4y agoThe names of the commenters may not be highlighted but they are still in the images. If "the first, insulting, reply" refers to "of the screenshots on Twitter" lhecker would be the second to reply.
- john_moscow 4y agoYou need to handle your PR better, dude. Whenever you speak out, always get a chance to acknowledge the help/ideas of others, unless they are your competitors. Make sure your work isn't understated though. Like "Turns out, many users complained about <...> and even a few shared patches (<link>, <link>). We even had a conversation with Mr. Smith suggesting <..>, so we finally took a good look at it and made a universal solution that covers all the bases". It's not like you will get less credit for mentioning it - you still delivered the solution and that is what counts. But if you mention other people, it opens a few doors: * They will like you and will be more likely to share further suggestions or code snippets (that will help you build your promotion package). * The management will see you as a person who knows how to work with people, so you'll get a higher chance to get into the management track. * Once you discuss a technical solution with somebody, and don't leave them in dust like an asshole, you get basic mutual trust. If you ever lose your job, they might gladly recommend you to their company, or vice versa.
- pc86 4y agoWhy did you join this person's discord under a pseudonym? Edit: I ask because if you're taking a pessimistic view of this, here is the rough order of occurrences: 1. You insulted Casey, knowingly or not, intentionally or not, but in public. 2. You join his discord, under a fake name 3. You write this blog post, without credit to Casey (other than "a community member"). I hope you can see how someone could very easily take this as something more sinister than it probably was.
- nickitolas 4y ago1) When did this person insult him? Note that there was more than one microsoft person in that issue. 2) I don't get why so many people talk about this as if it were some horrible thing. I don't use my real name on discord the vast majority of the time, I don't see why you expect others to do so. The person in question admitted who they were when it was mentioned and later apologized for not stating it when they first joined. 3) I'm personally more mad about it not crediting the other terminals that have that kind of approach like wezterm, or whatever prior art they used. My understanding is they thought DirectWrite did caching internally, which made the suggestion unnecessary, but it turned out that wasn't working quite as they thought it was. I didn't think the terminal people were combative at all until Casey himself was. Ultimately, I think a big part of the outrage is just people assuming the worst interpretation of anything Microsoft.
- trapnii 4y agoI don't your name, pc86, is a real name, too. That's the life of them internet. So much about Pseudonym. So if already the very first statement is that questionable, how can I believe the rest you write had any truth?
- pc86 4y agoThat this may or may not pseudonymous is mostly a coincidence. I've talked about current (at the time) and past employers, I've posted my emails in comments and my profile before, my LinkedIn, used my first and last name separately, etc. This is not an anonymous profile by virtue of any effort on my part. I think just about every account - including my discord - is associated with my real identity and uses my real name. The GP seems to use similar naming conventions for all their accounts. GitHub, HN, Twitter, are all "lhecker." It's a pretty standard naming convention - I'm pcopley on a ton of services. So I can see how it could raise an eyebrow when you get an aberration of that norm or habit or brand or whatever you want to call it. The simple (and honestly maybe even likely) explanation is just "it's not an anonymous account I just have a different username on discord." But if you're inclined to pick up a pitch fork every now and then it's easy to take that as some sort of nefarious act.
- mmcnl 4y agoThere's no need for highly opinionated discussions. Differences in opinion should be a trigger to find a common understanding, it shouldn't result in defensive behavior. Everyone's just a person trying to help.