Make the Most of Your Migration To AWS Cloud

Introduction

Businesses run workloads on the Cloud when planning new projects, most likely to do with innovation or doing something new. Typical first workloads that we see are web applications, often because of Amazon Web Services (AWS)'s scalability, which is impossible to have the same scalability on-prem. Usually, big companies' innovation teams are the first to use AWS because it's easier to experiment and much easier to launch new things.

In the last two or three years, Artificial Intelligence machine learning has risen as a popular workload. Very few companies today do AI/ML at scale on their environment. It's so much easier to do it on a platform like AWS because of all the data storage services you have and the pre-configured services at your disposal that are much easier to use and leverage than setting up your own tools and applications.

Why Development Teams Should Play Roleplaying Games

A while ago, I saw a presentation by Karthik Nagarajan at ThoughtWorks, where he compared a Dungeons and Dragons (D&D) campaign to working with product teams. Many years later, I thought it was time we had a chat about the topic, and many months after that, I finally got around to writing it up. A long-running campaign indeed!

Listen to the full interview where we cover much more than this summary including handling alpha gamers, and much more.

Load and Compile Dynamical HTML in AngularJS

As a project requirement, we have to load HTML content with CSS (in JSON response) from the backend dynamically and compile it in an Angular application. We also need to support those Angular directives defined in HTML. This article will describe the solution for both AngularJS and Angular.

AngularJS

To compile dynamical HTML in AngularJS, we just need to simply inject $compile and use it to compile the HTML after injecting. So here we use a JQuery function to fetch HTML elements and set HTML into it.

What Does It Take to Test in DevOps?: QA Best Practices

Traditionally, testing has been perceived as a bottleneck in SDLC, something that causes delays in delivery. Organizations have long adopted the Agile/DevOps model, but not without its pitfalls and stumbling blocks, especially in achieving the ideal speed/quality balance.

For enterprise DevOps, it is vital to rethink testing approaches to achieve agility at scale. There is much of an overlap of roles, for instance between business analysts and QA testers. Is the tester’s role diminished because of this overlap or because of automation?

Talking APIs and Description Languages with API Evangelist Kin Lane [Podcast]

The OpenAPI specification has emerged as the industry standard for describing RESTful APIs. This specification, which was formed around the open-source project known as Swagger, paved the way for developers to discover, build, and manage APIs using API schemas.

In this episode of cocktails, we are joined by one of the newly appointed co-chairmans of the OpenAPI Initiative Business Governance Board to discuss the OpenAPI specification itself, its competitive and collaborative nature with other existing formats, ways on how to address the challenges developers face when producing APIs, and what lies ahead for the future of the industry with APIs.

Risky Business: Preparedness Lessons Learned from the Florida Water Plant Hack

You’d be hard-pressed to find someone in the IT security space who will argue against the importance of risk preparedness. Unfortunately, more often than not, people will talk-the-talk without walking the proverbial walk. It sounds smart: be ready for potential attacks before they happen. But we have a long way to go to put this sentiment into practice. Accidents are unplanned, and we're never quite as prepared as we should be. The "that will never happen to us" attitude is rampant among the enterprise, especially when it comes to cybersecurity.

Risk preparedness is something organizations need to start taking seriously, as seen by the recent Florida water plant hack, among others. If they don't, the outcomes could be devastating. Imagine a stadium of sick Super Bowl attendees or worse. While the focus has been largely on protecting big businesses or federal entities with lots of valuable data, no one is truly safe from bad actors — not even local municipalities. In fact, these could be even more dangerous targets when you consider something as serious as compromising a community’s water supply or information theft. 

How To Get Attribute Value In Selenium WebDriver

Introduction

Testing a web page can be a gargantuan task, considering all the elements and variables that come together to make a page work. Selenium automation is a great way to overcome these challenges and automate everything you would manually do. For example, Selenium makes it so much easier to take a screenshot using Python instead of doing it manually every time you come across a website issue.

Similarly, there are multiple scenarios while writing automation test cases when we need to verify a specific attribute on the web page. To ease our execution, the method to getAttribute() in Selenium comes to the rescue. In this blog, we will understand what an attribute is and how we can handle web elements’ attributes using the Selenium getAttribute() method.

How To Build Docker Images for Windows Desktop Applications

Introduction

It used to be that people first downloaded their software onto a physical computer and then ran it. Now, with cloud computing, you no longer need to worry about awkward downloads. Instead, you can use all the same services online from anywhere and see updates in real-time.

Why Businesses Migrate Their Legacy Applications To the Cloud

  • Probably the first main reason for moving to the cloud is access to virtually unlimited computing resources. Cloud elasticity and scalability are essential elements of cloud computing. 
    • Cloud elasticity is the ability of a system to dynamically manage available resources based on current workload requirements.
    • Cloud Scalability is a scalable system infrastructure to meet growing workload demands while maintaining consistent performance appropriately.
  • Moving from the legacy Windows app to cloud computing lets you work anytime and anywhere so long as you have an internet connection. A cloud-based web service is accessible from any device.
  • In the current pandemic situation, team members are forced to work from their home offices. Using the cloud, your teammates can open, edit, and share documents anytime and from anywhere; they can do more together and do it better. Before the advent of the cloud-based workflow, employees had to send files back and forth as email attachments that a single user worked on simultaneously.
  • A public cloud provider owns the hardware infrastructure and is responsible for managing and maintaining it, so you don’t have to worry about maintenance. With a public cloud, you only need to focus directly on meeting your business goals.
  • Cloud computing reduces high hardware costs. You pay only for the actual consumption of resources.

Virtual Machines Vs Containers.

Containers and virtual machines (VMs) are the two main approaches to deploying multiple isolated services in the cloud. So how are they different?

Ballerina Concurrency Model and Non-Blocking I/O

Introduction

The Ballerina programming language has a unique concurrency model that promotes efficient resource usage and provides an intuitive programming model for users. Its concurrency model is also critical to the non-blocking I/O support provided with the communication protocols. In this article, we will take an in-depth look into Ballerina’s concurrency support, and see how the non-blocking I/O operations are implemented on top of this. 

Let’s first take a look at the general concurrency constructs provided by an operating system and how they work, and then move onto the concurrency primitives provided by Ballerina. 

I am having trouble understanding why my program is giving me an error?

public static void main(String[] args) {
int agrades = 0;
int fgrades=0;
int count=0;
Scanner input = new Scanner(System.in);
System.out.println("Enter Grades: ");
int grades = input.nextInt();
while (grades>=0 && grades<=0){
if (grades>=90 && grades<=100)
        agrades++;
if  (grades>=0 && grades<=60)
        fgrades++;
count++;
grades = input.nextInt();
}
System.out.println("Amount of Grade: " + count);
System.out.println("Average Grade: " + (grades+grades/count));
System.out.println("Number of grades above 90: " + agrades);
System.out.println("Number of grades below 60: " + fgrades);
}
}

#Exception in thread "main" java.lang.ArithmeticException: / by zero
at javaapplication12.JavaApplication12.mainsnippets/run.xml:53: Java     returned: 1
BUILD FAILED (total time: 3 seconds)

An Interactive Guide to CSS Transitions

A wonderful post by Josh that both introduces CSS transitions and covers the nuances for using them effectively. I like the advice about transitioning the position of an element, leaving the original space it occupied alone so it doesn’t result in what he calls “doom flicker.” Six hundred and fifty years ago I created CSS Jitter Man to attempt to explain that idea.

The interactive stuff is really neat and helps explain the concepts. I’m a little jealous that Josh writes in MDX — meaning he’s got Markdown and JSX at his disposal. That means these demos can be little one-off React components. Here’s a thread that Josh did showing off how valuable that can be.

Direct Link to ArticlePermalink


The post An Interactive Guide to CSS Transitions appeared first on CSS-Tricks.

You can support CSS-Tricks by being an MVP Supporter.

Ensuring the correct vertical position of large text

Tobi Reif notes how the position of custom fonts set at very large font sizes can be super different, even in the same browser across operating systems. The solution? Well, you know how there are certain CSS properties that only work within @font-face blocks? They are called “descriptors” and font-display is a popular example. There are more that are less-supported, like ascent-override, descent-override, and line-gap-override. Chrome supports them, and lo-and-behold, they can be used to fix this issue.

I really like the idea that these can be used to override the “metrics” of local (fallback) fonts to match a custom font you will load, so that, when it does, there’s little-to-no-movement. I detest FOUT (I know it’s theoretically good for performance), but I can swallow it if the text swap doesn’t move crap around so much.

Direct Link to ArticlePermalink


The post Ensuring the correct vertical position of large text appeared first on CSS-Tricks.

You can support CSS-Tricks by being an MVP Supporter.

The Gutenberg WordPress Plugin To Introduce a Table of Contents Block

What was once likely viewed as plugin territory is now a reality as part of the Gutenberg project. Yesterday, the team merged a pull request for a Table of Contents (TOC) block into the plugin’s codebase. It was a contribution driven by developer Zebulan Stanphill, starting nearly a year ago.

The TOC block may feel a bit niche. However, there is obviously a need for it. There are at least two standalone block plugins to handle the feature, and several block library plugins cover it. Last week, a reader asked about such a solution. Soon, the Gutenberg plugin and, eventually, WordPress will have him and others covered.

The block is not currently available in the plugin on WordPress.org. It has not officially shipped yet. To test it, users will either need to clone the Gutenberg GitHub repository or grab a ZIP file of the nightly beta. It should land in Gutenberg 10.1 in the coming weeks for those who want to wait.

Including these more-niche blocks is a good direction for the project — a Footnotes block is also a possibility. While it can feel like stepping on the toes of plugin developers, WordPress needs to branch out. There is plenty of room for third-party devs to build other blocks. The experience is degraded when users have to sift through multitudes of plugins to find something core to their writing process. There are limits on what blocks should ultimately be included in the platform. However, WordPress is publishing software. Advanced writing features, such as TOCs and footnotes, belong firmly in the default setup.

The Table of Contents Block

This block is a bit different than other blocks users are accustomed to. A TOC is a list of all the headings in a document. In the case of WordPress and webpages in general, a TOC links to those headings. This allows users to jump around the page. The block depends on other blocks in the content, a slightly new concept for the block editor.

When first adding the block to an empty page, it will display a helper message.

Initial state of the Table of Contents block, displaying a helper message to add Headings with HTML anchors.
Initial TOC block when no Heading blocks are present.

Users must begin adding Heading blocks in their post to make use of the TOC block. Once they are added, each Heading is shown as a list item. The block also properly nests list items for sub-headings — an H3 goes into a sub-list under an H2, for example.

TOC block automatically filling out as new headings are added to the post content in the editor.
Headings become list items in the TOC block.

This is the moment things become more complex. On the web, a TOC needs to link to those headings so that readers can jump to the section they want to view. Right now, this does not happen automatically. Perhaps it will do so in the future, but users must manually add HTML anchors to make the linking part work. Ideally, the initial helper message would link to the documentation page on how to do this for new users.

Adding HTML anchors is easy. However, it could be a ton of work for long posts with dozens of headings.

To add the anchor, users must click on each Heading and navigate to the block options panel. Under the Advanced tab, enter a unique ID. It is easiest to name this after the text itself. A Heading block with “A New World” gets an anchor of a-new-world. This also helps when others are deep linking into posts, creating prettier URLs, such as yoursite.com/blog/post-name/#a-new-world.

Adding anchor links for Heading blocks, which appear as links in the TOC block.
Adding anchors to Heading blocks.

The TOC block does not have any design settings. If users need to change the colors or other design-related elements, it is best to wrap it inside another block, such as Group or Cover.

Grouping the Table of Contents block into a Group block in the WordPress editor.
Wrapping the TOC into a Group block.

If adding a heading for the Group block or before the TOC block, it will be added to the list. It is best to use the Paragraph block as a faux heading and change the font size.

Overall, the block works well. Except for the manual insertion of anchors, it is a welcome addition. Perhaps a plugin author will come along and write the code to make it automatic.