
JSJ 268 Building Microsoft Office Extensions with JavaScript with Tristan Davis and Sean Laberee
JSJ 268 Building Microsoft Office Extensions with Javascript with Tristan Davis and Sean LabereeThis episode is live at the Microsoft Build 2017 with Charles Max Wood and AJ O’Neal. We have Tristan Davis and Sean Laberee from the Office Team at Microsoft. Tune in and learn more about what’s new with Microsoft Office Extensions![00:01:25] – Introduction to Tristan Davis and Sean LabereeTristan Davis and Sean Laberee are Program Managers on the Microsoft Office team, focused on Extensibility.Questions for Tristan and Sean[00:01:45] – Extending Office functionality with Javascript Office isn’t just an application on Windows that runs on your PC. It is running on iPhone, iPad, Android tablet, and apps on the browser with Office Online. The team needs a new platform, add-ins, which allow you to build apps that run across all places. It’s HTML and Javascript. HTML for all the UI and a series of Javascript module calls for the document properties. Sometimes we call it OfficeJS.[00:03:20] – This works on any version of Office?It works on Office on Windows, Mac, Online and iPad.[00:03:55] – HTML and CSS suck on mobile?There are things that you’re going to want to do when you know you’re running on a mobile device. If you look at an add-in running on Outlook for iPhone, the developer does a lot of things to make that feel like part of the iPhone UI. Tristan believes that you could build a great add-in for Office using HTML and JavaScript.[00:05:20] – Are these apps written with JavaScript or you have a Native with WebView?Office itself is Native. All of it is Native code but the platform is very much web. The main piece of it is pointing at the URL. Just go load that URL. And then, you can also call functions in your JavaScript.[00:06:35] – Why would you do this? How does it work?The add-in platform is a way to help developers turn Word, Excel and PowerPoint into the apps that actually solve user’s business problems. The team will give you the tools with HTML and JavaScript to go and pop into the Word UI and the API’s that let you go manipulate the paragraph and texts inside of Word. Or in Excel, you might want to create custom formulas or visualizations. The team also let people use D3 to generate their own Excel charts.And developers want to extend Office because it’s where a lot of business workers spend their days 0 in Outlook, Teams, Word, Excel.[00:10:00] – How did this get delivered to them?There are 2 ways to get this delivered. One, there’s an Office Store. Second, if you go into Word, Excel, and PowerPoint, there’s a store button and you can see tons of integrations with partners.For enterprises, IT can deploy add-ins to the users’ desktops without having stress about deploying MSI’s and other software deployments that the web completely rids off. The add-ins make a whole lot of pain the past completely go away.[00:11:00] – Everybody in the company can use a particular plug-in by distributing it with Office?That’s right. You can go to Office 365 add-in experience. Here’s the add-in and you can to specific people or everyone who’s part of a group.For the developer’s perspective, if you have the add-in deployed to your client, you could actually push updates to the web service and your users get the updates instantly. It’s a lot faster turn-around model.[00:14:20] – What about conversations or bot integrations?There’s the idea of connectors at Teams. You can subscribe to this web book and it’ll publish JSON. When the JSON is received, a new conversation inside of Teams or Outlook will be created. For example, every time someone posts on Stack Overflow with one of the tags that team cares about, it posts on Outlook.It’s a great way to bring all the stuff. Rather than have 20 different apps that are shooting 20 different sets of notifications, it’s just all conversations in email, making do all the standard email things.And in the connector case, it’s a push model. The user could choose what notifications they want.You’d also learn things like bots. You can have bots in Teams and Skype. The users can interact with them with their natural language.[00:18:40] – How about authentication?As long as you’re signed into Office, you can call JavaScript API to give you an identity token for the sign in user and it will hand you a JWT back. That’s coming from Azure Active Directory or from whatever customer directory service. That’s standard.If you want to do more, you can take that identity token and you can exchange that for a token that can call Microsoft graph. This app wants to get access to phone, are you okay with that? Assuming the user says yes, the user gets a token that can go and grab whatever data he wants from the back-end.[00:20:00] – Where does it store the token?That’s up to the developer to decide how they want to handle that but there are facilities that make sure you can pop up a dialog box and you can go to the LO-flow. You could theoretically cache it in the browser or a cookie. Or whatever people think is more appropriate for the scenario.[00:20:55] – What does the API actually look like from JavaScript?If you’re familiar with Excel UI, you can look at Excel API. It’s workbook.worksheets.getItem() and you can pass the name of the worksheet. It can also pass the index of the worksheet.[00:22:30] – What’s the process of getting setup?There’s a variety of options. You can download Office, write XML manifest, and take a sample, and then, side loads it into Office. You can also do that through web apps. There’s no install required because you can go work against Office Online. In the Insert menu, there’s a way to configure your add-ins. There’s upload a manifest there and you can just upload the XML. That’s going to work against whatever web server you have set up.So it’s either on your local machine or up in the cloud. It’s as much as like regular web development. Just bring your own tools.[00:24:15] – How do you protect me as a plug-in developer?There’s an access add-in that will ask your permission to access, say, a document. Assume, they say yes, pipes are opened and they can just go talk to those things. But the team also tries to sandbox it by iframes. It’s not one page that has everybody’s plug-ins intermingle that people can pole at other people’s stuff.[00:27:20] – How do you support backward compatibility?There are cases where we change the behavior of the API. Every API is gated by requirement set. So if a developer needs access to a requirement set, he gets an aggregate instead of API’s that he can work with but it isn’t fixed forever.But it’s not at that point yet where we end up to remove things completely. In Office JS, we’ve talked about API’s as one JavaScript library but really, it’s a bootstrap that brings in a bunch of other pieces that you need.[00:30:00] – How does that work on mobile? Do they have to approve download for all components?You can download components by using the browser that the operating system gives. It’s another one of the virtues of being based on the web. Every platform that has a web browser can have JavaScript execution run-time. It allows for the way that their app guidelines are written.[00:33:15] – How about testing?It’s a place where there’s still have work to do. There’s a bunch of open-source projects that partners have started to do that. What they’ve done is they’ve built a testing library. Whatever the mock is, it's just a thing on Github. It is open-source friendly. So the team could be able to contribute to it. “Here’s an interesting test case for this API. I want to make sure that it behaves like this.[00:35:50] – Could you write it with any version for JavaScript e.g. TypeScript?A Huge chunk of the team is big TypeScript fans. They’ve done a lot of work to make sure that TypeScript experience is excellence.Type is basically a collection of typing files for TypeScript. There’s a runtime process that parses your TypeScript, gives you feedback on your code, and checks for errors. You can also run it in the background.There’s an add-in called Script Lab. Script Lab is literally, you hit the code button and you get a web IDE right there. You can go start typing JavaScript code, play with API’s, and uses TypeScript by default. It’ll just actually load your code in the browser, executes, and you can start watching.[00:39:25] – Are there any limitations on which JavaScript libraries you can pull in?There a no limitations in place right now. There are partners that use Angular. There are partners that are big React fans. If you’re a web dev, you can bring whatever preferences around frameworks, around tools, around TypeScript versus JavaScript.[00:45:20] – What’s the craziest thing you’ve seen done with this API?Battleship was pretty cool. There’s also Star Wars entering credits theme for PowerPoint.[00:46:40] – If a developer is building a plug-in and get paid for it, does Microsoft take credit for that?There are 2 ways that folks can do it. You can do paid add-ins to the store. Either you do the standard perpetual 99 cents or you can do subscriptions, where it’s $2.99/month. Tristan encourages that model because integrations are just a piece of some larger piece of software.But Microsoft is not in the business of trying to get you to pay me a little bit of 10 cents a dollar. It’s really in the business of making sure that you can integrate with Office as quickly as possibly can.When the users go to the store, they can use the same Microsoft account that you use to buy Xbox games or movies in the Xbox, Windows apps in the Windows store.[00:52:00] – The App ModelIf folks are interested in the app model, they should go to dev.office.com to learn more about it because that’s where all the documentation is. Check out our Github. Right there in the open, there’s the spec. Literally, the engineers whoBecome a supporter of this podcast: https://www.spreaker.com/podcast/javascript-jabber--6102064/support.
4 Juli 20171h 7min

JSJ 267 Node 8 with Mikeal Rogers, Arunesh Chandra, and Anna Henningsen
JSJ 267 Node 8 with Mikeal Rogers, Arunesh Chandra, and Anna HenningsenOn today’s episode of JavaScript Jabber we have panelists Joe Eames, AJ O’Neil, Amiee Knight and Charles Max Wood and we are talking about Node 8. To help us we have special guests Mikeal Rodgers, Arunesh Chandra, and Anna Henningsen. It’s going to be a great show. Tune in.[1:56] Is Node 8 just an update or is there more?- More than just an update- Two main points:- Improved https://www.npmjs.com/package/prana support- Native API- Native APIs are helpful for Native Add-ons. For both the consumer and the developer side.- Prior to update these Node Native modules ran in C++ and bound to specific to Node 8 APIs.- Causes these modules to be updated or reconciled every time these modules are rereleased.- Creates burden for module maintainers.- Creates friction in upgrading Node versions in production departments.- If you have a deployment depending on a certain Native module, some of the modules may not get updated in time when updating your Node versions. Keeping people from updating Node.- Creates compatibility issues with Node users not using Node 8- Experimental support for a Native layer in Node 8 to eliminate these issues as much as possible.- Important milestone for the module ecosystem.- You can write extensions for Node in C++ and it decouples V8 so you can use something else on the front.- Modules takes dependency on V8 API specific to a particular version. So if V8 changes your module will be extracted from that.- As a side benefit, you can have another VM to take advantage of that.- Major version upgrades mean updating Native modules and usually some of those modules haven’t updated to the newest version of Node and be complicated.- Deep dependency wise, about 30% depends on a Native module somewhere- In the future, with the Native API, you’ll be able to update Node without breaking modules.[5:51] What kind of work went into this?- Most of the work was in C++- First thing that was done was, they looked at the top dependent Native modules in the ecosystem.- Looked for what kind of V8 exposure they had and cataloged it- Looked at how these APIs and what their purposes were- Looked for a way to extract them so that they are part of Node Core- Created neutral APIs, now part of the Node core.- All C APIs- Also has a C++ wrapper to improves usability of the API.[7:17] What’s an example of what you can do with these APIs?- Native modules allows for tighter integration and better module performance- Specific APIs that you can use in V8 that isn’t available through JavaScript- If you have a C++ variable code and you want to expose a variable into JavaScript, that is V8 API note a Node 8 API- Having it bound directly to the VM was something they wanted for a long time- Google controls V8 and they bind to V8- Created a better relationship with Google starting in IOJS- Also worked with Microsoft with their Node Shocker work.- Same with https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey- https://github.com/mozilla/spidernode is in the works[9:23] Have you guys done any testing for performance?- Some. There is a performance working group.- There is a need to stay on top of V8- V8 team has focused on new language features- Many features have been added over the years- Many didn’t come in optimized- The performance profile has changed with these features- If you’re using new language features, you will see a performance boost- In core, still tracking down code that was specific to the old optimizer and rewriting i to work the new optimizer- https://turboc.codeplex.com/ compiler hasn’t landed yet, but is to come.- Will have a completely different performance profile- In most real world applications it will be faster- Waiting on the release to take a version of V8 to make it easier to upgrade features in the future[11:28] Are the new features picked up from V8 or implemented in Node?- It’s all in V8- Better longterm support- Promises are made better in Node as a platform- Added new method called util.promisify()- Implementation comes from V8- Allows for more optimization for promises in Node core- Promise support for the one-deprecated domains module.[13:02] Is there anything more than NMP 5?- First off, delete your NMP cache.- It’s in your home directory usually with a .npm extension[14:09] What are the new features in V8?- Unlimited heap sizes, previously had a 4gb limit. No fixed limit.[14:09] Will you see things like chakra come out tuned for servers?- Profiles of a server for application process are getting smaller- Getting cut into containers and VMs and micro services- Vms that have cold boot time and run quickly in a strained environment is looking more like what we will see in the future- Yes, especially if you’re using cloud functions- V8 is optimized for phones, but Chakra is even more so- Looking for opportunities for VMs can be solely optimized for a device target- Node take advantage of that VM- VM neutrality is an interesting concept- VM Vendors trying to optimize it based on workloads of a server- Opens opportunities for Node- Node Chakra has been proved to iOS. You can cut off jitting off which was a requirement to be able to be in the Apple App Store- Node is not just for servers anymore- Node doesn’t take a long time configuring it- When a developer runs code on an IoT or a mobile app they don’t control the VM that is bundled, they run it on top of Node and it just works.- VM neutrality gives a new vector, so you can swam a whole different VM[18:44] When running different engines like iOS vs Android, does the profile change?- What it comes down to is if it’s eventive programming- The browser is an eventive environment, is very efficient waiting for things to happen before it does something- The way that we program servers and nodes are the same as well- the basics are the same generally- environmental differences exist but the programming model is usually the same- What does impact it is memory and processor and hardware and things like that- That is where tuning the VM comes into play[20:29] What is the new Async Hooks API used for?- Node has been lacking for automated inspection of Async Hook- No way for Node to tell you when scheduling and beginning of an Async operation. Hook helps with that- it’s a way for developers to write debugging features- Node tells the application that it’s working with Asynchronous way.- The embedded inspector has been embedded since Node 6- Now has a JavaScript API to use it- You can use things like Chrome debugger inside the running node process- Old debugging protocol has been removed- VM.run is still there but in the process of being deprecated[22:34] How like is the experimental Node API will change?- Marked as experimental because it’s the first time in the open- Hopefully out of experimental soon- Soon can port API to the existing LTS- Looking for more people to participate with the new API and give feedback- Fix any concerns before it goes to LTS- Some other experimental things are in the works like ASync Hooks and how it interacts with promises- Renaming some features- Another new feature - serializer and deserializer that comes with V8- experimental but will most likely stay[25:31] what is your standard for going to LTS?- Major releases every 6 months- Next Oct Node 9 will come out and then Node 8 will be LTS- Documentation, updates, additions etc will be ready then- Plan to do it for 2.5 years- Every even releases come out to LTS as the odd release comes out- Helps keeps a current line while having something new in the release line- Node 6 is the current LTS version[27:26] What are you taking out or deprecating in Node 8?- Use the word deprecate sparingly- If many people use features, it’s hard to get rid of- Security issue with Buffer, constructor argument was ambiguous- Had added APIs that were more explicit over time and pushed those- Now it will be deprecated[28:43] 21% - 33% Performance increase with some Node updates- Someone online updated their React app to Node 8 and found an 21% - 33% increase- Benchmarking group tests to make sure things are getting faster- V8 is always getting faster as well- Code changes fast and so there is a chance performance slows down so they have people to check- Benchmark test are all automated by a team[30:47] Is it safe to just switch to Node 8?- For front-end, yes- clear your NPM cache- Back use cases will usually wait until LTS[31:28] Where any of the features hard to implement?- The API work took about a year- It was a collaboration which made it interesting- IBM, Intel, Google were involved- The collaboration took a while- Also Async hooks took at least a year.- Async hooks used to be callBecome a supporter of this podcast: https://www.spreaker.com/podcast/javascript-jabber--6102064/support.
27 Juni 201753min

JSJ 266 NPM 5.0 with Rebecca Turner
On today’s episode of JavaScript Jabber, Charles Max Wood and panelist Joe Eames chat with Rebecca Turner, tech lead for https://www.npmjs.com/, a popular Javascript package manager with the worlds largest software registry. Learn about the newly released NPM 5 including a few of the updated features. Stay tuned![1:58] Was the release of node JS 8 tied to NPM5?- Features in NPM5 have been in planning for 2 years now.- Planned on getting it out earlier this year.- Node 8 was coming out and got pushed out a month.- Putting NPM5 into Node 8 became doable.- Pushed really hard to get NPM5 into https://nodejs.org/en/blog/release/v8.0.0/ so that users would get NPM5 and updates to NPM5.[2:58] Why would it matter? NPM doesn’t care right?- Right you can use NPM5 with any version of node.- Most people don’t update NPM, but upgrade Node.- So releasing them together allowed for when people updated Node they would get NPM 5.[3:29] How does the upgrade process work if you’re using NVM or some node version manager?- Depends. Different approaches for each- NVM gets a fresh copy of Node with new globals. NVM5 and Node 8 are bundled.- For some, If you manually upgrade NVM you’ll always have to manually. It will keep the one you manually upgraded to.[4:16] Why NPM 5?- It’s night and day faster.- 3 to 5 times speed up is not uncommon.- Most package managers are slow.- NPM 5 is still growing. Will get even faster.[5:18] How did you make it faster?- The NPM’s cache is old. It’s very slow. Appalling slow.- Rewrote cache- Saw huge performance gains[5:49] What is the function of the cache?- Cache makes it so you don’t have to reinstall modules from the internet.- It has registry information too.- It will now obey http headers for timing out cache.[6:50] Other things that made it faster?- Had a log file for a long time. It was called https://docs.npmjs.com/cli/shrinkwrap.- NPM 5 makes it default.- Renamed it to packagelog.json- Exactly like shrinkwrap package file seen before- In combo with cache, it makes it really fast.- Stores information about what the tree should look like and it’s general structure.- It doesn’t have to go back and learn versions of packages.[7:50] Can you turn the default Packagelog.json off?- Yes. Just:- Set packagelog=false in the npmrc[8:01] Why make it default? Why wasn’t it default before?- It Didn’t have it before. Shrinkwrap was added as a separate project enfolded in NPM and wasn’t core to the design of NPM.- Most people would now benefit from it. Not many scenarios where you wouldn’t want one.- Teams not using the same tools causes headaches and issues.[9:38] Where does not having a lock show up as a problem?- It records the versions of the packages installed and where NPM put them so that when you clone a project down you will have exactly the same versions across machines.- Collaborators have the exact same version.- Protects from issues after people introduce changes and patch releases.- NPM being faster is just a bonus.- Store the sha512 of the package that was installed in the glock file so that we can verify it when you install. It’s Bit for bit what you had previously.[11:12] Could you solve that by setting the package version as the same version as the .Json file?- No. That will lock down the versions of the modules that you install personally, not the dependancies, or transitive dependancies.- Package log allows you to look into the head of the installer. This is what the install looks like.[12:16] Defaulting the log file speed things up? How?- It doesn’t have to figure out dependences or the tree which makes it faster.- Shrinkwrap command is still there, it renames it to shrinkwrap but shrinkwrap cannot be published.- For application level things or big libraries, using shrinkwrap to lock down versions is popular.[13:42] You’ve Adopted specifications in a ROC process. When did you guys do that?- Did it in January- Have been using them internally for years. Inviting people into the process.- Specifications- Written in the form of “Here is the problem and here are the solutions.”- Spec folder in NPM docs, things being added to that as they specify how things work.- Spec tests have been great.[14:59] The update adds new tools. Will there be new things in registry as well?- Yes.- Information about a package from registry, it returns document that has info about every version and package json data and full readme for every version.- It gets very large.- New API to request smaller version of that document.- Reduces bandwidth, lower download size, makes it substantially faster.- Used to be hashed with sha1, With this update it will be hashed with sha512 as well as sha1 for older clients.[16:20] Will you be stopping support for older versions?- LTS version of NPM was a thing for a while. They stopped doing that.- Two models, people either use whatever version came with Node or they update to the latest.- The NPM team is really small. Hard to maintain old NPM branches.- Supports current versions and that’s pretty much it.- If there are big problems they will fix old versions. Patches , etc.[17:36] Will there ever be problems with that?- Older versions should continue to work. Shouldn’t break any of that.- Can’t upgrade from 0.8.- It does break with different Node version- Does not support Node versions 0.10 or 0.12.[18:47] How do you upgrade to NPM?- sudo npm install -gmpm- Yes, you may not need sudo. depend on what you’re on.[19:07] How long has it been since version 4?- Last October is when it came out.[19:24] Do you already have plans for version 6?- Yes!- More releases than before coming up.- Finally deprecating old features that are only used in a few packages out of the whole registry.- Running tests on getting rid of things.[20:50] Self healing cache. What is it and why do we want it?- Users are sometimes showing up where installs are broken and tarbols are corrupted.- This happens sometimes with complicated containerization setups makes it more likely. It’s unclear where the problem actually is.- https://www.npmjs.com/package/cacache - content addressable cache. Take the hash of your package and use it to look up address to look it up in the cache.- Compares the Tarbol using an address to look it up in the cache.- Compares to see if it’s old. Trashes old and downloads updated one.- Came out with the cache. Free side effect of the new cache.[23:14] New information output as part of the update?- NPM has always gave back you the tree from what you just installed.- Now, trees can be larger and displaying that much information is not useful.- User patch - gives you specifically what you asked for.- Information it shows will be something like: “I installed 50 items, updated 7, deleted 2.”[24:23] Did you personally put that together?- Yes, threw it together and then got feedback from users and went with it.- Often unplanned features will get made and will be thrown out to get feedback.- Another new things ls output now shows you modules that were deduped. Shows logical tree and it’s relationships and what was deduped.[25:27] You came up to node 4 syntax. Why not go to node 8?- To allow people with just node 4 be able to use NPM.- Many projects still run Node 4. Once a project has been deployed, people generally don’t touch it.[26:20] Other new features? What about the File Specifier?- File specifier is new. File paths can be in package json, usually put inside pointing to something inside your package.- It will copy from there to your node modules.- Just a node module symlink.- Much faster. Verifiable that what’s in your node modules matches the source. If it’s pointing at the right place it’s correct. If not, then it’s not.- Earlier, sometimes it was hard to tell.[27:38] Anything else as part of the NPM 5 release? Who do you think will be most affected by it?- For the most part, people notice three things:- 1st. no giant tree at the end- 2nd. Much faster- 3rd. Package lock.[28:14] If it’s locked, how do you update it?- Run npm installer and then npm update- Used to be scary, but works well now.- Updates to latest semver, matches semver to package json to all node modules.- Updates package lock at the same time- Summary in Git shows what’s changed.[28:59] Did Yarn come into play with your decisions with this release?- The plans have been in play for a long time for this update.- https://yarnpkg.com/en/ inclusion of similar features and the feedback was an indicator that some of the features were valuable.[29:53] Other plans to incorporate features similar to yarn?- Features are already pretty close.- There are other alternative package managers out there.- PMPM interesting because when it installs it doesn’t copy all the files. It cBecome a supporter of this podcast: https://www.spreaker.com/podcast/javascript-jabber--6102064/support.
20 Juni 201741min

JSJ 265 Wade Anderson and Ramya Rao on Visual Studio Code
JSJ 265 Wade Anderson and Ramya Rao on Visual Studio CodeThis episode is live at the Microsoft Build 2017 with Charles Max Wood and AJ O’Neal. We have Wade Anderson and Ramya Rao from the Visual Studio Code Team at Microsoft. Tune in and learn more about what’s new with Visual Studio Code![00:01:20] – Introduction to Ramya Rao and Wade AndersonRamya Rao and Wade Anderson are in the Visual Studio Code Team at Microsoft.Questions for Wade and Ramya[00:02:00] – Elevator Pitch for Visual Studio CodeOur vision on Visual Studio Code is to take what was best out of the IDE world (Visual Studio, Eclipse, IntelliJ, etc.) and bring what was best from the lightweight editor world (Sublime Text, Notepad++, Atom) and merge those two together. We wanted the lightweight features from text editors and the debugging capabilities of Visual Studio and Eclipse. We did general availability last year. We’ve been stable for a year. Additionally, this is Visual Studio Code for Mac, Windows, or Linux. It’s also built in Electron.[00:03:45] – What are your roles on the team? Do you have particular parts that each of you work on?Wade’s title is a Program Manager. He does more non-developer things but Ramya is an engineer on the team so she gets a lot more coding that Wade does. Everybody has a key area to own but nothing stops them to go into another area. We try to share knowledge between people but we always have that one key owner that you always go to.Ramya is a recent addition to the team. She started out maintaining the Go extension, maintaining and adding features. She’s slowly branching out to the Emmet features of the product.[00:05:30] What is Emmet?Emmet, or Zen Coding, is a must-have tool for you. You can write, say abbreviations and that expands to really huge HTML to update tags, rename tags, etc. That is one of the features of Emmet and Sergey actually wrote the library. We have an in built integration in the product. I [Ramya] am currently working on that.[00:06:28] Does Visual Studio Code make it easy to go to the parts that I need to customize on an HTML?In that case, we have a multi-cursor software in Visual Studio Code, as well. You could place your cursor in different positions, and then, simultaneously edit things.[00:07:42] Is Emmet an extension or does it come with Visual Studio Code?Right now, it’s in Built. If you want to know more about Emmet features, you can to emmet.io. That has all the documentation that you need to learn about Emmet features. In Visual Studio Code right now, we’re looking at making into an extension. We pull it out of the main code and maybe more people can contribute and make it even more better.[00:08:21] – What’s new in Visual Studio Code?One of our main pillars for this year is to improve performance of the product. We’ve grown a larger team so we’re adding a lot more features every month. Last few months has been, “How can we get some stability on the issues coming in while making sure we’re reducing our tech load?” We really keep to those core principles that we started with at the beginning, which was, we want a fast, lightweight editor.We built a few extensions that we call key map extensions. They are just a mapping of key bindings that you learned in Sublime Text. You don’t have to re-learn any key bindings in Visual Studio Code.We also build this Welcome page where you can flip through and see features really briefly. In that Welcome page, one of the key things is an interactive playground where you can play with existing code in different sections. Additionally, as we’ve mentioned, we also put multi-cursor features.Another thing is workbench naming. You can change the theme of Visual Studio Code but it will be restricted to the editor and not the rest of the workbench.[00:13:40] – Do you know how Xterm.js works as it was one of the features that you’ve added in Visual Studio Code?Daniel’s another engineer that’s here with us today. He was the largest contributor to the Xterm.js project. He built the integrated terminal for Visual Studio code so I can’t speak to the internals of how that works.[00:14:12] – Are we going to start seeing Visual Studio Code integrated into web experiences with other Microsoft products?That’s actually where we started. We were Monaco editor where you get this cloud-based editing experience. We’re getting people to use it but we’re only getting people who were already using Microsoft products. When electron came out, we saw an opportunity of, “Hey, can we port this Monaco editor to Electron and we could then, run it on Mac and Linux.”[00:19:45] – What are the performance things that you’ve done?One thing that we did recently was adding an ability to calculate the start time for Visual Studio Code? That’s one of our full steps to get more information from the user-side. How can you get a profile of what things are running? Which part of the process took much time?We also need to identify what are the things people are doing that’s causing the editor slow down. An example is when you open a large file and things get laggy.Another exercise we did was we looked at all of our extension API’s to see which one of those could be a malicious extension.The difference between VS Code and Atom is that, we ask questions like, “Are we using good data structures? Are we managing our memory properly? Are we removing stuff we don’t need anymore?” That just comes down to all those little things you learn from basic textbooks that have been around for decades about how to write good code. That’s what we have been doing and that’s what we’ll continue to try to do, to try and improve the performance.[00:25:55] – Do you have problem on the desktop? Are all the modules just load at once?We definitely don’t load everything at once. Different parts of the editor is loaded differently. When you do the Require, we don’t do it at first load. We do it when we notice that the user wants to use Emmet. We don’t try to load all the library at the beginning and delay the whole process.We try to lazy load as much as possible, even the extensions. We have a separate process called extension host that takes care of loading all the extensions. Whether the extensions are completed loading or not, that does not stop you from typing in a file. Simple actions shouldn’t be bugged down by fancy actions.[00:28:25] – What’s coming next for Visual Studio Code?Every month, when we plan our iteration, we create iteration draft plan. We put it out there for people to see. Performance and helping people get started are probably the top two for us. You can look at github.com/Microsoft/vscode, look for the label ‘iteration plan draft.’ So that’s the current work that we’re doing that month.Another feature is the multi-root workspace where you can open multiple folders. When you look at the issues and sort by most comments, multi-root is the number one. The second one that is little paper cuts around formatting and auto-intending – just things that make your code prettier.PicksAJ O’nealBreath on the WildMicrosoft’s Intelligent EdgeCharles Max WoodBoom BeachBluetick.ioEmacs key binding extension for Visual Studio CodeWade AndersonKindle Paperwhite Twitter @waderyan_Ramya RaoOpen sourceTwitter @ramyanexusSpecial Guests: Ramya Rao and Wade Anderson. Support this podcast at — https://redcircle.com/javascript-jabber/donationsPrivacy & Opt-Out: https://redcircle.com/privacyBecome a supporter of this podcast: https://www.spreaker.com/podcast/javascript-jabber--6102064/support.
13 Juni 201747min

JSJ 264 Mendel with Irae Carvalho
Support this podcast at — https://redcircle.com/javascript-jabber/donationsPrivacy & Opt-Out: https://redcircle.com/privacyBecome a supporter of this podcast: https://www.spreaker.com/podcast/javascript-jabber--6102064/support.
9 Juni 201720min

JSJ 263 Moving from Node.js to .NET and Raygun.io with John-Daniel Trask
This episode features Moving from Node.js to .NET and Raygun.io with John-Daniel Trask. John-Daniel is the Co-founder and CEO of Raygun, a software intelligence platform for web and mobile. He's been programming for many years, and is originally from New Zealand. Tune in and learn what prompted them to move to the .NET framework!Special Guest: John-Daniel Trask. Support this podcast at — https://redcircle.com/javascript-jabber/donationsPrivacy & Opt-Out: https://redcircle.com/privacyBecome a supporter of this podcast: https://www.spreaker.com/podcast/javascript-jabber--6102064/support.
23 Maj 201745min

JSJ 262 Mozilla Firefox Developer Tools with Jason Laster
Join AJ, Aimee, and Joe as they discuss Mozilla Firefox Developer Tools with Jason Laster. Jason just started working at Mozilla since March. But even before that, he has been working on Chrome's dev tool extension called Marionette. That's when he discovered that the browser is an open source that anyone can play with. Now, he is working on a new debugger in Firefox. Tune in!Special Guest: Jason Laster. Support this podcast at — https://redcircle.com/javascript-jabber/donationsPrivacy & Opt-Out: https://redcircle.com/privacyBecome a supporter of this podcast: https://www.spreaker.com/podcast/javascript-jabber--6102064/support.
16 Maj 201736min

JSJ 261 HTTP 2 with Surma
On today's episode, Charles, Aimee, and Cory discuss HTTP 2 with Surma. Alongside being part of the Chrome DevRel Team for Google, Surma works on different web app performance. He is also engaged in HTTP 2, interaction, UX, and spec work. Stay tuned to discover what HTTP 2 can do for you!Special Guest: Surma. Support this podcast at — https://redcircle.com/javascript-jabber/donationsPrivacy & Opt-Out: https://redcircle.com/privacyBecome a supporter of this podcast: https://www.spreaker.com/podcast/javascript-jabber--6102064/support.
9 Maj 20171h 2min