Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon

Tech News - Programming

573 Articles
article-image-how-oracle-v-google-could-upend-software-development-from-infoworld-java
Matthew Emerick
07 Oct 2020
1 min read
Save for later

How Oracle v. Google could upend software development from InfoWorld Java

Matthew Emerick
07 Oct 2020
1 min read
Oracle v. Google has been winding its way through courts for a decade. You’ve probably already heard that the high-profile legal case could transform software engineering as we know it — but since nothing ever seems to happen, it’s forgivable if you’ve made a habit of tuning out the news. It might be time to tune back in. The latest iteration of the case will be heard by the U.S. Supreme Court in the 2020-2021 season, which began this week (after being pushed back due to coronavirus concerns). The decision of the highest court in the land can’t be overturned and is unlikely to be reversed, so unlike previous decisions at the district and circuit court level, it would stick for good. And while the case is being heard in the U.S., the decision would impact the entire global tech industry. To read this article in full, please click here
Read more
  • 0
  • 0
  • 1141

article-image-game-development-with-net-from-net-blog
Matthew Emerick
06 Oct 2020
5 min read
Save for later

Game Development with .NET from .NET Blog

Matthew Emerick
06 Oct 2020
5 min read
We’ve launched a new Game Development with .NET section on our site. It’s designed for current .NET developers to explore all the choices available to them when developing games. It’s also designed for new developers trying to learn how to use .NET by making games. We’ve also launched a new game development Learn portal for .NET filled with tutorials, videos, and documentation provided by Microsoft and others in the .NET game development community. Finally, we launched a step-by-step Unity get-started tutorial that will get you started with Unity and writing C# scripts for it in no time. We are excited to show you what .NET has to offer to you when making games. .NET is also part of Microsoft Game Stack, a comprehensive suite of tools and services just for game development. .NET for game developers .NET is cross-platform. With .NET you can target over 25+ different platforms with a single code base. You can make games for, but not limited to, Windows, macOS, Linux, Android, iOS, Xbox, PlayStation, Nintendo, and mixed reality devices. C# is the most popular programming language in game development. The wider .NET community is also big. There is no lack of expertise and support you can find from individuals and user groups, locally or online. .NET does not just cover building your game. You can also use it to build your game’s website with ASP.NET, your mobile app using Xamarin, and even do remote rendering with Microsoft Azure. Your skills will transfer across the entire game development pipeline. Available game engines The first step to developing games in .NET is to choose a game engine. You can think of engines as the frameworks and tools you use for developing your game. There are many game engines that use .NET and they differ widely. Some of the engines are commercial and some are completely royalty free and open source. I am excited to see some of them planning to adopt .NET 5 soon. Just choose the engine that better works for you and your game. Would you like to read a blog post to help you learn about .NET game engines, and which one would be best for you? Online services for your game If you’re building your game with .NET, then you have many choices on how to build your online game services. You can use ready-to-use services like Microsoft Azure PlayFab. You can also build from scratch on Microsoft Azure. .NET also runs on multiple operating systems, clouds, and services, it doesn’t limit you to use Microsoft’s platforms. .NET has a rich set of tools All the .NET tools you are used to also work when making games. Visual Studio is a great IDE that works with all .NET game engines on Windows and macOS. It provides word-class debugging, AI-assisted code completion, code refactoring, and cleanup. In addition, it provides real-time collaboration and productivity tools for remote work. GitHub also provides all your DevOps needs. Host and review code, manage projects, and build software alongside 50 million developers with GitHub. The ecosystem The .NET game development ecosystem is rich. Some of the .NET game engines depend on foundational work done by the open-source community to create managed graphics APIs like SharpDX, SharpVulkan, Vulkan.NET, and Veldrid. Xamarin also enables using platform native features on iOS and Android. Beyond the .NET community, each game engine also has their own community and user groups you can join and interact with. .NET is an open-source platform with over 60,000+ contributors. It’s free and a solid stable base for all your current and future game development needs. Learn more and start developing Head to our new Game Development with .NET site to get an overview of what .NET provides for you when making games. If you never used Unity, get started with our step-by-step Unity get-started tutorial and script with C# as quick as possible. If you’re looking for tutorials, videos, and documentations to get your started, head to our new game development Learn portal for .NET for more resources. Show us the work you do for .NET game development We’d love to see the work you do for the .NET game developer. Please reach out to us if you’d like us to talk about the games you’re making, the APIs you’re developing, the plug-ins you’re distributing, or any .NET project remotely related to game development. Did you write a great blog post, or just read one? Do you want everyone to know about an amazing new .NET game development contribution or a useful plug-in or tool? Do you have an analysis of game development pipeline using .NET? We’d love to hear from you, and feature your contributions on future posts: Leave us a message in the comments section below Send Abdullah (@indiesaudi) tips on Twitter about .NET game development. The post Game Development with .NET appeared first on .NET Blog.
Read more
  • 0
  • 0
  • 1413

article-image-python-3-9-0-is-now-available-and-you-can-already-test-3-10-0a1-from-python-insider
Matthew Emerick
05 Oct 2020
2 min read
Save for later

Python 3.9.0 is now available, and you can already test 3.10.0a1! from Python Insider

Matthew Emerick
05 Oct 2020
2 min read
On behalf of the Python development community and the Python 3.9 release team, I’m pleased to announce the availability of Python 3.9.0. Python 3.9.0 is the newest feature release of the Python language, and it contains many new features and optimizations. You can find Python 3.9.0 here: https://www.python.org/downloads/release/python-390/ Most third-party distributors of Python should be making 3.9.0 packages available soon. See the “What’s New in Python 3.9” document for more information about features included in the 3.9 series. Detailed information about all changes made in 3.9.0 can be found in its change log. Maintenance releases for the 3.9 series will follow at regular bi-monthly intervals starting in late November of 2020. OK, boring! Where is Python 4? Not so fast! The next release after 3.9 will be 3.10. It will be an incremental improvement over 3.9, just as 3.9 was over 3.8, and so on. In fact, our newest Release Manager, Pablo Galindo Salgado, prepared the first alpha release of what will become 3.10.0 a year from now. You can check it out here: https://www.python.org/downloads/release/python-3100a1/ We hope you enjoy the new releases! Thanks to all of the many volunteers who help make Python Development and these releases possible! Please consider supporting our efforts by volunteering yourself or through organization contributions to the Python Software Foundation. https://www.python.org/psf/ More resources Online Documentation PEP 596, 3.9 Release Schedule PEP 619, 3.10 Release Schedule Report bugs at https://bugs.python.org. Help fund Python and its community. Your friendly release team, Ned Deily @nad Steve Dower @steve.dower Pablo Galindo Salgado @pablogsal Łukasz Langa @ambv  
Read more
  • 0
  • 0
  • 1972

article-image-python-3-5-is-no-longer-supported-from-python-insider
Matthew Emerick
02 Oct 2020
1 min read
Save for later

Python 3.5 is no longer supported from Python Insider

Matthew Emerick
02 Oct 2020
1 min read
Python 3.5 is no longer supported.  There will be no more bug fixes or security patches for the 3.5 series, and Python 3.5.10 is the last release.  The Python core development community recommends that all remaining Python 3.5 users should upgrade to the latest version.
Read more
  • 0
  • 0
  • 1378

article-image-net-framework-october-1-2020-cumulative-update-preview-update-for-windows-10-version-2004-and-windows-server-version-2004-from-net-blog
Matthew Emerick
01 Oct 2020
3 min read
Save for later

.NET Framework October 1, 2020 Cumulative Update Preview Update for Windows 10, version 2004 and Windows Server, version 2004 from .NET Blog

Matthew Emerick
01 Oct 2020
3 min read
Today, we are releasing the September 2020 Cumulative Update Preview Updates for .NET Framework. Quality and Reliability This release contains the following quality and reliability improvements. ASP.NET Disabled resuse of AppPathModifier in ASP.Net control output. HttpCookie objects in the ASP.Net request context will be created with configured defaults for cookie flags instead instead of .Net.NET-style primitive defaults to match the behavior of `new HttpCookie(name)`. CLR1 Added a CLR config variable Thread_AssignCpuGroups (1 by default) that can be set to 0 to disable automatic CPU group assignment done by the CLR for new threads created by Thread.Start() and thread pool threads, such that an app may do its own thread-spreading. Addressed a rare data corruption that can occur when using new API’s such as Unsafe.ByteOffset which are often used with the new Span types. The corruption could occur when a GC operation is performed while a thread is calling Unsafe.ByteOffset from inside of a loop. Addressed an issue regarding timers with very long due times ticking down much sooner than expected when the AppContext switch “Switch.System.Threading.UseNetCoreTimer” is enabled. SQL Addressed a failure that sometimes occured when a user connected to one Azure SQL database, performed an enclave based operation, and then connected to another database under the same server that has the same Attestation URL and performed an enclave operation on the second server. WCF2 Addressed an issue with WCF services sometimes failing to start when starting multiple services concurrently. Windows Forms Addressed a regression introduced in .NET Framework 4.8, where Control.AccessibleName, Control.AccessibleRole, and Control.AccessibleDescription properties stopped working for the following controls:Label,GroupBox,ToolStrip,ToolStripItems,StatusStrip,StatusStripItems,PropertyGrid,ProgressBar,ComboBox,MenuStrip,MenuItems,DataGridView. Addressed a regression in accessible name for combo box items for data bound combo boxes. .NET Framework 4.8 RTM started using type name instead of the value of the DisplayMember property as an accessible name, this fiximprovement uses the DisplayMember again. 1 Common Language Runtime (CLR) 2 Windows Communication Foundation (WCF) Getting the Update The Cumulative Update Preview is available via Windows Update and Microsoft Update Catalog. Microsoft Update Catalog You can get the update via the Microsoft Update Catalog. For Windows 10, NET Framework 4.8 updates are available via Windows Update and Microsoft Update Catalog. Updates for other versions of .NET Framework are part of the Windows 10 Monthly Cumulative Update. **Note**: Customers that rely on Windows Update will automatically receive the .NET Framework version-specific updates. Advanced system administrators can also take use of the below direct Microsoft Update Catalog download links to .NET Framework-specific updates. Before applying these updates, please ensure that you carefully review the .NET Framework version applicability, to ensure that you only install updates on systems where they apply. The following table is for Windows 10 and Windows Server 2016+ versions. Product Version Cumulative Update Windows 10 2004 and Windows Server, version 2004 .NET Framework 3.5, 4.8 Catalog 4576945   Previous Cumulative Updates The last few .NET Framework updates are listed below for your convenience: .NET Framework September 2020 Security and Quality Rollup Updates .NET Framework September 3, 2020 Cumulative Update Preview for Windows 10 2004 and Windows Server, version 2004 .NET Framework August 2020 Cumulative Update Preview .NET Framework August 2020 Security and Quality Rollup Updates The post .NET Framework October 1, 2020 Cumulative Update Preview Update for Windows 10, version 2004 and Windows Server, version 2004 appeared first on .NET Blog.
Read more
  • 0
  • 0
  • 811

article-image-net-interactive-preview-3-vs-code-insiders-and-net-polyglot-notebooks-from-net-blog
Matthew Emerick
30 Sep 2020
6 min read
Save for later

.NET Interactive Preview 3: VS Code Insiders and .NET Polyglot Notebooks from .NET Blog

Matthew Emerick
30 Sep 2020
6 min read
In .NET Interactive Preview 2, we announced that in addition to Jupyter Notebook and Jupyter Lab, users could use nteract as well. In this preview, users can add VS Code Insiders to that list. With the VS Code Insiders experience, users can get started with .NET notebooks without needing to install Jupyter. The VS Code experience is still a work in progress, and is only available in VS Code Insiders. We look forward to your feedback. Getting started To get started with .NET notebooks, please install the following: The latest version of VS Code Insiders. The latest .NET Core 3.1 SDK. The .NET Interactive Notebooks extension. Creating a new .NET notebook Once you have the requirements listed above installed, you are ready to start creating .NET Notebooks in VS Code Insiders. To create a new notebook, open the Command Palette(Ctrl+Shift+P), and select Create new blank notebook. You can also create a new notebook with Ctrl+Shift+Alt+N key combination. Every notebook has a default language. A new blank notebook starts with a C# cell, as noted in the lower right corner of the cell. If you click on C# (.NET Interactive), you can change the language of the cell. If you change the language of the cell, the next cell you create will continue with that language. To add a cell, hover above or below an existing cell. Buttons appear allowing you to specify the type of cell to add, +Code or +Markdown. If you select +Code, you can change the language afterward. Opening an existing .NET notebook To open an existing .NET notebook, bring up the Command Palette and select Open notebook. Now, navigate to a local .ipynb file. With .NET notebooks in VS Code, you can take advantage of rich coding experiences like IntelliSense, and you can use all of your favorite VS Code extensions. Polyglot Notebooks: Variable Sharing .NET Interactive is a multi-language kernel that allows you to create notebooks that use different languages together. You switch languages from one cell to another, as appropriate to the task at hand. Pulling values into the notebook and moving values between languages are useful capabilities, which we’ve enabled with a pair of magic commands: #!share and #!value. #!share .NET Interactive provides subkernels for three languages (C#, F#, and PowerShell) within the same process. You can share variables between the .NET subkernels using the #!share magic command. Once a variable has been declared in one of these subkernels, it can be accessed from another. And because these kernels run in the same process, if the type of a variable is a reference type, changes to its state can be observed immediately from other kernels. Example: In this GIF, I’ve declared a C# variable csharpVariable in one cell, which I then share with F# using #!share --from csharp csharpVariable. #!value Importing text into a notebook, whether from the clipboard or a JSON or CSV file or a URL, is a fairly common scenario. The #!value magic command makes it easier to get text into your notebook without having to explicitly declare a string variable and worry about correctly escaping it. When you execute a cell using #!value, the content is stored in memory. (It will also be stored in your .ipynb output, and displayed, if you use the --mime-type switch.) So how do you access the value once it’s stored? The #!value magic command actually refers to another subkernel. In the GIF above, you can see it in the IntelliSense list that’s shown when #!share is typed. Once a value has been stored using #!value, you can share it with another subkernel just like you can from C#, F#, or PowerShell. There are a few ways to use #!value to store data in a notebook session. The example below shows you how to do it from the clipboard. For examples of other ways to use it, including reading from files and URLs, please check out Direct data entry with #!value. Sharing kernel values with JavaScript .NET Interactives has APIs available that simplify the process of directly writing HTML and JavaScript in the same notebook where you write .NET code. This enables you to create custom visualizations and access the broader ecosystem of JavaScript libraries without needing .NET wrappers. In the example below, we are sharing code from the .NET kernel using JavaScript and using it to render HTML, all in a single notebook. First, I build a collection of items in C# representing fruits with prices and quantities. Next, since .NET Interactive is polyglot, I can switch to JavaScript. (While the VS Code experience has a language chooser, you can also switch languages using magic commands like #!javascript, so that you can use these features in Jupyter as well). In the JavaScript cell, I load the D3.js visualization library and when it’s loaded, I access the fruits variable from the C# kernel using interactive.csharp.getVariable("fruits"). This interactive object has properties corresponding to each of the .NET Interactive subkernels. The variable from the subkernel is serialized into JSON and then deserialized into a JavaScript object (basket) that I’ll use to render my bar chart with D3.js. Final step: Let’s render the results. We are now going to use HTML to render our chart and JavaScript to call our function. The HTML has to be rendered first because that’s where the JavaScript will build the visualization. But we don’t have to put them in separate cells. Using magic commands, we can switch languages within the same cell so that the output renders at the bottom of the notebook. #!html <svg id = "fruit_display" width = "100%"></svg> #!js renderfruits("svg#fruit_display"); And there you have it! A simple demonstration on how you can leverage .NET Interactive polyglot notebooks. To learn more about variable sharing, sub-kernels, and HTML and JavaScript in .NET Interactive, please check out the linked documentation. Documentation We are also happy to share some progress on .NET Interactive documentation. You can now learn more about .NET Interactive’s architecture, variable sharing, visualization, and other features. The documentation is still a work progress, so we look forward to hearing from you. Resources Documentation Samples Source code .NET Interactive Notebooks Extension Happy interactive programming! The post .NET Interactive Preview 3: VS Code Insiders and .NET Polyglot Notebooks appeared first on .NET Blog.
Read more
  • 0
  • 0
  • 1345
Unlock access to the largest independent learning library in Tech for FREE!
Get unlimited access to 7500+ expert-authored eBooks and video courses covering every tech area you can think of.
Renews at $19.99/month. Cancel anytime
article-image-python-3-8-6-is-now-available-from-python-insider
Matthew Emerick
24 Sep 2020
1 min read
Save for later

Python 3.8.6 is now available from Python Insider

Matthew Emerick
24 Sep 2020
1 min read
Python 3.8.6 is the sixth maintenance release of Python 3.8. Go get it here: https://www.python.org/downloads/release/python-386/   Maintenance releases for the 3.8 series will continue at regular bi-monthly intervals, with 3.8.7 planned for mid-November 2020. What’s new? The Python 3.8 series is the newest feature release of the Python language, and it contains many new features and optimizations. See the “What’s New in Python 3.8” document for more information about features included in the 3.8 series. Python 3.8 is becoming more stable. Our bugfix releases are becoming smaller as we progress. This one contains 122 changes, less than two thirds of the previous average for a new release. Detailed information about all changes made in version 3.8.6 specifically can be found in its change log. Note that compared to 3.8.5 this release also contains all changes present in 3.8.6rc1. We hope you enjoy Python 3.8! Thanks to all of the many volunteers who help make Python Development and these releases possible! Please consider supporting our efforts by volunteering yourself or through organization contributions to the Python Software Foundation. Your friendly release team, Ned Deily @nad Steve Dower @steve.dower Łukasz Langa @ambv
Read more
  • 0
  • 0
  • 1123

article-image-microsoft-r-open-4-0-2-now-available-from-revolutions
Matthew Emerick
23 Sep 2020
1 min read
Save for later

Microsoft R Open 4.0.2 now available from Revolutions

Matthew Emerick
23 Sep 2020
1 min read
Microsoft R Open 4.0.2 has been released, combining the latest R language engine with multi-processor performance and tools for managing R packages reproducibly. You can download Microsoft R Open 4.0.2 for Windows,and Linux from MRAN now. Microsoft R Open is 100% compatible with all R version 4 scripts and packages, and works with all your favorite R interfaces and development environments. This update brings R version 4 to Microsoft R Open for the first time. This update includes many new features for the R language and system, along with improved performance and memory usage. Note that you will need to install any R packages you wish to use with MRO 4.0.2. By default, MRO installs packages from a static CRAN snapshot taken on July 16 2020. We hope you find Microsoft R Open useful, and if you have any comments or questions please visit the Microsoft R Open forum. You can follow the development of Microsoft R Open at the MRO GitHub repository. To download Microsoft R Open, simply follow the link below. MRAN: Download Microsoft R Open
Read more
  • 0
  • 0
  • 1338

article-image-how-we-debug-feathers-apis-using-postman-from-dailyjs-medium
Matthew Emerick
22 Sep 2020
5 min read
Save for later

How we debug Feathers APIs using Postman from DailyJS - Medium

Matthew Emerick
22 Sep 2020
5 min read
Photo by Alexander Sinn on Unsplash At Aquil.io, developing APIs and collaborating with clients walk hand in hand. Communication is essential in any consulting environment, and explaining information about a Feathers service is most effectively done with executable code, close to the metal. To control a test and increase the reliability of the result, it is important to remove as many moving parts as possible. We leverage this philosophy in all parts of our workflow. Postman is a tool that allows us to create predictable and consistent requests against APIs. It is a tool we regularly use in debugging APIs. To aid in collaboration with client development teams, we create a repository of requests in Postman, allowing us to then export and share requests in various formats, such as curl. For this article’s purposes, we assume a Feathers API is being developed. When looking to test or debug with Postman, be sure to configure the Feathers REST transport. Postman does not currently work with WebSockets. However, RESTful and WebSocket requests execute the same hooks and service methods due to the Feathers transport abstractions. Create the workspace Though requests can be created in the default workspace, in practice, this can become an unmaintainable list quickly. We create a workspace to group requests by project. Personal workspaces can always be converted to team workspaces later. There is an in-depth article on workspaces on the official Postman blog. Leveraging variables and environments APIs we develop fall into a few environments, depending on the project. Commonly, this is categorized as local, staging, and production. We run requests against different environments using the environment switcher. Within our requests, we use variables defined at the environment level and updated based on the environment we select. In most scenarios we use two variables, host and token. The request, in most cases, will require authentication. There are several options that authenticate a request with the service. The chosen authorization will modify the request with the appropriate headers or preflight calls. We use the Bearer Token option and apply the token for the request. We create a new environment in Postman named after the environment itself. We add a host variable and an authentication token variable, naming it token. We create environment representations and define the appropriate variables. Create collections and requests To us, collections are synonymous with Feathers resources. Treating a collection as a representation of a resource allows for an intuitive grouping of requests. We create a collection named after the Feathers resource. We select Bearer Token on the Authorization tab and apply the token variable to the Token field. We create a request within the appropriate collection, using the environment variables to build the final request. Each request we create uses the host token from the chosen environment and, for authentication, we select Inherit auth from parent. This will carry over settings for authorization from the parent collection. A request setup in this way allows us to run a request on any environment by changing the environment and sending the request. Naming the request is valuable for communicating intent. We consider the verb in our naming convention so it reads like plain English. Feathers closely ties service objects to HTTP verbs. This connection makes the title valuable in identifying and finding a request within a list of requests. Feathers conventions such as: becomes: Sharing requests When our team needs to collaborate on an endpoint, such as for debugging, Postman can easily export a curl request. A curl request is a simple and easily shared representation of the request. We prefer curl requests over alternatives such as sharing UI walkthroughs. Browser configuration, like caching or plugins, might interfere with the request. A UI application will accept a request’s response and derive an interface based on the data. The interface is not a one-to-one relation to the data. Collaborating around a curl request removes variability. Conclusion It is important to note that using Postman does not replace the need for tests. We borrow much of our testing philosophy from the testing pyramid and use Postman in tandem to accelerate our development process. Requests in Postman will execute hooks, middleware, service objects, and data stores. Postman effectively acts as an ad hoc integration test. At Aquil.io, we implement a deterministic strategy for processes. We look for efficient and straightforward solutions. When we integrate a tool into our workflow, we expect the tool to complement our strategy and improve productivity. Additionally, communication is a vital part of our strategy. Postman enables short feedback loops and communicates dense information succinctly making it an essential tool to our development process. Originally published at https://aquil.io on September 16, 2020. If you want to check out what I’m working on or have web development needs, visit Aquil.io. How we debug Feathers APIs using Postman was originally published in DailyJS on Medium, where people are continuing the conversation by highlighting and responding to this story.
Read more
  • 0
  • 0
  • 1220

article-image-angular-thoughts-on-docs-from-angular-blog-medium
Matthew Emerick
18 Sep 2020
5 min read
Save for later

Angular Thoughts on Docs from Angular Blog - Medium

Matthew Emerick
18 Sep 2020
5 min read
Photo by Patrick Tomasso on Unsplash If you have visited the docs at angular.io lately, you might have noticed some changes in our content layout and structure. As the lead technical writer for Angular, I thought I’d take a moment to cover some of the main goals we have for making the Angular documentation experience the best experience possible. Focus on developers new to Angular A common pitfall for many documentation sets is that they address too many audiences at once. This practice results in content that is verbose, difficult to navigate, and frustrating to read. For Angular, it’s important that we focus on a single audience at a time, because we want to make sure to tell the right stories clearly and concisely. Right now, that means our documentation efforts focus on developers new to Angular. Since I joined the Angular team, I’ve heard a recurring theme: “Angular has a steep learning curve.” “The Angular documentation is overwhelming.” As someone new to Angular, I find myself agreeing with these sentiments. That’s why, for the next several months, we’re focusing on making the getting started experience the best experience possible. Some of the changes we’re making include: Revamping the table of contents (the lists of topics in the left navigation) to help users understand what main concepts of Angular they should understand, and what topics can wait until they want to expand their applications further. Categorizing topics into three topic types: Concepts, Tasks, and Tutorials. It’s important for any reader — whether they are new to Angular or not! — to know what kind of content they’re reading and whether it’s what they’re looking for. No one likes looking for how to get something done only to find themselves 3 paragraphs into a tutorial. Streamlining existing content. When I write, I imagine that I’m tutoring a friend who has a plane to catch in 5 minutes. This image helps me focus on content that is casual in tone, but also concise and to the point. Applying this idea to Angular documentation will help users find the information they need and get back to code. Help users get things done Developers need documentation for a lot of different reasons. Sometimes you need a basic walkthrough of the technology. Other times, you need a real-world tutorial that addresses a problem that you’re facing. Like focusing on a specific audience, a good documentation set focuses on one of these reasons at a time. For Angular, we’re focused on writing content that helps users get things done. When you navigate to the Angular documentation, we want you to find the information you need to complete a task or understand a feature, and then we want you to be able to get back to writing great code. To accomplish this goal, we’re going through all of the topics to make sure they clearly state what they cover and why that’s important. You should know right away if you’re reading the content you need. And if you’re not? We’re working on providing links to other topics that might be more helpful. Of course, there’s always a place for more conceptual content. And there’s a lot of great value in developing a deep understanding of how something works. I’m sure we’ll focus on improving our conceptual content at some point in the future. For the time being, however, we want to make sure that you can find the help you need quickly and easily. Improve, but don’t break As we mentioned earlier, many within the Angular community find the current documentation overwhelming. At the same time, we’ve also heard that the documentation remains one of the best places to learn how to build with Angular. That’s why one of the other key goals that we’re focusing on is to improve the documentation without breaking it. As we write new content or improve existing content, we try to make sure that the existing documentation remains intact. There are always going to be times where we might fall short on this goal. When that happens, please let us know by filing a GitHub issue so we can investigate. Conclusion We think that focusing on new Angular developers, writing content that helps you get things done, and making sure we improve the documentation without breaking it, will result in a better documentation experience for everyone. Of course, this is just the beginning. For example, as we wrap up content for new developers, we’ll start looking at other audiences, such as those of you working on enterprise-level applications. I can’t express how grateful I am to work on a product that has such a passionate, supportive community, and I look forward to working with all of you to make the Angular documentation the best experience possible. In the meantime, continue to check out the docs and don’t hesitate to let us know what you think! Angular Thoughts on Docs was originally published in Angular Blog on Medium, where people are continuing the conversation by highlighting and responding to this story.
Read more
  • 0
  • 0
  • 2027
article-image-an-introduction-to-testing-in-javascript-from-dailyjs-medium
Matthew Emerick
17 Sep 2020
1 min read
Save for later

An Introduction to testing in Javascript from DailyJS - Medium

Matthew Emerick
17 Sep 2020
1 min read
Today, we are going to discuss testing in Javascript and help you in starting your journey towards understanding and mastering it. Continue reading on DailyJS »
Read more
  • 0
  • 0
  • 1111

article-image-python-3-9-0rc2-is-now-available-for-testing-from-python-insider
Matthew Emerick
17 Sep 2020
2 min read
Save for later

Python 3.9.0rc2 is now available for testing from Python Insider

Matthew Emerick
17 Sep 2020
2 min read
 Python 3.9.0 is almost ready. This release, 3.9.0rc2, is the last planned preview before the final release of Python 3.9.0 on 2020-10-05. Get it here: https://www.python.org/downloads/release/python-390rc2/ In the mean time, we strongly encourage maintainers of third-party Python projects to prepare their projects for 3.9 compatibility during this phase. As always, report any issues to the Python bug tracker. Please keep in mind that this is a preview release and its use is not recommended for production environments. Information for core developers The 3.9 branch is now accepting changes for 3.9.1. To maximize stability, the final release will be cut from the v3.9.0rc2 tag. If you need the release manager to cherry-pick any critical fixes, mark issues as release blockers and/or add him as a reviewer on a critical backport PR on GitHub. To see which changes are currently cherry-picked for inclusion in 3.9.0, look at the short-lived branch-v3.9.0 on GitHub. Installer news This is the first version of Python to default to the 64-bit installer on Windows. The installer now also actively disallows installation on Windows 7. Python 3.9 is incompatible with this unsupported version of Windows. Major new features of the 3.9 series, compared to 3.8 Some of the new major new features and changes in Python 3.9 are: PEP 584, Union Operators in dict PEP 585, Type Hinting Generics In Standard Collections PEP 593, Flexible function and variable annotations PEP 602, Python adopts a stable annual release cadence PEP 615, Support for the IANA Time Zone Database in the Standard Library PEP 616, String methods to remove prefixes and suffixes PEP 617, New PEG parser for CPython BPO 38379, garbage collection does not block on resurrected objects; BPO 38692, os.pidfd_open added that allows process management without races and signals; BPO 39926, Unicode support updated to version 13.0.0; BPO 1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore; A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall; A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489; A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384. More resources Online Documentation PEP 596, 3.9 Release Schedule Report bugs at https://bugs.python.org. Help fund Python and its community. Your friendly release team,Ned Deily @nadSteve Dower @steve.dowerŁukasz Langa @ambv
Read more
  • 0
  • 0
  • 948

article-image-angular-localization-with-ivy-from-angular-blog-medium
Matthew Emerick
09 Sep 2020
5 min read
Save for later

Angular localization with Ivy from Angular Blog - Medium

Matthew Emerick
09 Sep 2020
5 min read
Part of the new Angular rendering engine, Ivy, includes a new approach to localizing applications — specifically extracting and translating text. This article explains the benefits and some of the implementation of this new approach. Prior to Ivy, the only way to add localizable messages to an Angular application was to mark them in component templates using the i18n attribute: <div i18n>Hello, World!</div> The Angular compiler would replace this text when compiling the template with different text if a set of translations was provided in the compiler configuration. The i18n tags are very powerful — they can be used in attributes as well as content; they can include complex nested ICU (International Components for Unicode) expressions; they can have metadata attached to them. See our i18n guide for more information. But there were some shortcomings to this approach. The most significant concern was that translation had to happen during template compilation, which occurs right at the start of the build pipeline. The result of this is that that full build, compilation-bundling-minification-etc, had to happen for each locale that you wanted to support in your application. (build times will vary based on project size) If a single build took 3 minutes, then the total build time to support 9 locales would be 3 mins x 9 locales = 27 mins. Moreover, it was not possible to mark text in application code for translation, only text in component templates. This resulted in awkward workarounds where artificial components were created purely to hold text that would be translated. Finally, it was not possible to load translations at runtime, which meant it was not possible for applications to be provided to an end-user who might want to provide translations of their own, without having to build the application themselves. The new localization approach is based around the concept of tagging strings in code with a template literal tag handler called $localize. The idea is that strings that need to be translated are “marked” using this tag: const message = $localize `Hello, World!`; This $localize identifier can be a real function that can do the translation at runtime, in the browser. But, significantly, it is also a global identifier that survives minification. This means it can act simply as a marker in the code that a static post-processing tool can use to replace the original text with translated text before the code is deployed. For example, the following code: warning = $localize `${this.process} is not right`; could be replace with: warning = "" + this.process + ", ce n'est pas bon."; The result is that all references to $localize are removed, and there is zero runtime cost to rendering the translated text. The Angular template compiler, for Ivy, has been redesigned to generate $localize tagged strings rather than doing the translation itself. For example the following template: <h1 i18n>Hello, World!</h1> would be compiled to something like: ɵɵelementStart(0, "h1"); // <h1>ɵɵi18n(1, $localize`Hello, World!`); // Hello, World!ɵɵelementEnd(); // </h1> This means that after the Angular compiler has completed its work all the template text marked with i18n attributes have been converted to $localize tagged strings which can be processed just like any other tagged string. Notice also that the $localize tagged strings can occur in any code (user code or generated from templates in both applications or libraries) and are not affected by minification, so while the post-processing tool might receive code that looks like this ...var El,kl=n("Hfs6"),Sl=n.n(kl);El=$localize`Hello, World!`;let Cl=(()=>{class e{constructor(e)... it is still able to identify and translate the tagged message. The result is that we can reorder the build pipeline to do translation at the very end of the process, resulting in a considerable build time improvement. (build times will vary based on project size) Here you can see that the build time is still 3 minutes, but since the translation is done as a post-processing step, we only incur that build cost once. Also the post-processing of the translations is very fast since the tool only has to parse the code for $localize tagged strings. In this case around 5 seconds. The result is that the total build time for 9 locales is now 3 minutes + ( 9 x 5 seconds) = 3 minutes 45 seconds. Compared to 27 minutes for the pre-Ivy translated builds. Similar improvements have been seen in real life by teams already using this approach: The post-processing of translations is already built into the Angular CLI and if you have configured your projects according to our i18n guide you should already be benefitting from these faster build times. Currently the use of $localize in application code is not yet publicly supported or documented. We will be working on making this fully supported in the coming months. It requires new message extraction tooling — the current (pre-Ivy) message extractor does not find $localize text in application code. This is being integrated into the CLI now and should be released as part of 10.1.0. We are also looking into how we can better support translations in 3rd party libraries using this new approach. Since this would affect the Angular Package Format (APF) we expect to run a Request for Comment (RFC) before implementing that. In the meantime, enjoy the improved build times and keep an eye out for full support of application level localization of text. Angular localization with Ivy was originally published in Angular Blog on Medium, where people are continuing the conversation by highlighting and responding to this story.
Read more
  • 0
  • 0
  • 2687
article-image-summer-2020-internship-with-the-angular-team-from-angular-blog-medium
Matthew Emerick
02 Sep 2020
3 min read
Save for later

Summer 2020 Internship With the Angular Team from Angular Blog - Medium

Matthew Emerick
02 Sep 2020
3 min read
Photo by Emma Twersky TL;DR Our interns were phenomenal! Read on to find out why. We’ve just wrapped up our latest intern cohort on the Angular team. Please believe me when I tell you that there are some outstanding folks out there and we were lucky enough to get to work with a few of them. Because of the ongoing pandemic Google internships were fully remote. We’re fortunate to have had some really special folks because they were outstanding. Let’s take a look at the great work developed during this cohort on the Angular Team! Better Paths for Learners One of things we’re focused on with the team is making sure that the Angular learning journey works for experienced developers and new developers. Our wonderful intern on the DevRel team, Gloria, took this mission to heart. Gloria Nduka zeroed in on the friction of the learning path for new developers. She used those insights to not only help the team but also to create an interactive tutorial focused on helping developers new to Angular. The tutorial puts the output, code, and next steps in the same window allowing learners to reduce context switching. Gloria’s second project focused on reaching out to and partnering with computer science programs to expose more students to the platform. She was able to make some meaningful connections and we are excited to continue to this initiative. Seeing Opportunities in the CDK The Angular CDK is a wonderful resource aimed at abstracting common application behaviors and interactions. Andy Chrzaszcz saw an opportunity to add new functionality to menus and improve accessibility. He added some great new directives to the CDK that give developers an expressive way to build powerful menus for Angular apps! The foundation set via his contributions will give developers the ability to build all types of menus with advanced interactions like sub-menus, intelligent menu closing and more. Developers will be able to craft menus that meet the application’s needs. A Combination of Great Things Popping Up Presenting lists of data for user’s to select from is standard fare in web development. But how can the Angular CDK help with that? Niels Rasmussen gives us that answer with his project aimed at creating directives that provide a foundation for implementing complex combobox UI components. Because the goal of the Angular CDK is to provide common behaviors, Niels’s solution follows suit for the list box and combo box gives developers the freedom to customize the presentation of the UI to their specific use cases. This brings much welcomed flexibility into the fold. Thanks for Sharing Your Gifts With Us Finally, we want to send an enthusiastic thank you and good luck to all of our interns as they finish up their undergraduate programs. We’ve seen the future in you and things are looking incredibly bright. If you’d like to be an intern here at Google, we invite you to apply. The world needs your gifts and talents. These projects will be released in future versions of the platform. Stay tuned for updates. Summer 2020 Internship With the Angular Team was originally published in Angular Blog on Medium, where people are continuing the conversation by highlighting and responding to this story.
Read more
  • 0
  • 0
  • 1902

article-image-ionic-angular-powering-the-app-store-and-the-web-from-angular-blog-medium
Matthew Emerick
31 Aug 2020
5 min read
Save for later

Ionic + Angular: Powering the App store and the web from Angular Blog - Medium

Matthew Emerick
31 Aug 2020
5 min read
Did you know Ionic and Angular power roughly 10% of the apps on iOS and almost 20% of apps on Android? Let’s repeat that: Angular powers a significant chunk of apps in the app stores. Why is it helpful to know this? Well, if you were on the fence about what technology choice you should make for your next app, it should be reassuring to know that apps powered by web technology are thriving in the app store. Let’s explore how we came to that conclusion and why it matters. First, for a number of reasons, users visit these stores and download apps that help them in their day-to-day lives. Users are searching for ToDo apps (who doesn’t love a good ToDo app), banking apps, work-specific apps and so much more. A good portion of these apps are built using web technologies such as Ionic and Angular. But enough talk, let’s look at some numbers to back this up. The Data If you’ve never heard of Appfigures, it’s an analytics tool that monitors and offers insights on more than 150,000 apps. Appfigures provides some great insight into what kind of tools developers are using to build their apps. Like what’s the latest messaging, mapping, or development SDK? That last one is the most important metric we want to explore. Let’s look at what the top development SDKs are for app development: Data from https://appfigures.com/top-sdks/development/apps Woah, roughly 10% of the apps on iOS and almost 20% of apps on Android use Ionic and Angular. This is huge. The data here is gathered by analyzing the various SDKs used in apps on the app stores. In these charts we see some options that are to be expected like Swift and Kotlin. But Ionic and Angular are still highly present. We could even include Cordova, since many Ionic apps are Cordova-based, and these stats would increase even more. But we’ll keep to the data that we know for sure. Given the number of apps out there, even 10% and 20% are a significant size. If you ignore Appfigures, you can get a sense of how many Ionic/Angular apps are there by just searching for “com.ionicframework”, which is our starting package ID (also, people should really change this). Here’s a link if you’re interested. Why Angular for mobile? Developers are using Ionic and Angular power a good chunk of the app stores. With everything Angular has to offer in terms of developer experience, tooling for fast apps, and its ecosystem of third-party libraries (like Ionic), it’s no wonder developers choose it as their framework of choice. From solo devs, to small shops, to large organizations like the UK’s National Health Service, Boehringer Ingelheim and BlueCross Blue Shield, these organizations have selected Angular and Ionic for their tech stack, and you should feel confident to do so as well. Web vs. App Stores If Ionic and Angular are based on web technologies, why even target the app stores at all? With Progressive Web Apps gaining traction and the web becoming a more capable platform, why not just deploy to the web and skip the app stores? Well it turns out that the app stores provide a lot of value that products need. Features like Push Notifications, File System API, etc are starting to come to the web, but they are still not fully available in every browser. Building a hybrid app with Ionic and Angular can allow developers to use these features and gracefully fallback when these APIs are not available. Discoverability is also another big factor here. While we can search for anything on the web, having users discover your app can be challenging. With the app stores they regularly promote new apps and highly rated apps as well. This can make the difference between a successful product and one that fails. The Best of Both Worlds The web is still an important step to shipping a great app. But when developers want to target different platforms, having the right libraries in place can make all the difference. For instance, if you want to build a fast and performant web app, Angular is an excellent choice and is statistically the choice many developers make. On the other hand, if you want to bring that app experience to a mobile device, with full access to every native feature and offline capabilities, then a hybrid mobile app using Angular plus a mobile SDK like Ionic is the way to go. Either way, your investment in Angular will serve you well. And you’ll be in good company, with millions of devs and nearly a million apps right alongside you. Ionic + Angular: Powering the App store and the web was originally published in Angular Blog on Medium, where people are continuing the conversation by highlighting and responding to this story.
Read more
  • 0
  • 0
  • 2065