電線之間:采訪Microsoft Edge性能PM Nolan Lawson

by Vivian Cromwell

通過維維安·克倫威爾(Vivian Cromwell)

電線之間:采訪Microsoft Edge性能PM Nolan Lawson (Between the Wires: An interview with Microsoft Edge performance PM Nolan Lawson)

I interviewed Nolan Lawson, Web Performance PM at Microsoft Edge. He also maintains the popular open source library PouchDB together with others.

我采訪了Microsoft Edge的 Web Performance PM的Nolan Lawson。 他還與其他人一起維護了流行的開源庫PouchDB 。

告訴我們一些關于您的童年以及您成長的地方。 (Tell us a little bit about your childhood and where you grew up.)

I grew up in a small navy town called Bremerton, near Seattle. I had a pretty typical middle-class upbringing: my step dad worked for the naval shipyard, and my mom was a school nurse and later a school teacher.

我在西雅圖附近的海軍小鎮布雷默頓長大。 我有一個非常典型的中產階級成長經歷:我的繼父在海軍造船廠工作,我的媽媽是一名學校護士,后來是一名學校老師。

As a child I was a voracious reader. I read lots of fantasy and horror books, from the Narnia series to everything by Stephen King. My teachers were suspicious of me reading adult horror novels, but they tolerated it because at least I was reading. I was also really into video games.

小時候,我是一個貪婪的讀者。 我讀了很多幻想和恐怖書籍,從納尼亞系列到史蒂芬·金的所有作品。 我的老師對我讀成人恐怖小說感到懷疑,但他們容忍了,因為至少我在讀書。 我也很喜歡電子游戲。

I have a great appreciation for the outdoors thanks to an early experience in the Boy Scouts. I’ve also visited France a lot because my biological father is French. That gave me a bit of a travel bug, and as an adult I moved to Ottawa, to Geneva, and then to New York City before coming back to Seattle. I moved around every few years, just on a whim.

我對戶外運動非常感謝,這要歸功于童子軍的早期經驗。 我也去過法國很多,因為我的親生父親是法國人。 那給了我一些旅行的煩惱,成年后我搬到渥太華,去了日內瓦,然后又去了紐約,然后又回到了西雅圖。 我每隔幾年就動了一下,只是一時興起。

At some point I realized it would be a good idea to go back home and be closer to family. My girlfriend also wanted to settle there, because that’s where her family is from too. I started looking for jobs around Seattle, and Microsoft became a pretty obvious choice.

在某個時候,我意識到回到家與家人更近是個好主意。 我的女友也想在那定居,因為那也是她家人的家。 我開始在西雅圖附近尋找工作,微軟成了一個顯而易見的選擇。

告訴我們您的初次編程經驗。 (Tell us a little bit about your first programming experience.)

When I was six or seven, my uncle gave me a hand-me-down MS-DOS machine with a 5? inch floppy drive. It was ancient by today’s standards. It had basically two games: Snake and Gorillas, and it actually displayed the BASIC code before they started up. Those two games were all I could figure out to do with it.

當我六,七歲時,叔叔給了我一臺具有5?英寸軟盤驅動器的手動MS-DOS計算機。 按照今天的標準,這是古老的。 它基本上有兩個游戲: Snake和Gorillas ,并且在啟動之前實際上顯示了BASIC代碼。 那兩個游戲我都想辦法解決。

“I didn’t get back into programming again until I was in college.”
“直到上大學后,我才重新回到編程領域。”

I also had a book on MS-DOS programming, so I took some time to write a really simple Batch script. When the computer would start up, it would print:

我也有一本關于MS-DOS編程的書,所以我花了一些時間來編寫一個非常簡單的批處理腳本。 當計算機啟動時,它將打印:

“Hi, Nolan. Which game do you want to play? 1. Gorillas 2. Snake?”

“嗨,諾蘭。 您想玩哪個游戲? 1.大猩猩2.蛇?”

And you would type one or two depending on which game you wanted to play. I was pretty proud of that script!

然后您將根據要玩的游戲鍵入一兩個。 我為那個腳本感到驕傲!

When I was around nine, my daycare had a similar computer with even more games on it, so I decided to apply my Batch skills to it. Unfortunately, I messed up the computer and made it so you couldn’t play the games anymore. I felt guilty and it kinda scared me away. I didn’t get back into programming again until I was in college.

當我九歲左右的時候,我的托兒所擁有一臺類似的計算機,上面有更多的游戲,因此我決定將Batch技能應用于該計算機。 不幸的是,我弄亂了電腦并制作了它,所以您再也無法玩游戲了。 我感到內,這讓我很害怕。 直到上大學,我才重新回到編程領域。

As an undergraduate I studied linguistics, mostly because I was learning French and Japanese at the time. I was fascinated by languages. But after graduation, I realized it was kind of hard to get a job in linguistics. As it turned out, though, my department at the University of Washington had a Master’s program in computational linguistics, which seemed like a great option career-wise. That was how I finally got back into programming.

作為一名本科生,我學習語言學,主要是因為當時我正在學習法語和日語。 我著迷于語言。 但是畢業后,我意識到很難找到語言學的工作。 但事實證明,我在華盛頓大學的系擁有計算機語言學碩士學位,這在職業上似乎是一個不錯的選擇。 那就是我最終回到編程的方式。

是什么促使您參與PouchDB的? (What motivated you to get involved with PouchDB?)

Around 2012, I was working for an NGO in Geneva. We were building a web app for a client that was using CouchDB. Later on, I started playing with CouchDB for a side project. Through that I found PouchDB, which could sync data between CouchDB on the server and IndexedDB in the browser. I thought it was amazing.

2012年左右,我在日內瓦的一個非政府組織工作。 我們正在為使用CouchDB的客戶端構建一個Web應用程序。 后來,我開始與CouchDB一起進行輔助項目。 通過該操作,我找到了PouchDB ,它可以在服務器上的CouchDB和瀏覽器中的IdexedDB之間同步數據。 我認為這太神奇了。

While working on that project, I noticed a few bugs in PouchDB. I realized I knew enough Android and enough JavaScript to solve the bugs. Eventually, I ended up fixing more bugs, and contributing to the project more frequently. In early 2014 I become one of the main contributors, and still am today.

在進行該項目時,我注意到PouchDB中的一些錯誤。 我意識到我知道足夠的Android和足夠JavaScript來解決這些錯誤。 最終,我最終修復了更多的錯誤,并更加頻繁地為該項目做出了貢獻。 2014年初,我成為主要貢獻者之一 ,直到今天仍然如此。

The story of how PouchDB got started is pretty interesting. Back in 2010, Mikeal Rogers did this one-off experiment called IDBCouch, which only worked in Firefox Nightly because IndexedDB was so new at the time. Max Ogden later renamed it to PouchDB, when he was bicycle shopping in San Francisco and thought up the name “Portable Couch.” Then Dale Harvey, who works at Mozilla, picked up the project and did an enormous amount of work to get it running well in Firefox and Chrome.

關于PouchDB如何開始的故事非常有趣。 早在2010年, Mikeal Rogers進行了一次名為IDBCouch的一次性實驗,該實驗僅在Firefox Nightly中有效,因為IndexedDB當時還很新。 馬克斯·奧格登(Max Ogden)后來在舊金山騎自行車購物時將其重命名為PouchDB,并想到了“ 便攜式沙發 ”的名稱。 然后,在Mozilla工作的Dale Harvey選擇了該項目,并進行了大量工作以使其在Firefox和Chrome中正常運行。

When I came to the project in late 2013, I wanted PouchDB to work in all the browsers, like jQuery but for databases. I thought people should be able to drop it in and it should “just work” on old versions of Android, IE, and Safari. A lot of my early work was on cross-browser compatibility, which really helped PouchDB become more popular.

當我在2013年底參加該項目時,我希望PouchDB在所有瀏覽器(如jQuery)中都能使用,但適用于數據庫。 我認為人們應該可以使用它,并且應該可以在舊版本的Android,IE和Safari上“正常工作”。 我的很多早期工作是關于跨瀏覽器兼容性的,這確實幫助了PouchDB變得越來越流行。

PouchDB is a good example of what the IndexedDB authors originally intended when they wrote the spec. They wanted people to build libraries on top of it, in the spirit of the extensible web manifesto. The original spec author, Nikunj Mehta, even wondered if someone would write a “JavaScript CouchDB.” Today, there are a lot of interesting libraries built on top of IndexedDB, including PouchDB, localForage, Dexie.js and Lovefield, which provide a more developer-friendly experience.

PouchDB是IndexedDB作者編寫規范時最初意圖的一個很好的例子。 他們希望人們本著可擴展的Web宣言的精神在其上構建庫。 最初的規范作者Nikunj Mehta甚至想知道是否有人會編寫“ JavaScript CouchDB”。 今天,有很多建立在IndexedDB的頂部有趣的庫,包括PouchDB, localForage , Dexie.js和Lovefield ,它提供了更開發者友好的體驗。

PouchDB是否從大型企業和社區尋求資金? (Did PouchDB seek funding from large corporations and the community?)

“I’ve always had this somewhat idealistic notion that PouchDB should be a passion project that’s not corrupted by money. I don’t want to be swayed by one organization or another to push it in a particular direction. It ought to be whatever’s best for users.”
“我一直抱有某種理想主義的觀念,即PouchDB應該是一個不受金錢破壞的熱情項目。 我不想被一個組織或另一個組織所吸引,將其推向特定的方向。 它應該是最適合用戶的。”

We did try to seek funding pretty early on, around 2013. Dale set up a bounty system where each GitHub issue might have a notice saying, “Hey, if you solve this issue, there’s a bounty.” There were a few issues with that.

我們確實嘗試在2013年左右早些時候尋求資金。Dale建立了一個賞金系統,每個GitHub問題可能都會有一個通知,說:“嘿,如果您解決這個問題,就會有賞金。” 有一些問題。

Random people could come in and submit a PR to fix one of the bounty issues. I recall one issue where the PR didn’t quite fix it, but it was halfway there, so I went in and fixed the other half. At that point, it was unclear who the bounty should go to. Should it be split in half? In the end, the person who offered the bounty didn’t even end up paying it. So this system didn’t work too well, and we scrapped it.

隨機的人可以進來并提交PR來解決其中一個賞金問題。 我記得一個問題,PR并沒有完全解決它,但是它已經解決了一半,所以我進了一步,修復了另一半。 在那時,尚不清楚賞金應該歸誰。 應該將它分成兩半嗎? 最后,提供賞金的人甚至沒有付清這筆錢。 因此,該系統無法正常運行,因此我們將其報廢。

Today, PouchDB has grown to over 200 contributors, but essentially Dale is the BDFL and I’m the lieutenant. Recently we started the funding discussionagain, but we need to set up a formal governance model first. This is especially important to enterprises. IBM, which is heavily invested in CouchDB through Cloudant, wants to be able to tell their customers that CouchDB and PouchDB are rock-solid solutions to their problems. However, while CouchDB is under the Apache Foundation and has a very clear governance model, PouchDB doesn’t. So some enterprise clients might be a little concerned about that.

如今,PouchDB的貢獻者已增長到200多個 ,但本質上Dale是BDFL,而我是中尉。 最近,我們再次開始了資金討論 ,但我們需要首先建立一個正式的治理模型。 這對企業尤其重要。 通過Cloudant對CouchDB進行了大量投資的IBM希望能夠告訴客戶CouchDB和PouchDB是解決他們問題的堅如磐石的解決方案。 但是,盡管CouchDB在Apache Foundation之下,并??且具有非常清晰的治理模型,但PouchDB卻沒有。 因此,某些企業客戶可能對此有所擔心。

I’ve always had this somewhat idealistic notion that PouchDB should be a passion project that’s not corrupted by money. I don’t want to be swayed by one organization or another to push it in a particular direction. It ought to be whatever’s best for users. We’re at this point in the maturity of the project, though, where we need to start asking the hard questions. For instance, we want to figure out how to raise and distribute money so we can give it out fairly to contributors. We’re exploring options right now, but we haven’t committed to anything yet.

我一直有這樣一種理想主義的觀念,即PouchDB應該是一個不受金錢破壞的熱情項目。 我不想被一個組織或另一個組織所吸引,將其推向特定的方向。 它應該是最適合用戶的。 不過,我們正處于項目的成熟階段,我們需要開始提出棘手的問題。 例如,我們想弄清楚如何籌集和分配資金,以便我們公平地將其分配給捐助者。 我們目前正在探索各種選擇,但我們尚未做出任何承諾。

關于OSS可持續性,您從PouchDB項目中學到了什么? (What have you learned from the PouchDB project when it comes to OSS sustainability?)

“That’s why I think it’s important to remember what it’s like to be a beginner. When you’re just starting out, even talking to an open-source maintainer can be intimidating.”
“這就是為什么我認為記住初學者的感覺很重要的原因。 當您剛剛起步時,甚至與開源維護者交談也可能令人生畏。”

PouchDB was my first big open-source project. I have to hand it to Dale; he was my mentor from the start. He taught me all the fundamentals of how to interact in an open-source project.

PouchDB是我的第一個大型開源項目。 我必須把它交給戴爾; 從一開始他就是我的導師 他教了我有關如何在開源項目中進行交互的所有基礎知識。

In the beginning, even just talking to Dale Harvey on IRC was intimidating. He was the kind of person who gives talks at conferences; people respected him. I was just some rando on the Internet. But Dale is always very patient with new contributors. He responds to everyone’s questions and issues. Even if he thinks something’s a bad idea, he’ll tell them gently. Slowly, I realized Dale is just a normal human being, and he’s happy to have people involved in the project.

剛開始時,即使只是與IRC的Dale Harvey交談也是令人生畏的。 他是那種在會議上發表演講的人。 人們尊重他。 我只是互聯網上的一名蘭多。 但是Dale對新的貢獻者總是很耐心。 他回答每個人的問題。 即使他認為某事是一個壞主意,他也會輕柔地告訴他們。 慢慢地,我意識到Dale只是一個普通的人,他很高興有人參與該項目。

That’s why I think it’s important to remember what it’s like to be a beginner. When you’re just starting out, even talking to an open-source maintainer can be intimidating. I learned from Dale to be a thoughtful maintainer and to always encourage people to contribute.

這就是為什么我認為記住初學者的感覺很重要的原因。 當您剛入門時,甚至與開源維護者交談也可能令人生畏。 我從戴爾(Dale)中學到了要成為一個周到的維護者,并始終鼓勵人們做出貢獻。

Today, PouchDB is very mature, and it requires a huge amount of knowledge to get started, which is challenging to new contributors. One thing I’d like to fix is to make it a little bit easier for newcomers to get on board. That’s something I think is missing right now.

今天,PouchDB已經非常成熟,它需要大量的知識才能入門,這對新的貢獻者來說是挑戰。 我想解決的一件事是使新來者更容易加入。 我認為這是現在缺少的東西。

自2010年以來,我們一直在談論“脫機優先”。您認為我們終于可以為此做好準備了嗎? 今天的主要挑戰是什么? (“Offline first” is something we have been talking about since 2010. Do you think we are finally ready for it? What are the main challenges with it today?)

Offline is really difficult. It’s one of those things that’s even missing from a university computer science education. What folks don’t realize is, when you’re building an offline-first application, you are essentially building a distributed system: client and server. Just by storing data on those two nodes, you have all the theoretical problems of the CAP theorem: consistency, availability, and partition tolerance — pick two.

離線真的很困難。 這是大學計算機科學教育中甚至還缺少的東西之一。 人們沒有意識到的是,當您構建脫機優先應用程序時,實際上是在構建分布式系統:客戶端和服務器。 僅通過將數據存儲在這兩個節點上,您便具有CAP定理的所有理論問題:一致性,可用性和分區容限-選擇兩個。

So if you’re building that kind of system, but don’t realize it going in, you’ll probably end up just hacking something together. You may think you got 100% of the way there, but you really only got 90%, and the remaining 10% may take years to finish. It’s taken years to fix all the edge cases in PouchDB.

因此,如果您正在構建這種系統,但是不知道它會進入其中,那么您可能最終只會一起入侵某些東西。 您可能會認為自己達到了目標的100%,但實際上只有90%,而剩下的10%可能要花費數年才能完成。 在PouchDB中修復所有極端情況花了幾年的時間。

One of the things we’re trying to do with PouchDB is to raise awareness and help people think about the inherent issues of offline-first architecture. PouchDB has a built-in concept of conflict management, because CouchDB thought about those problems from the very beginning. It’s designed with the multi-version concurrency control model, which answers the question of what happens when the client and server get out of sync.

我們正在嘗試使用PouchDB進行的一件事是提高認識并幫助人們思考脫機優先架構的內在問題。 PouchDB具有內置的沖突管理概念,因為CouchDB從一開始就考慮到這些問題。 它是使用多版本并發控制模型設計的,該模型回答了當客戶端和服務器不同步時會發生什么的問題。

User experience is another big problem that hasn’t really been solved yet in offline-first. I think that new models like Progressive Web Applications will force us to start to think about how to communicate this to users. There’s a great post from Jesse Beach where she talks about how to effectively communicate offline states, and at Offline Camp we discussed some of these techniques, like switching the UI to grayscale when the app goes offline. It’s not as negative or jarring as an alert, but it’s a subtle indication that you’re offline.

用戶體驗是另一個離線優先解決的大問題。 我認為諸如漸進式Web應用程序之類的新模型將迫使我們開始考慮如何將此與用戶進行交流。 杰西海灘 ( Jesse Beach)上有一篇很棒的文章 ,她談到如何有效地傳達離線狀態,在離線營地中,我們討論了其中一些技術,例如當應用程序離線時將UI切換為灰度。 它不像警報那樣消極或刺耳,但這是您處于離線狀態的微妙指示。

There’s been a great deal of progress on offline first, but it’s still definitely an unsolved problem.

首先,離線方面已經取得了很大的進步,但這絕對是一個尚未解決的問題。

是什么讓您決定加入Microsoft Edge團隊? 從小型初創公司到大型組織,您對前六個月的印象如何? (What made you decide to join the Microsoft Edge team? What is your impression of the first six months, going from a small startup to a large organization?)

“But there’s a general feeling across the company now that when we’re transparent and seeking feedback from the community, it works out well for us.”
“但是,現在,整個公司普遍感到,當我們保持透明并尋求社區的反饋時,這對我們來說很有效。”

I came to Microsoft Edge because I wanted to help make the web platform better. I thought it would be a good opportunity to build out a lot of the standards that I’m passionate about. For instance, we’re in the process of building out Service Workers and Progressive Web Apps, as well as improvements to IndexedDB. I wanted to be on the ground floor to see those things happen.

我之所以加入Microsoft Edge,是因為我想幫助改善Web平臺。 我認為這是一個很好的機會來建立我熱衷的許多標準。 例如,我們正在構建Service Worker和Progressive Web Apps以及對IndexedDB的改進。 我想在底層看到這些事情的發生。

Microsoft is fascinating to watch because it’s a company in transition. It’s moving from being fairly closed to being a lot more open. Certain teams have embraced this openness more than others, and even certain people within the same team. But there’s a general feeling across the company now that when we’re transparent and seeking feedback from the community, it works out well for us.

微軟非常著迷,因為它是一家轉型中的公司。 它已經從相當封閉的狀態轉變為更加開放的狀態。 某些團隊比其他團隊甚至在同一團隊中的某些人對開放性的接受程度更高。 但是,現在,整個公司都有一種普遍的感覺,那就是當我們保持透明并征詢社區的反饋時,對我們來說效果很好。

I am still actively involved in the PouchDB project, but I tend to keep my work at Microsoft and PouchDB separate. I’ll triage GitHub issues on the way to work and then do some programming for PouchDB in the evenings or weekends. But I find these two blending together more and more, in a positive way. For example, I might find a bug in IndexedDB on Edge while I’m working on PouchDB issues.

我仍然積極參與PouchDB項目,但我傾向于將我在Microsoft和PouchDB的工作分開。 我將對GitHub問題進行分類,然后在晚上或周末為PouchDB進行一些編程。 但是我發現這兩種方式越來越以積極的方式融合在一起。 例如,當我處理PouchDB問題時,可能會在Edge上的IndexedDB中發現一個錯誤。

帶領我們完成在Microsoft Edge擔任績效PM的一天。 (Walk us through a day in the life of being a performance PM at Microsoft Edge.)

I’m on the performance team, so most of my job centers around identifying performance problems in the browser and communicating those problems to the web developers and the browser team.

我是性能團隊的一員,所以我的大部分工作都圍繞著識別瀏覽器中的性能問題并將這些問題傳達給Web開發人員和瀏覽器團隊。

One project I’ve been working on is “Performance Clubs,” where we invite web teams to come in and talk about their site’s performance. Usually these are Microsoft sites like Outlook.com and MSN, but sometimes they’re also external partners. When they come in, we do a deep performance analysis of the website using the same tools that we use to build the browser itself. Then we give performance advice to them so they can go back and make their websites faster. I also file issues reported by the site authors and write test cases.

我一直在研究的一個項目是“ Performance Clubs”,我們邀請網絡團隊加入進來,討論他們網站的性能。 通常,這些網站是Microsoft網站,例如Outlook.com和MSN,但有時它們也是外部合作伙伴。 當它們進入時,我們將使用與構建瀏覽器本身相同的工具對網站進行深入的性能分析。 然后,我們向他們提供性能建議,以便他們可以回頭并使其網站更快。 我還歸檔了站點作者報告的問題并編寫了測試用例。

The performance clubs are private for now. Not everyone wants to take the aspects of their websites that they’re not proud of and put them out on public display; it’s like airing your dirty laundry. There has been some discussion about maybe anonymizing and publishing the data, but it’s incredibly difficult to do without revealing the site that you’re analyzing. There’s been some recent controversy about public performance audits; it’s not always welcome.

表演俱樂部目前是私人的。 并非每個人都希望將自己不滿意的網站內容放到公眾面前展示; 就像在晾臟衣服一樣。 已經進行了一些討論,可能涉及匿名化和發布數據,但是如果不透露正在分析的站點,很難做到。 最近有一些關于公共績效審計的爭議; 它并不總是受歡迎。

鑒于最近引起了熱烈的討論,瀏覽器供應商和框架作者如何在Web性能上進行更緊密的協作? (How can browser vendors and framework authors collaborate more closely on web performance, given that it has been a heated discussion recently?)

“…the people who can provide the most value here are JavaScript library and framework authors. They’re in a position where they can be impartial and compare performance across browsers, which is extremely valuable to browser vendors.”
“……在此能提供最大價值的人是JavaScript庫和框架作者。 他們處于公正的位置,可以在不同瀏覽器之間比較性能,這對瀏覽器供應商來說非常有價值。”

I think it’s important for web developers to understand why performance is such a touchy subject. Browsers don’t compete on API features — we stopped doing that when we agreed to implement web standards — but browsers do compete on performance. Speed is a huge selling point for a browser. Every browser claims to be the fastest, kind of like how McDonald’s and Burger King each claim to have the best burgers. Obviously they can’t both be right.

我認為對于Web開發人員來說,重要的是要理解為什么性能如此棘手。 瀏覽器在API功能上沒有競爭-當我們同意實施Web標準時,我們就停止了這樣做-但是瀏覽器在性能上確實競爭。 速度是瀏覽器的巨大賣點。 每個瀏覽器都聲稱是最快的,就像麥當勞和漢堡王各自聲稱擁有最好的漢堡一樣。 顯然他們不可能兩者都是正確的。

In general, browser vendors only speak publicly about what they do well. If you talk privately with someone who works on a browser team, they can easily tell you 50 things the browser does well and 50 things it doesn’t do well; they know them by heart. But publicly we tend to only talk about the stuff we do well, because there are business implications there.

通常,瀏覽器供應商只會公開談論他們的優勢。 如果您與瀏覽器團隊的成員私下交談,他們可以輕松地告訴您瀏覽器運行良好的50件事和運行不正常的50件事。 他們很了解他們。 但是在公開場合,我們傾向于只談論我們做得好的事情,因為那里存在業務隱患。

For instance, when the WebKit team comes out with the Speedometerbenchmark or the MotionMark benchmark, it’s no surprise that Safari wins. Similarly, when Microsoft writes a blog post about how we have a great JavaScript Engine, we tend to talk about Octane and JetStream. Surprise, surprise: we win on those benchmarks.

例如,當WebKit團隊推出Speedometer基準或MotionMark基準時,Safari獲勝就不足為奇了。 同樣,當Microsoft撰寫有關如何擁有出色JavaScript引擎的博客文章時,我們傾向于談論Octane和JetStream 。 驚喜,驚喜:我們在那些基準上取勝。

I think the people who can provide the most value here are JavaScript library and framework authors. They’re in a position where they can be impartial and compare performance across browsers, which is extremely valuable to browser vendors. Unfortunately I feel many of them could be doing better on this.

我認為可以在此提供最大價值的人是JavaScript庫和框架作者。 他們處于公正的位置,可以在不同瀏覽器之間比較性能,這對瀏覽器供應商來說非常有價值。 不幸的是,我覺得他們中的許多人可能會做得更好。

There’s a lot of interest in web performance today, and you see many JavaScript frameworks competing with one another on performance — React, Inferno, Preact, Vue, Svelte, etc. But when you look at their benchmarks, they’re often only testing in Chrome or maybe Mobile Safari. Sometimes they don’t even specify which browser they test on, so you just have to assume it’s Chrome.

有很多的當今網絡性能的興趣,你可以看到很多JavaScript框架與性能相互競爭- 陣營 , 地獄 , Preact , Vue公司 , Card.svelte ,等等。但是當你看到他們的基準,他們往往只在測試Chrome或也許移動Safari瀏覽器。 有時他們甚至沒有指定要測試的瀏覽器,因此您只需要假設它是Chrome。

One framework that’s bucking this trend, which I really love, is Ember. They’ve created their own benchmark, the Ember Benchmark, and they sometimes go on Twitter and maybe raise some eyebrows by pointing out that Chrome doesn’t do as well on their benchmarks as Safari.

我真正喜歡的一個逆轉這種趨勢的框架是Ember 。 他們創建了自己的基準測試Ember Benchmark ,有時他們會在Twitter上露面 ,并指出Chrome與Safari相比在基準測試中表現不佳,因此引起了一些關注。

This is great feedback for browser vendors. Even if we don’t send public signals about how we feel about the benchmark, we may use it internally and work hard to make our browser better. I would love to see more cross-browser benchmarking and more recognition from JavaScript framework authors that it’s valuable to test across browsers. That’s the big thing I see missing right now.

對于瀏覽器供應商來說,這是一個很好的反饋。 即使我們不向公眾發送有關基準測試感覺的信號,我們也可能會在內部使用它并努力使瀏覽器變得更好。 我希望看到更多的跨瀏覽器基準測試,以及JavaScript框架作者的更多認可,這對于跨瀏覽器進行測試非常有價值。 這是我現在錯過的大事情。

Edge has pretty good browser market share; it’s improving anyway. I don’t think it’s safe to just ignore browsers because they have too low of a market share, especially because a lot of web developers have a very skewed perception of what the market share is. Windows is the dominant operating system in the world; it’s used by about 90% of all desktop users. And Android is the most popular mobile operating system on the planet by far.

Edge擁有相當不錯的瀏覽器市場份額; 無論如何它正在改善。 我認為僅僅忽略瀏覽器是不安全的,因為它們的市場份額太低,尤其是因為許多Web開發人員對市場份額的看法非常不正確。 Windows是世界上主要的操作系統。 大約90%的桌面用戶都在使用它 。 到目前為止,Android是全球最受歡迎的移動操作系統 。

If you just look at web developer conferences, though, you could be forgiven for thinking that the world is purely Mac, or that everybody is using Chrome, or that most people are carrying an iPhone. But the reality is far different. I would say web developers are doing a big disservice to their users if they live in that bubble and assume that everyone else is living in that bubble too.

但是,如果只看Web開發者大會,您可能會認為世界純粹是Mac,或者每個人都在使用Chrome,或者大多數人都在使用iPhone,這是可以原諒的。 但是現實卻大不相同。 我要說的是,如果Web開發人員生活在該泡沫中并假設其他所有人也生活在該泡沫中,則會給用戶帶來極大的傷害。

在編程之外您還有哪些其他愛好或興趣? (What other hobbies or interests do you have outside of programming?)

I play a little guitar and sing a little, mostly for myself. I have a YouTube channel where I post some of my performances. I don’t perform publicly.

我彈一點吉他,唱歌一點,主要是為了我自己。 我有一個YouTube頻道,我在那里發布一些表演 。 我不公開表演。

我對電子競技真的很感興趣。 我花了大量時間觀看Super Smash Brothers錦標賽或觀看視頻游戲的運行速度。 速度的運行實際上使我想起了很多瀏覽器性能。 您試圖將其優化為盡可能快的速度,有時您會作弊很多,例如使角色在墻壁上出現毛刺。 有時我發現,一個經過良好調整的網站就像是一個經過調整的速度運行-您作弊要取得成功。 看到這些相似之處真是有趣。 (I’m really interested in e-sports. I spend a lot of time watching Super Smash Brothers tournaments or watching video game speed runs. Speed runs actually remind me a lot of browser performance. You’re trying to optimize this thing to go as fast as possible, and sometimes you’re cheating quite a bit, such as making your character glitch through a wall. Sometimes I find that a well-tuned website is like a well-tuned speed run — you cheat a bit to get ahead. It’s kind of funny to see the parallels.)

您的編程英雄是誰? (Who are your programming heroes?)

I really admire D. Richard Hipp, the creator of SQLite, which is arguably the most popular database on the planet. SQLite is a rigorous piece of software with 745 times as much test code as code. You could send that thing to the moon.

我真的很佩服SQLite的創建者D. Richard Hipp ,它可以說是全球最受歡迎的數據庫。 SQLite是一款嚴格的軟件,其測試代碼是代碼的745倍。 你可以把那東西送上月球。

Richard Hipp is also something of a programming Renaissance Man; he’s implemented lots of interesting things. He wrote a whole version control system called Fossil. He wasn’t happy with Git, so he wrote an entire version control system, and that’s the version control system used for SQLite.

理查德·希普(Richard Hipp)還是一位編程復興者。 他實現了很多有趣的東西。 他編寫了一個稱為Fossil的完整版本控制系統。 他對Git不滿意,因此他編寫了一個完整的版本控制系統,這就是用于SQLite的版本控制系統。

If you look at SQLite source code, you’ll also find my favorite open source license of all time, which says “In place of a license, I offer you this prayer.” It’s really beautiful, like a poem.

如果您查看SQLite源代碼,您還將找到我最喜歡的開源許可證,上面寫著:“代替許可證,我為您祈禱。” 真的很美,就像一首詩。

And yet despite his success, Hipp is also incredibly humble. He never boasts in any interview. I find it inspiring to see someone who is so humble, and yet so proficient in the software world.

盡管他取得了成功,但希普還是非常謙虛。 他從來沒有自夸過任何采訪。 我發現看到一個謙虛但精通軟件世界的人鼓舞人心。

This project is made possible with sponsorships from frontendmasters.com, egghead.io, Microsoft Edge and Google Developers.

來自frontendmasters.com , egghead.io , Microsoft Edge和Google Developers的贊助使該項目成為可能。

Donate to support this project.

捐款支持該項目 。

To suggest a maker you’d like to hear from, please fill out this form.

要建議您想聽聽的制造商,請填寫此表格 。

You can also send feedback to betweenthewires on Twitter.

您還可以發送反饋betweenthewires在Twitter上。

翻譯自: https://www.freecodecamp.org/news/between-the-wires-an-interview-with-microsoft-edge-performance-pm-nolan-lawson-ca3240dec2eb/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395581.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395581.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395581.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

swift菜鳥入門視頻教程-09-類和結構體

本人自己錄制的swift菜鳥入門,歡迎大家拍磚,有什么問題能夠在這里留言。主要內容:類和結構體對照 結構體和枚舉是值類型 類是引用類型 類和結構體的選擇 集合(collection)類型的賦值與復制行為視頻地址:百度…

oracle的集合操作符,[Oracle] Oracle的集合操作符

Oracle的集合操作包括: union , intersect , minus.[例子]假設有兩個表a,b如下:SQL> select * from a;COLA----------123SQL> select * from b;COLB----------345union : 得到兩個結果集的并集(不含重復值)SQL> select * from a2 union3 select * from b;COLA------…

鎖大全與 GDB調試

1.innodb_lock_monitor:打開鎖信息的方式 mysql> create table innodb_lock_monitor(id int) engineInnoDB; Query OK, 0 rows affected, 1 warning (2.29 sec) mysql> begin work; Query OK, 0 rows affected (0.00 sec) mysql> update t set val val 1…

[筆試面試題] 8-面向對象篇

面向對象篇 1 面向對象與面向過程的含義以及區別? 面向對象 面向對象是把數據及對數據的操作方法放在一起,作為一個相互依存的整體,即對象。對同類對象抽象出其共性,即類,類中的大多數數據,只能被本類的方法…

管理員所有權代碼_為什么代碼所有權糟透了,您永遠不應該在有實踐的地方工作...

管理員所有權代碼Code ownership sucks.代碼所有權糟透了。 It limits code and stunts your growth as a developer.它限制了代碼并阻礙了您作為開發人員的成長。 Let’s look at what code ownership is and why it destroys individuals and organizations.讓我們看看什么…

AngularJS 自定義控件

AngularJS Custom Directives 好討厭不帶日期的博客,而且說得好啰嗦 自定義指令介紹 AngularJS 指令作用是在 AngulaJS 應用中操作 Html 渲染。比如說,內插指令 ( {{ }} ), ng-repeat 指令以及 ng-if 指令。 當然你也可以實現自己的。這就是 AngularJS 所…

oracle 監聽加密 tcps,通過oracle wallet配置listener tcps加密

一 配置客戶端和服務端的wallet2端配置方法一致,相互添加證書orapki wallet create -wallet "/u01/oracle/wallet" -pwd Wdkf984jkkgekj434FKFD -auto_login_localorapki wallet add -wallet "/u01/oracle/wallet" -pwd Wdkf984jkkgekj434FKFD …

[財務知識] debt debit credit 的區別于聯系

https://blog.csdn.net/sjpljr/article/details/70169303 劍橋詞典解釋分別為: Debt [C or U ] n.something, especially money, which is owed to someone else, or the state of owing something借款,欠款;債務He ran/got into debt ( borr…

SpringMVC視圖解析器

SpringMVC視圖解析器 前言 在前一篇博客中講了SpringMVC的Controller控制器,在這篇博客中將接著介紹一下SpringMVC視 圖解析器。當我們對SpringMVC控制的資源發起請求時,這些請求都會被SpringMVC的DispatcherServlet處理,接著 Spring會分析看…

TIOBE 10月編程語言排行榜 : GO 問鼎本年度語言 ?

距離2016年度編程語言的公布只剩3個月了,誰將奪得桂冠? 與去年同期相比,2016年只有Go語言和Groovy語言的增長率超過了1%。 需要注意的是,Groovy語言2015年以一個爆炸性增長的收尾,所以到2017年1月左右的增長速度可能不…

校友郵箱_freeCodeCamp校友網絡:FCC校友的自主指導網絡

校友郵箱by peterWeinberg彼得溫伯格 freeCodeCamp校友網絡:FCC校友的自主指導網絡 (The freeCodeCamp Alumni Network: A homegrown mentorship network for FCC alumni) For the last year, I’ve been spending nearly all my free time learning to code. I’v…

oracle severity,ORACLE10G如何清除OEM下的歷史警告信息

ORACLE10G如何清除OEM下的歷史警告信息問題描述:OEM的HOME頁面可以顯示ORACLE的報警信息,但報警事件清除后該信息不會自動清除。隨著時間的增長,信息量逐漸加大,解決方法是手工予以清除。SampleCluster DatabaseTablespaces FullT…

使用 ReSharper,輸入即遵循 StyleCop 的代碼格式化規范

StyleCop 可以幫助強制執行代碼格式化規范,ReSharper 可以幫助你更高效地編寫代碼。把兩者結合起來,你便能高效地編寫符合團隊強制格式化規范的代碼來。 本文就介紹如何使用 ReSharper 來高效地遵循 StyleCop 的代碼格式化規范。 本文內容 安裝插件 Styl…

Oracle數據庫備份恢復,巡檢須要關注的對象設置以及相關恢復概述

數據庫備份恢復。巡檢須要關注的對象設置: 1.數據庫名稱,以及DBID; --dbid在v$database中 SYSORCL>select dbid,name from v$database; DBID NAME ---------- --------- 1385095721 ORCL 2.控制文件的位置; s…

Python迭代器

一、文件迭代器 readline()每次讀取文件的一行,每次調用readline方法會自動到下一行,到文件末尾時,會返回空字符串。 _next_()方法同readline()一樣,只是到最后一行會引發stopiterat…

成千上萬的在線課程時,如何保持理智和學習編碼

by Travis Chan通過特拉維斯陳 成千上萬的在線課程時,如何保持理智和學習編碼 (How to stay sane and learn to code when there are thousands of online courses) We live in the information age. Information about anything we can think of is accessible to…

oracle中noguarantee,聊聊UNDO_RETENTION作用(修改guarantee)

oracle10g中,針對dba_tablespace,加了其中一個額外列是retention.回憶一下Oracle 10g之前,在自動Undo管理的模式下,我們都知道undo_retention參數的作用是用來控制當transaction被commit之后,undo信息的保留時間。這些undo信息可以…

【Hankson 的趣味題】

可能我只適合這道題的50分 但還是要爭取一下的 我們知道對于\(gcd\)和\(lcm\)有這樣的定義 \(a\prod _{i1}^{\pi(a)}p_i^{d_{i}}\) \(b\prod _{i1}^{\pi(b)}p_i^{g_{i}}\) 那么則有 \(gcd(a,b)\prod_{i1}^{\pi(max(a,b))} p_i^{min(g_i,d_i)}\) \(lcm(a,b)\prod_{i1}^{\pi(max(…

C# 控件雙緩沖控制 ControlStyles 枚舉詳解

ControlStyles 枚舉.NET Framework 4指定控件的樣式和行為。 此枚舉有一個 FlagsAttribute 特性,通過該特性可使其成員值按位組合。 命名空間: System.Windows.Forms程序集: System.Windows.Forms(在 System.Windows.Forms.dll …

協作機器人 ai算法_如果我們希望人工智能為我們服務而不是不利于我們,我們需要協作設計...

協作機器人 ai算法by Mariya Yao姚iya(Mariya Yao) 如果我們希望人工智能為我們服務而不是不利于我們,我們需要協作設計 (If we want AI to work for us — not against us — we need collaborative design) The trope “there’s an app for that” is becoming …