Post Syndicated from Crosstalk Solutions original https://www.youtube.com/watch?v=4ulJJkPwZwU
Home Assistant 2022.3 Release Party
Post Syndicated from Home Assistant original https://www.youtube.com/watch?v=vBPx7J2DT4g
The Experiment Podcast: Give National Parks to Native Americans
Post Syndicated from The Atlantic original https://www.youtube.com/watch?v=8YWhwU6jWzU
Abacus – Issuing points for multiple sources
Post Syndicated from Grab Tech original https://engineering.grab.com/abacus-issuing-points-for-multiple-sources
Introduction
Earlier in 2021 we published an article on Trident, Grab’s in-house real-time if this, then that (IFTTT) engine which manages campaigns for the Grab Loyalty Programme. The Grab Loyalty Programme encourages consumers to make Grab transactions by rewarding points when transactions are made. Grab rewards two types of points namely OVOPoints and GrabRewards Points (GRP). OVOPoints are issued for transactions made in Indonesia and GRP are for the transactions that are made in all other markets. In this article, the term GRP will be used to refer to both OVOPoints and GrabRewards Points.
Rewarding GRP is one of the main components of the Grab Loyalty Programme. By rewarding GRP, our consumers are incentivised to transact within the Grab ecosystem. Consumers can then redeem their GRP for a range of exciting items on the GrabRewards catalogue or to offset the cost of their spendings.
As we continue to grow our consumer base and our product offerings, a more robust platform is needed to ensure successful points transactions. In this post, we will share the challenges in rewarding GRP and how Abacus, our Point Issuance platform helps to overcome these challenges while managing various use cases.
Challenges
Growing number of products
The number of Grab’s product offerings has grown as part of Grab’s goal in becoming a superapp. The demand for rewarding GRP increased as each product team looked for ways to retain consumer loyalty. For this, we needed a platform which could support the different requirements from each product team.
External partnerships
Grab’s external partnerships consist of both one- and two-way point exchanges. With selected partners, Grab users are able to convert their GRP for the partner’s loyalty programme points, and the other way around.
Use cases
Besides the need to cater for the growing number of products and external partnerships, Grab needed a centralised points management system which could cater to various use cases of points rewarding. Let’s take a look at the use cases.
Any product, any points
There are many products in Grab and each product should be able to reward different GRP for different scenarios. Each product rewards GRP based on the goal they are trying to achieve.
The following examples illustrate the different scenarios:
GrabCar: Reward 100 GRP for when a driver cancels a booking as a form of compensation or to reward GRP for every ride a consumer makes.
GrabFood: Reward consumers for each meal order.
GrabPay: Reward consumers three times the number of GRP for using GrabPay instead of cash as the mode of payment.
More points for loyal consumers
Another use case is to reward loyal consumers with more points. This incentivises consumers to transact within the Grab ecosystem. One example are membership tiers granted based on the number of GRP a consumer has accumulated. There are four membership tiers: Member, Silver, Gold and Platinum.

There are different points multipliers for different membership tiers. For example, a Gold member would earn 2.25 GRP for every dollar spent while a Silver member earns only 1.5 GRP for the same amount spent. A consumer can view their membership tier and GRP information from the account page on the Grab app.

Growing number of transactions
Teams within Grab and external partners use GRP in their business. There is a need for a platform that can process millions of transactions every day with high availability rates. Errors can easily impact the issuance of points which may affect our consumers’ trust.
Our solution – Abacus
To overcome the challenges and cater for various use cases, we developed a Points Management System known as Abacus. It offers an interface for external partners with the capability to handle millions of daily transactions without significant downtime.
Points rewarding
There are seven main components of Abacus as shown in the following architectural diagram. Details of each component are explained in this section.

Transaction input source
The points rewarding process begins when a transaction is complete. Abacus listens to streams for completed transactions on the Grab platform. Each transaction that abacus receives in the stream carries the data required to calculate the GRP to be rewarded such as country ID, product ID, and payment ID etc.
Apart from computing the number of GRP to be rewarded for a transaction and then rewarding the points, Abacus also allows clients from within the Grab platform and outside of the Grab platform to make an API call to reward GRP to consumers. The client who wants to reward their consumers with GRP will call Abacus with either a specific point value (for example 100 points) or will provide the necessary details like transaction amount and the relevant multipliers for Abacus to compute the points and then reward them.
Point Calculation module
The Point Calculation module calculates the GRP using the data and multipliers that are unique to each transaction.
Point Calculation dependencies for internal services
Point Calculation dependencies are the multipliers needed to calculate the number of points. The Point Calculation module fetches the correct point multipliers for each transaction. The multipliers are configured by specific country teams when the product is launched. They may vary by country to allow country teams the flexibility to achieve their growth and retention targets. There are different types of multipliers.
Vertical multiplier: The multiplier for each vertical. A vertical is a service or product offered by Grab. Examples of verticals are GrabCar and GrabFood. The multiplier can be different for each vertical.
EPPF multiplier: The effective price per fare multiplier. EPPF is the reference conversion rate per point. For example:
-
EPPF = 1.0; if you are issuing X points per SGD1
-
EPPF = 0.1; if you are issuing X points per THB10
-
EPPF = 0.0001; if you are issuing X points per IDR10,000
Payment Type multiplier: The multiplier for different modes of payments.
Tier multiplier: The multiplier for each tier.
Point Calculation formula for internal clients
The Point Calculation module uses a formula to calculate GRP. The formula is the product of all the multipliers and the transaction amount.
GRP = Amount * Vertical multiplier * EPPF multiplier * Cashless multiplier * Tier multiplier
The following are examples for calculating GRP:
Example 1:
Bob is a platinum member of Grab. He orders lunch in Singapore for SGD15 using GrabPay as the payment method. Let’s assume the following:
Vertical multiplier = 2
EPPF multiplier = 1
Cashless multiplier = 2
Tier multiplier = 3
GRP = Amount * Vertical multiplier * EPPF multiplier * Cashless multiplier * Tier multiplier
= 15 * 2 * 1 * 2 * 3
= 180
From this transaction, Bob earns 180 GRP.
Example 2:
Jane is a Gold member of Grab. She orders lunch in Indonesia for Rp150000 using GrabPay as the payment method. Let’s assume the following:
Vertical multiplier = 2
EPPF multiplier = 0.00005
Cashless multiplier = 2
Tier multiplier = 2
GRP = Amount * Vertical multiplier * EPPF multiplier * Cashless multiplier * Tier multiplier
= 150000 * 2 * 0.00005 * 2 * 2
= 60
From this transaction, Jane earns 60 GRP.

Point Calculation dependencies for external clients
External partners supply the Point Calculation dependencies which are then configured in our backend at the time of integration. These external partners can set their own multipliers instead of using the above mentioned multipliers which are specific to Grab. This document details the APIs which are used to award points for external clients.
Simple Queue Service
Abacus uses Amazon Simple Queue Service (SQS) to ensure that the points system process is robust and fault tolerant.
Point Awarding SQS
If there are no errors during the Point Calculation process, the Point Calculation module will send a message containing the points to be awarded to the Point Awarding SQS.
Retry SQS
The Point Calculation module may not receive the required data when there is a downtime in the Point Calculation dependencies. If this occurs, an error is triggered and the Point Calculation module will send a message to Retry SQS. Messages sent to the Retry SQS will be re-processed by the Point Calculation module. This ensures that the points are properly calculated despite having outages on dependencies. Every message that we push to either the Point Awarding SQS or Retry SQS will have a field called Idempotency key which is used to ensure that we reward the points only once to a particular transaction.
Point Awarding module
The successful calculation of GRP triggers a message to the Point Awarding module via the Point SQS. The Point Awarding module tries to reward GRP to the consumer’s account. Upon successful completion, an ACK is sent back to the Point SQS signalling that the message was successfully processed and triggers deletion of the message. If Point SQS does not receive an ACK, the message is redelivered after an interval. This process ensures that the points system is robust and fault tolerant.
Ledger
GRP is rewarded to the consumer once it is updated in the Ledger. The Ledger tracks how many GRP a consumer has accumulated, what they were earned for, and the running total number of GRP.
Notification service
Once the Ledger is updated, the Notification service sends the consumer a message about the GRP they receive.
Point Kafka stream
For all successful GRP transactions, Abacus sends a message to the Point Kafka stream. Downstream services listen to this stream to identify the consumer’s behaviour and take the appropriate actions. Services of this stream can listen to events they are interested in and execute their business logic accordingly. For example, a service can use the information from the Point Kafka stream to determine a consumer’s membership tier.
Points expiry
Further addition to Abacus is the handling of points expiry. The Expiry Extension module enables activity-based points expiry. This enables GRP to not expire as long as the consumer makes one Grab transaction within the next three or six months from their last transaction.
The Expiry Extension module updates the point expiry date to the database after successfully rewarding GRP to the consumer. At the end of each month, a process loads all consumers whose points will expire in that particular month and sends it to the Point Expiry SQS. The Point Expiry Consumer will then expire all the points for the consumers and this data is updated in the Ledger. This process repeats on a monthly basis.

Points expiry date is always the last day of the third or sixth month. For example, Adam makes a transaction on 10 January. His points expiry date is 31 July which is six months from the month of his last transaction. Adam then makes a transaction on 28 February. His points expiry period is shifted by one month to 31 August.

Conclusion
The Abacus platform enables us to perform millions of GRP transactions on a daily basis. Being able to curate rewards for consumers increases the value proposition of our products and consumer retention. If you have any comments or questions about Abacus, feel free to leave a comment below.
Special thanks to Arianto Wibowo and Vaughn Friesen.
Join us
Grab is a leading superapp in Southeast Asia, providing everyday services that matter to consumers. More than just a ride-hailing and food delivery app, Grab offers a wide range of on-demand services in the region, including mobility, food, package and grocery delivery services, mobile payments, and financial services across over 400 cities in eight countries.
Powered by technology and driven by heart, our mission is to drive Southeast Asia forward by creating economic empowerment for everyone. If this mission speaks to you, join our team today!
Armbian 22.02 has been released
Post Syndicated from original https://lwn.net/Articles/886416/
The Armbian project, which is a Debian-based distribution for Arm-based single-board computers (SBCs) and development boards, has a lengthy release announcement for Armbian 22.02. Beyond lots of updates and bug fixes (of course), Armbian has added support for Debian unstable (“sid”), Raspberry Pi images, a new Extensions build framework,
build automation (continuous integration and continuous deployment) improvements, and more. There is also upcoming support for Ubuntu 22.04 images.
Historically, in many cases board manufacturers have been ‘maintaining’ (in parallel) some heavily patched Linux kernel which have diverged so far from mainline as to be considered an entirely different operating system. That mess, is what some refer to as a Board Support Package (BSP), ‘legacy’ kernel, or ‘vendor’ bootloader.
Those sources get ‘thrown over the wall’ upon release, very often never to be touched again. They are full of proprietary code (binary blobs), dirty hacks, ancient kernels, and all manner of other garbage that will never see the light of day in mainline Linux. All of which is very similar to the situation on Android, if you know anything about that.
In fact, if not for projects like Armbian, our SBCs would likewise become throwaway devices, too — just like your Android — in pretty short order. That is, if you ever even got them to work in the first place.
Let Your IPv6-only Workloads Connect to IPv4 Services
Post Syndicated from Sébastien Stormacq original https://aws.amazon.com/blogs/aws/let-your-ipv6-only-workloads-connect-to-ipv4-services/
Today we are announcing two new capabilities for Amazon Virtual Private Cloud (VPC) NAT gateway and Amazon Route 53, allowing your IPv6-only workloads to transparently communicate with IPV4-only services. Curious? Read on; I have details for you.
Some of you are running very large workloads involving tens of thousands of virtual machines, containers, or micro-services. To do so, you configured these workloads to work in the IPv6 address space. This avoids the problem of running out of available IPv4 addresses (a single VPC has a maximum theoretical size of 65,536 IPv4 addresses, compared to /56 ranges for IPv6, allowing for a maximum theoretical size of 2^73 -1 IPv6 addresses), and it saves you from additional headaches caused by managing complex IPv4-based networks (think about non-overlapping subnets in between VPCs belonging to multiple AWS accounts, AWS Regions, or on-premises networks).
But can you really run an IPv6 workload in isolation from the rest of the IPv4 world? Most of you told us it is important to let such workloads continue to communicate with IPv4 services, either to make calls to older APIs or just as a transient design, while you are migrating multiple dependent workloads from IPv6 to IPv4. Not having the ability to call an IPv4 service from IPv6 hosts makes migrations slower and more difficult than it needs to be. It obliged some of you to build custom solutions that are hard to maintain.
This is why we are launching two new capabilities allowing your IPv6 workloads to transparently communicate with IPv4 services: NAT64 (read “six to four”) for the VPC NAT gateway and DNS64 (also “six to four”) for the Amazon Route 53 resolver.
How Does It Work?
As illustrated by the following diagram, let’s imagine I have an Amazon Elastic Compute Cloud (Amazon EC2) instance with an IPv6-only address that has to make an API call to an IPv4 service running on another EC2 instance. In the diagram, I chose to have the IPv4-only host in a separate VPC in the same AWS account, but these capabilities work to connect to any IPv4 service, whether in the same VPC or in another AWS account’s VPC, your on-premises network, or even on the public internet. My IPv6-only host only knows the DNS name of the service.
Here is the sequence happening when the IPv6-only host initiates a connection to the IPv4 service:
1. The IPV6 host makes a DNS call to resolve the service name to an IP address. Without DNS64, Route 53 would have returned an IPv4 address. The IPv6-only hosts would not have been able to connect to that IPv4 address. But starting today, you can turn on DNS64 for your subnet. The DNS resolver first checks if the record contains an IPv6 address (AAAA record). If it does, the IPv6 address is returned. The IPv6 host can connect to the service using just IPv6. When the record only contains an IPv4 address, the Route 53 resolver synthesizes an IPv6 address by prepending the well-known 64:ff9b::/96 prefix to the IPv4 address.
For example, when the IPv4 service has the address 34.207.250.62, Route 53 returns 64:ff9b::ffff:22cf:fa3e.
| IPv6 (hexadecimal) : | 64:ff9b::ffff: | 22 | cf | fa | 3e |
| IPv4 (decimal) : | – | 34 | 207 | 250 | 62 |
64:ff9b::/96is a well-known prefix defined in the RFC 6052 proposed standard to the IETF. Reading the text of the standard is a great way to fall asleep rapidly to learn all the details about IPv6 to IPv4 translation.
2. The IPv6 host initiates a connection to 64:ff9b::ffff:22cf:fa3e. You may configure subnet routing to send all packets starting with 64:ff9b::/96 to the NAT gateway. The NAT gateway recognizes the IPv6 address prefix, extracts the IPv4 address from it, and initiates an IPv4 connection to the destination. As usual, the source IPv4 address is the IPv4 address of the NAT gateway itself.
3. When the packet response arrives, the NAT gateway repopulates the destination host IPv6 address and prepends the well-known prefix 64:ff9b::/96 to the source IP address of the response packet.
Now that you understand how it works, how can you configure your VPC to take advantage of these two new capabilities?
How to Get Started
To enable these two capabilities, I have to adjust two configurations: first, I flag the subnets that require DNS64 translation, and second, I add a route to the IPv6 subnet routing table to send part of the IPv6 traffic to the NAT gateway.
To enable DNS64, I have to use the new --enable-dns64 option to modify my existing subnets. In this demo, I use the modify-subnet-attribute command. This is a one-time operation. I can do it using the VPC API, the AWS Command Line Interface (CLI), or the AWS Management Console. Notice this is a subnet-level configuration that must be turned on explicitly. By default, the existing behavior is maintained.
aws ec2 modify-subnet-attribute --subnet-id subnet-123 --enable-dns64
I have to add a route to the subnet’s routing table to allow VPC to forward IPv6 packets prefixed by DNS64 to the NAT gateway. It tells it to route all packets with destination 64:ff9b::/96 to the NAT gateway.
aws ec2 create-route --route-table-id rtb-123 –-destination-ipv6-cidr-block 64:ff9b::/96 –-nat-gateway-id nat-123
The following diagram illustrates these two simple configuration changes.
With these two simple changes, my IPv6-only workloads in the subnet may now communicate with IPv4 services. The IPv4 service might live in the same VPC, in another VPC, or anywhere on the internet.
You can continue to use your existing NAT gateway, and no change is required on the gateway itself or on the routing table attached to the NAT gateway subnet.
Pricing and Availability
These two new capabilities to the VPC NAT gateway and Route 53 are available today in all AWS Regions at no additional costs. Regular NAT gateway charges may apply.
Go and build your IPv6-only networks!
The Accidental Wolf | Talks at Google
Post Syndicated from Talks at Google original https://www.youtube.com/watch?v=mzmuXRfSUb0
Avoid affecting your production environment during migration with AWS Application Migration Service
Post Syndicated from Michael Spence original https://aws.amazon.com/blogs/architecture/avoid-affecting-your-production-environment-during-migration-with-aws-application-migration-service/
Customers commonly use AWS Application Migration Service to migrate Active Directory joined Windows or Linux servers to Amazon Web Services (AWS). However, this process can affect the production environment during testing. For example, if you update DNS addresses during testing, clients that try to reach the original server will be redirected to the testing server.
To avoid this issue, you could launch instances in a completely isolated network environment. However, this may not be an option for you if your application stack depends on other applications or services.
In this post, we offer an architecture and process that can be applied to applications that cannot be completely isolated during testing. It uses Microsoft Domain Name System (DNS) Query Policies and a Group Policy and does not affect the production environment.
Overview of solution
Using a simple application stack of a WordPress site as an example, we’ll show you how to implement this solution. We’ll also discuss the prequisites required to implement this solution and describe potential domain issues you may encounter and how to solve them.
Figure 1 shows a view of the testing architecture on-premises and in AWS:
- It uses an Amazon Virtual Private Cloud (Amazon VPC) that was set up specifically for testing.
- Within this Amazon VPC, a management subnet that runs on Amazon Elastic Compute Cloud (Amazon EC2) contains the production environment’s self-managed domain controller. This domain controller provides authentication and DNS services to the instances launched during testing.
- The client that tests the application is located within the same private subnet as the applications being tested.
Prerequisites
To implement this solution, you will need:
- An AWS account
- Network connectivity between an on-premises server (or other cloud) and AWS
- Active Directory (Windows Server 2016 or later)
- Active Directory Integrated DNS
- Basic understanding of the following technologies:
- Application Migration Service
- EC2 launch templates
- Active Directory (Windows Version 2016, 2019, or 2022)
- Microsoft Group Policy
- Active Directory Integrated DNS
- Windows PowerShell
Potential domain issues and how to solve them
Application Migration Service is a block-level replication of the original source server, meaning that the replicated server is an exact copy of the original server. During testing, the original source server and the server that was launched for testing are active on the domain at the same time.
This has the potential to create these issues:
- Each server joined to an Active Directory domain has an associated computer object, and that object has a password. The server will change this password automatically every 30 days by default. If either server changes the password for that object, it will cause the other server to fail because it cannot establish a secure session with a domain controller.
- Active Directory supports dynamic DNS updates by allowing servers to register and dynamically update their resource records. If the replicated server updates DNS with a new IP address, that change can propagate to the rest of the environment. This means that clients trying to reach the original server will be redirected to the testing server, which will affect the production environment.
By creating a new Group Policy Object (GPO) with the following settings (and as shown in Figure 2), you can avoid these potential issues.
- Disable Machine Password Changes. Use reverse logic notation to enable the setting to disable the automatic password changes on the server.
- Disable Dynamic Updates from the DNS Client. This setting will prevent the server from updating DNS with a new IP address when you are testing it.
Apply this newly created GPO to the servers that are being migrated. The servers can be targeted for the policy by Active Directory security group, or you can move the servers to a separate organizational unit (OU) within Active Directory and apply the GPO to that OU.
After you apply GPO settings to the server being migrated, verify the GPO settings from an administrative command prompt:
C:\> gpupdate /force
C:\> gpresult /r /scope computer
Active Directory replication
You can disable outbound replication from the domain controller in the testing VPC while still allowing inbound replication. We intentionally configured the network configuration within the testing VPC to allow connectivity to on-premises and other networks.
To do this, issue the following command from an administrative command prompt with a domain administrator privileged user:
C:\> repadmin /options <Testing DC> +disable_outbound_repl
Example walkthrough
1. Example application description
Let’s look at a simple application stack of a WordPress site. It consists of a single web server and a single database server that are being migrated from on-premises to AWS. The WordPress stack could be Linux or Windows. The WordPress configuration on the web server points to the database by hostname only (not by IP address).
When the web server starts up during the testing phase, it issues a DNS query to find the database server by name. Note that we don’t want to return the IP address of the current production database server; we want the one currently being tested. When our workstation in the testing VPC opens up a browser to the WordPress site, we also want it to return the IP address of the web server being tested.
For reference, Table 1 reflects the IP addresses, network information, and URL used in the testing example.
| Testing Private Subnet CIDR | 10.0.67.0/24 |
| Domain Zone Name | awslaunch.local |
| WordPress Site URL | http://wswpweb1 |
| Hostname | Original IP Address | Testing IP Address |
| wswpweb1 | 10.0.4.171 | 10.0.67.171 |
| wswpsql1 | 10.0.4.202 | 10.0.67.202 |
2. Modify EC2 launch templates
To ensure that we launch the EC2 instances with the IP addresses we specified in Table 1, let’s change the EC2 launch template associated with each of the source servers from within Application Migration Service. The EC2 launch template should specify the testing subnet and the IP address to be assigned to the test instances.
Once you’ve modified the EC2 launch template, be sure to set it as the “Default” template because this is the version of the template that Application Migration Service will launch upon testing.
3. Create Microsoft DNS Query Policies
Now that we’ve launched the EC2 instances for testing, let’s set up DNS Query Policies for DNS to return an alternate set of IP addresses during the testing phase.
We’ll set these policies to return alternate IP addresses from DNS for the servers involved in testing and only within the boundary of the testing private subnet (Policy 3.4). By doing this, if any client outside of the testing private subnet queries this domain controller, it will return the original IP addresses and not the testing ones.
Because DNS Query Policies are specific to a specific domain controller, let’s issue the following PowerShell commands on the domain controller that is active in our testing VPC (AD-DC-2 in Figure 1) to create the following policies:
Policy 3.1 A client subnet that represents our private subnet in the testing VPC. This is a one-time configuration.
Add-DnsServerClientSubnet -Name
"MGN-Testing-AZ1" -IPv4Subnet "10.0.67.0/24"
Policy 3.2 A zone scope within the domain zone name. This is a one-time configuration.
Add-DnsServerZoneScope -ZoneName
"awslaunch.local" -Name "MGN-Testing-AZ1-Scope"
Policy 3.3 Alternative IP addresses in the new zone scope.
Add-DnsServerResourceRecord -ZoneName
"awslaunch.local" -A -Name "wswpweb1" -IPv4Address
"10.0.67.171" -ZoneScope "MGN-Testing-AZ1-Scope"
Add-DnsServerResourceRecord -ZoneName
"awslaunch.local" -A -Name "wswpsql1" -IPv4Address
"10.0.67.202" -ZoneScope "MGN-Testing-AZ1-Scope"
Policy 3.4 A query resolution policy that returns alternate IP addresses for our testing servers without impacting the rest of the domain.
Add-DnsServerQueryResolutionPolicy -Name
"MGN-Testing-AZ1-Policy" -Action ALLOW -FQDN "eq,wswpweb1.awslaunch.local,wswpsql1.awslaunch.local"
-ClientSubnet "eq,MGN-Testing-AZ1" -ZoneScope
"MGN-Testing-AZ1-Scope,1" -ZoneName "awslaunch.local"
4. Verify current production IP addresses
Now that we have our policies set, let’s make sure that the application stack IP addresses are still returning correctly from the current production environment with the following command:
C:\>nslookup wswpweb1
Server: WSDC1.awslaunch.local
Address: 10.0.5.10
Name: wswpweb1.awslaunch.local
Address: 10.0.4.171
C:\>nslookup wswpsql1
Server: WSDC1.awslaunch.local
Address: 10.0.5.10
Name: wswpsql1.awslaunch.local
Address: 10.0.4.202
These are the correct IP addresses. They match the original IP addresses from Table 1.
5. Verify testing IP addresses
Now let’s verify that the application stack IP addresses are returning correctly from the testing environment.
C:\>nslookup wswpweb1
Server: WSDC5.awslaunch.local
Address: 10.0.69.10
Name: wswpweb1.awslaunch.local
Address: 10.0.67.171
C:\>nslookup wswpsql1
Server: WSDC5.awslaunch.local
Address: 10.0.69.10
Name: wswpsql1.awslaunch.local
Address: 10.0.67.202
There are the correct addresses. They match the testing IP addresses from Table 1.
We can also verify that the WordPress site is functional by opening a browser from our testing client and browsing to the URL (https://wswpweb1, listed in Table 1).
Additionally, we can verify that the web server is connecting to the correct SQL server database by issuing the following command when logged into the WordPress web server:
C:\ >netstat | findstr /c:"ms-sql-s"
TCP 10.0.67.171:50355 10.0.67.202:ms-sql-s TIME_WAIT
TCP 10.0.67.171:50361
10.0.67.202:ms-sql-s
TIME_WAIT
6. Cleanup
After you’ve tested everything, mark the source servers in Application Migration Service as “Ready for Cutover.” This will terminate the EC2 testing instances.
The following PowerShell commands will remove the DNS resource records and the DNS Query Policy:
Remove-DnsServerResourceRecord -ZoneName
"awslaunch.local" -ZoneScope "MGN-Testing-AZ1-Scope"
-RRType "A" -Name "wswpweb1"
Remove-DnsServerResourceRecord -ZoneName
"awslaunch.local" -ZoneScope "MGN-Testing-AZ1-Scope"
-RRType "A" -Name "wswpsql1"
Remove-DnsServerQueryResolutionPolicy -Name
"MGN-Testing-AZ1-Policy" -ZoneName "awslaunch.local"
This command will re-enable replication from the testing domain controller.
C:\> repadmin /options <Testing DC>
-disable_outbound_repl
Once the servers are launched for final cutover, you can remove the Group Policy applied to the servers to allow the server to resume password changes and dynamic DNS updates.
Conclusion
When you migrate your server resources to AWS with Application Migration Service, the testing phase of the migration lifecycle is critical. It verifies that your application will function properly within the AWS environment before committing to a final cutover. The testing phase can uncover unexpected application dependencies, gauge application performance, and deliver the confidence that your migration to AWS will be successful without risks to your production environment.
In this blog post, we explored an architecture and process that uses Microsoft DNS Query Policies and Group Policy to address potential domain issues and avoids affecting the production environment. This testing framework persists during the entire cloud migration and across multiple application migrations. Once migration is complete, the testing architecture can be removed or maintained for future cloud migrations.
Ready to get started? Read more about the AWS Application Migration Service and other blog posts related to migrations on the AWS Cloud Enterprise Strategy Blog and the AWS Architecture Blog.
Looking for more architecture content? AWS Architecture Center provides reference architecture diagrams, vetted architecture solutions, Well-Architected best practices, patterns, icons, and more!
Hiroshima: Ground Zero, Before and After
Post Syndicated from Geographics original https://www.youtube.com/watch?v=DykVGL6HpiM
[$] Extending restartable sequences with virtual CPU IDs
Post Syndicated from original https://lwn.net/Articles/885818/
Restartable sequences, a Linux kernel feature that facilitates the writing
of lockless, per-CPU code in user space, has been around for some years,
but it only just received support in the GNU C
Library this month. Now that this barrier has been crossed, it would
seem that the time has come to start adding features. Mathieu Desnoyers
has responded to this challenge with a
patch set adding an extension mechanism and a new “virtual CPU ID”
feature.
Kernel prepatch 5.17-rc6
Post Syndicated from original https://lwn.net/Articles/886361/
The 5.17-rc6 kernel prepatch has been
released.
While things look reasonably normal, we _are_ getting pretty late
in the release, and we still have a number of known
regressions. They don’t seem all that big and scary, but some of
them were reported right after the rc1 release, so they are getting
a bit long in the tooth. I’d hate to have to delay 5.17 just
because of them, and I’m starting to be a bit worried here. I think
all the affected maintainers know who they are.
Security updates for Monday
Post Syndicated from original https://lwn.net/Articles/886358/
Security updates have been issued by CentOS (389-ds-base, cyrus-sasl, kernel, openldap, and python-pillow), Debian (cyrus-sasl2, htmldoc, and ujson), Fedora (flac, gnutls, java-11-openjdk, kernel, qemu, and vim), openSUSE (ucode-intel), SUSE (php72 and ucode-intel), and Ubuntu (php7.4, php8.0).
Янев падна. И усмивката на Кирил Петков изчезна
Post Syndicated from Емилия Милчева original https://toest.bg/yanev-padna-i-usmivkata-na-kiril-petkov-izchezna/
В племената ритуалите за възмъжаване са болезнени – както и в политиката. Премиерът Кирил Петков вече изтърпява своята инициация. Публично поисканата оставка на министъра на отбраната Стефан Янев донесе на Петков овации, но и удари в гърба. Обновяването на кабинета става още преди да са изтекли първите 100 дни управление. Аргументите, които Петков днес представи, не оставят място за съмнение защо поиска оставката на най-близкия човек на президента, който управляваше държавата през почти цялата 2021 година.
Никой министър няма право на собствена външна политика, особено във Facebook. Никой министър не може да казва на правителството, че неговото оставане е функция на стабилността на правителството. Мой военен министър не може да използва думичката „операция“ вместо думичката „война“. Операция не може да се нарече, когато хиляди военнослужещи от едната и от другата страна вече са убити. Войници, които са по-малки от моята голяма дъщеря. Когато и тази нощ българско малцинство се обстрелва, когато и тази нощ българи в Киев се крият под мазетата, защото се страхуват, че техните домове ще бъдат взривени. Когато виждаме нещо, с което не сме съгласни, ние не можем да кажем, че българският интерес е да си мълчим.
Кирил Петков
Идеята за оставката на Янев се роди първоначално в средите на „Демократична България“ – политическата сила с най-ясно изразени проевропейски и евро-атлантически позиции от четирите сили в управляващата коалиция. Проблемът е бил обсъждан с премиера и партньори от коалицията още в петък, 25 февруари. Това вероятно е станало след приемането на бюджета, когато Петков заяви пред журналисти, че оставката на Янев не е на дневен ред. Днес Ивайло Мирчев от ДБ определи искането за оставка като „закономерно“. Оставката е знак за партньорите на България в ЕС и НАТО, тъй като колебливите позиции на Янев относно дислоцирането на сили на Алианса и партньорските ангажименти на България (българският батальон, който така и още не се е строил) предизвикаха силен отзвук. Видимо положителен от страна на Москва, след като Руското посолство в България дори публикува позиция на военния министър на страницата си.
Вероятно ако войната в Украйна не беше настанала, Янев би могъл да запази поста. Но руската агресия изиска не просто от България, а от света да се разграничи от управляващия Русия режим, да го осъди и да избере позиция, която да не е снишена и беззъба. Изборът не е само избор срещу войната или в подкрепа на Путин. Изборът е цивилизационен: какво избираме – света на олигарсите, контролираната демокрация, потъпканите човешки права или сдружението на демократични държави и правовата държава. Анализатори предвиждат опити за дестабилизация на Балканите и изобщо на държави, разглеждани като част от постсъветското пространство – и не може да има колебания или отстъпление в позициите на управляващите държава членка на Алианса.
Дали Стефан Янев е имал същите позиции и когато е оглавявал Дирекция „Евро-атлантическа интеграция“ на Министерството на отбраната или когато е бил началник на Департамент „Tрансформации“ в Центъра на НАTО за борба c тероризма в Анкара, или от времето си на военен аташе в САЩ?
Факт е, че заради първата си позиция във Facebook срещу разполагане на сили на Алианса (войната още не бе започнала, но напрежението се покачваше) той бе леко скастрен от премиера. Заради идеята за българския батальон в противовес на разполагането на натовски сили нищо не последва, управляващите дори се съгласиха с него – макар да са наясно с „боеспособностите“ на българската армия. Заради упоритото избягване да назове войната в Украйна война – също, аргументирайки се, че цитира… Путин.
Не използвах думата „война“, а се позовах на това, което каза президентът Путин и се позовах на факта, че използването на думата „война“ трябва да е много специфично и отговорно. Никъде в официалния език на НАТО и ЕС няма документ, в който да е използвана думата „война“. Трябва внимателно да боравим с думите, защото след войната идва дипломацията.
Стефан Янев в „Панорама“, БНТ
Политологът Огнян Минчев го опроверга, цитирайки изявление на лидерите на НАТО, които на среща са призовали Путин да спре тази „безсмислена война“.
А зад кулисите въжето се опъваше. С позиция във Facebook часове преди премиерът Петков да обяви намерението си за смяна на военния министър, Стефан Янев заяви, че няма да подава оставка и оставя решението за това на коалиционните партньори; заяви, че ще бъде назначен „някой, който е по-отзивчив при прокарването на конкретни външни интереси при определянето на българския политически дневен ред“; обвърза оставката си с риск за националната сигурност.
Раздялата с Янев е ценностен избор, но също и необходим. Не може един министър да си позволи позиция, несъвместима с тази на правителството, към което принадлежи. Естественият изход е да си подаде сам оставката, вместо да пише позиции в социалните мрежи в качеството си на министър на отбраната. Стефан Янев може и да е смятал, че е недосегаем – като човек от неписаната квота на президента в това правителство. Но не е.
Дали това ще повлияе на стабилността на коалицията? Неизбежно, защото отваря фронт на управляващите с най-рейтинговия политик, какъвто е президентът. В период на несигурност, война на 400 км от България, висока инфлация и енергийна преса такъв фронт съвсем не е необходим и полезен. Вероятно Стефан Янев ще се върне като съветник на президента, какъвто беше, допреди да оглави първия служебен кабинет.
В разпространена от президентската институция позиция Радев коментира отстраняването на Янев ведно с предстоящия национален празник Трети март – в контекста на войната в Украйна и последствията за България и света.
Смяната на министъра на отбраната в разгара на военна криза в съседство е риск, отговорността за който ляга върху управляващата коалиция. В избора на министър мнозинството трябва да се ръководи от разбирането за суверенитет, професионална компетентност и способност да се отстоява българският интерес.
Румен Радев
Премиерът Петков заяви, че има подкрепата на коалиционните партньори за оставката на Янев. Да видим. Не е тайна, че лидерката на единия партньор – Корнелия Нинова, която е и вицепремиер и министър на икономиката, марширува заедно с Костадин Костадинов и неговата „Възраждане“ в редиците на путинофилите. Проруската партия на Костадинов вече заяви, че ще иска оставката на целия кабинет заради политиката му спрямо „военния конфликт в Украйна“ – била в разрез с българския национален интерес. (Костадинов и Янев видимо говорят на един и същ език.)
Изборът на Нинова няма да е лесен. От една страна, тя е в нескрит конфликт с президента, но пък избирателите на БСП го подкрепят и одобряват решенията му. От друга страна, тя и нейният кръг вече консумират властта, чрез която се разплаща, и ще бъде непосилно да се откаже – ако реши да се заинати за оставката на Янев.
Решението, взето от Кирил Петков, няма да бъде оставено безнаказано от силите зад Стефан Янев и „Дондуков“ 2. В облъчваната с хибридните послания на руската пропаганда България мнозина споделят позициите на Янев и дори го хвалят за тях.
А Петков възмъжава в политиката. Най-напред изчезна усмивката му.
Заглавна снимка: © Правителството на Република България
Free Black People of Revolutionary America
Post Syndicated from The History Guy: History Deserves to Be Remembered original https://www.youtube.com/watch?v=sGFTqr8HKmw
Insurance Coverage for NotPetya Losses
Post Syndicated from Bruce Schneier original https://www.schneier.com/blog/archives/2022/02/insurance-coverage-for-notpetya-losses.html
Tarah Wheeler and Josephine Wolff analyze a recent court decision that the NotPetya attacks are not considered an act of war under the wording of Merck’s insurance policy, and that the insurers must pay the $1B+ claim. Wheeler and Wolff argue that the judge “did the right thing for the wrong reasons..”
Celebrating 10 years of Raspberry Pi with a new museum exhibition
Post Syndicated from original https://www.raspberrypi.org/blog/10-years-raspberry-pi-national-museum-of-computing-exhibition/
Ten years ago, Raspberry Pi started shipping its first computers in order to inspire young people to reimagine the role of technology in their lives. What started with a low-cost, high-performance computer has grown into a movement of millions of people of all ages and backgrounds.

Today, Raspberry Pi is the UK’s best-selling computer, and the Raspberry Pi Foundation is one of the world’s leading educational non-profits. Raspberry Pi computers make technology accessible to people and businesses all over the world. They are used everywhere from homes and schools to factories, offices, and shops.

Visit the history of Raspberry Pi
To help celebrate this 10-year milestone, we’ve partnered with The National Museum of Computing, located at the historic Bletchley Park, to open a new temporary exhibit dedicated to telling the story of the Raspberry Pi computer, the Raspberry Pi Foundation, and the global community of innovators, learners, and educators we’re a part of.

In the exhibit, you’ll be able to get hands-on with Raspberry Pi computers, hear the story of how Raspberry Pi came to be, and see a few of the many ways that Raspberry Pi has made an impact on the world.
Join us for the exhibition opening
We know that not everyone will be able to experience the exhibit in person, and so we’ll live-stream the grand opening this Saturday 5 March 2022 at 11:15am GMT. Keep an eye on our social media channels for the link to watch the video feed. If you’re able to make it to the National Museum of Computing on Saturday, tickets are available to purchase.
We’re delighted to celebrate 10 years with all of you, and we’re excited about the next 10 years of Raspberry Pi.
The post Celebrating 10 years of Raspberry Pi with a new museum exhibition appeared first on Raspberry Pi.
Убийците са си убийци, независимо колко копейки дрънкат в джобчето ти
Post Syndicated from original https://bivol.bg/%D1%83%D0%B1%D0%B8%D0%B9%D1%86%D0%B8%D1%82%D0%B5-%D1%81%D0%B0-%D1%81%D0%B8-%D1%83%D0%B1%D0%B8%D0%B9%D1%86%D0%B8-%D0%BD%D0%B5%D0%B7%D0%B0%D0%B2%D0%B8%D1%81%D0%B8%D0%BC%D0%BE-%D0%BA%D0%BE%D0%BB%D0%BA.html

Гледам, че Копейкин пак е получил директива от руското посолство и се е изходил на метеното. Трябвало да се направи денацификацияи в България. Явно по почина на кремълския му идол,…
Sex Work: Last Week Tonight with John Oliver (HBO)
Post Syndicated from LastWeekTonight original https://www.youtube.com/watch?v=-gd8yUptg0Q
For the Sake of Simplicity
Post Syndicated from original https://xkcd.com/2587/

Путин изгуби тази война
Post Syndicated from original http://www.gatchev.info/blog/?p=2423
Тече четвърти ден от сраженията. И става все по-ясно – Путин изгуби тази война.
Губи я в Украйна, от най-високо до най-ниско ниво. Комедиантът Зеленски вместо да се подриска от страх и да се предаде или скрие, се оказа истински президент и мъж. Остана под бомбите в Киев и на предложението на САЩ да го евакуират отговори: „Трябва ми не транспорт, а оръжие!“. Показа, че са палячовци другите държавни глави, начело с Путин… Милионерът Кличко вместо да дава акъл от вилата си в Калифорния, организира отбраната на града и сам е на предните линии. Тринайсетте граничари на Змийския остров, без дори да имат къде да се прикрият от снарядите, пратиха руски боен кораб да си завре ултиматума няма да напиша къде. Вместо да се пръснат като пилци, обикновените украинци взеха оръжието и се организираха в бойни части. Опитът да бъдат сплашени ги обедини… Ако някой пита какво е народ, а не мърша – ето, гледай.
И офанзивата му не върви. Вместо Киев да бъде прегазен за 4-5 часа, и останалото от Украйна за още няколко дни, Киев се държи вече четвърти ден. Свръхзвуковите ракети, ядрените подводници и другите легенди за руското оръжие не помагат. Няколко масирани атаки на града се провалиха. Опитите да го обкръжат – също: напредък засега има, но за пълно обкръжение ще им е нужен вероятно към месец. Лесните за превземане участъци падат бързо, но добре укрепените държат – германците научиха това при Ленинград. Рускоезичният Харков също отбива атаките със сталинградски героизъм. „Нацисткият“ батальон „Азов“ продължава да удържа Мариупол срещу атаки отвсякъде и бомбардировки в количества, достатъчни да го унищожат няколко пъти… Тук-там руските войски успяват да превземат по някое градче, но така за цяла Украйна ще им трябват години. И това насред полета, идеални за блицкриг. А като стигнат сред хълмовете и горите на Западна Украйна?
Това е едно от страшните поражения на Путин. В момента умира пред очите ни митът за „непобедимая и легендарная“. Разгромен от далеч по-малка и несравнимо по-слаба военно държава, но със смел и достоен народ. Хората си припомнят как мъничка Финландия също успя да се опъне на превъзхождащата я десетки пъти Червена армия – изгуби малко територия, но запази независимостта си. И започват да си задават въпроса какво ли ще стане, ако срещу руската армия се изправи равностойна ѝ по мощ. Дали от нея няма да останат, както казват руснаците, „рожки да ножки“…
Още по-страшно е поражението на Путин сред руснаците в Украйна. Преди ден-два писах във Фейсбук – по броя взети руски паспорти в Донбас си личи, че населението там май не обожава Русия. Че под ботуша на руската армия и наемниците ѝ си мълчи, но косвените белези показват скритото… А сега виждаме, че същото е и другаде. Градовете с руско мнозинство оказват жестока съпротива на руската армия. Някои биват прегазени, други удържат, но всички се бият свирепо срещу „освободителите“ си. Не зная дали Русия може да е добре дошла за тях, но Путин очевадно не е.
Губи войната Путин и на Запад. Вместо Западът – и целият свят – да е стреснат и смразен от светкавичната мощ на съветската армия, той се чувства заплашен, но не и уплашен. Обединява се срещу Русия, налагайки ѝ санкции, които преди биха били непредставими. Швеция и Финландия обмислят кандидатстване в НАТО. Германия драстично качи военния си бюджет над 2% от БВП – Путин постигна каквото Тръмп не успя дори да постави на сериозно обмисляне. Великобритания взе мерки срещу руските пари. Източноевропейските държави – включително такива с руски агентури начело, като Унгария и България – затвориха въздушното си пространство за руски самолети. Войски на НАТО бяха преместени напред, към границите с Русия. Решението тя да бъде отрязана от СУИФТ беше не просто прието, а единодушно. Из света се провеждат многохилядни митинги против войната и в подкрепа на Украйна. Даже световният спорт тръгна категорично да отрязва Русия. Дори Китай вече не я подкрепя толкова охотно… Не, не е страховита световна конспирация – просто Путин жъне каквото пося.
И го жъне дори сред руснаците на Запад. Навсякъде в митингите участват рамо до рамо местни хора, живеещи там украинци и живеещи там руснаци. Не защото са предатели на родината си, а защото са наясно, че Путин не е родината им, не е Русия. И на повечето места украински бежанци приемат и подслоняват в домовете си най-охотно именно местните руснаци. Включително в България. И това е една от причините да пиша този запис – моля ви, не забравяйте, че руснак не означава задължително путинофил. Че повечето руснаци в България са били тези дни по-достойни и по-антипутиновски от много българи. Гледайте ги с уважение, заслужили са го. И ако някой се опита да ги тормози, без колебание му подарете юмрук в зъбите. Да не позори България, българите и вас лично.
(А най-запенените и отблъскващи „мурзилки“ тук са българи, за срам на всеки честен българин. Да, немалко от тях не са платени или с мръсни надежди лекета, просто са промити от Путиновите лъжи, на които са имали наивността да се доверят. Да, немалко от тези хора са иначе свестни и добри. Уви, когато мътилката се оттече, те ще се окажат при лекетата – не истински заслужено, но там ще са се сложили сами. Няма да бъдат преследвани, но и няма да се отърват лесно от позора и погнусата. Уви, кой каквото сам си направи…)
А най-страшно губи войната Путин в… Русия. В руските медии тази война е операция, ограничена в Донбас, да го освободят от превзелите го подло укрофашисти – Путин го е страх да признае пред народа си, че извършва агресия срещу Украйна. Подготвени са мобилни крематориуми за убитите руски войници, да няма върнати в Русия тела и въпроси около тях – „изчезнал при учение, точка“. Но въпреки това народът му научава, и хората с ум и съвест реагират. В Москва и Санкт Петерсбург всеки ден има демонстрации срещу войната, въпреки вече няколкото хиляди арестувани, въпреки заплахите с уволнения и затвор за участие в тях. Руски интелектуалци масово подписват открити писма срещу тази война. Дори спортисти се обявяват срещу нея.
И дори в руската армия. Пленените руски войници разказват едно и също – никой от тях не е знаел, че атакува украинска територия. Казвали са им, че освобождават Донбас от превзела го украинска армия… Но командирите няма как да не гледат карти и да не разберат къде са, и много от тях не са щастливи. Вече на няколко пъти излиза информация как руски танкови колони спират някъде, изливат горивото и съобщават: „Горивото свърши, нямаме как да стигнем до фронта.“ Не от страх да воюват – от нежелание да стрелят по братята си. А в Херсон танкова колона беше връхлетяла, минала през града стреляйки във въздуха и излязла от другата страна, без реално да нападне нищо. Очевидно някой командир е изпълнил заповед да атакува както съвестта му е позволила.
(Току-що прочетох за двама руски войници. БТР-ът им привършва горивото преди Харков, на двеста метра от бензиностанция. Взимат те две туби, отиват до нея без даже да си вземат оръжието, и казват на персонала – етнически руснаци! – „Привет, ние сме освободителите ви, най-сетне пристигнахме! Викайте ура и ни дайте малко гориво, че го привършихме!… Ама чакайте, защо ни арестувате? Не се ли радвате?!…“ Познайте какво им е наливал руският агитпроп в главите. И каква се е оказала реалността.)
… Да, в Русия санкциите вече започват да оказват ефект. Все по-трудно е да се изтеглят пари от банкомат или банка. Нищо чудно скоро да започнат да изчезват от магазините първо някои стоки, после други… За Путин как се чувства обикновеният руснак е без значение, стига да не се бунтува. Но това няма как да скрие, че руският народ е жертва на тази война не по-малко от украинския. По различен начин – но всъщност не много по-различен. Русия губи може би повече убити на ден, отколкото САЩ загубиха в Ирак общо за 20 години там. И тези убити може формално да се водят войници и агресори, но реално са най-обикновени момчета. Изкомандвани да загинат за каквото сигурно поне 95% от тях не искат и се срамуват от него. Те и семействата им са също и точно толкова жертви на Путин – не го забравяйте.
Не е без значение и може ли Путин да си позволи да продължава тази война. Тя му струва по около 20 милиарда (в долари) на ден – БНП на Русия за близо седмица. Имаше готовност да издържи този разход за няколко дни до седмица, до толкова очакваше Украйна да падне напълно. Продължи ли над 10 дни войната, ще започне да загазва. Свършват парите, свършва горивото за воюващите части. Свършват дори запасените муниции, а за производство на нови трябват материали, които сега никой няма да продаде на Русия… А пък в това време светът вижда, че Украйна не е обречена и има смисъл да ѝ се помага. И помощта вече тече – хиляди противотанкови и противосамолетни ракети, тонове оръжие и муниции. Удържат ли украинците още десетина-петнайсет дни, Путин ще трябва да преговаря, и Украйна ще бъде в тези преговори силната страна. Нейната армия с всеки ден ще получава все повече и по-добро въоръжение, а това на руската ще свършва.
(Руското въоръжение и без това не е на ниво. Наскоро гледах видео с пленен руски танк. Операторът го разглеждаше и показваше отвътре – всичко е връзвано и кърпено кое както може. Било е подвиг изобщо да го докарат до бойното поле… Повечето друга руска техника е на подобно дередже. И танковете, и самолетите. И вероятно дори ядреното оръжие.
И на подобно дередже е и личният състав. Няколко руски части, може би между 50 000 и 100 000 души общо, са много боеспособни, но останалото е зле обучено пушечно месо. Резервистите и мобилизираните са още по-зле обучени. А повечето от боеспособните части вече са в боя, и по-слабата и зле въоръжена Украйна предимно успява да ги задавя и удържа… Какво ще стане, ако повечето от тези части бъдат разгромени? На Украйна това може да отнеме доста седмици воюване, но на НАТО вероятно би отнело ден-два. После „непобедимая и легендарная“ накъде и как…?!)
Може ли Путин да допусне това? Би означавало края му – главорезите под него няма да му простят. Ние може и да не усетим, ако го смени някой друг Путин, но той ще го усети, ако и за кратко. И на неговия стол няма как да седнеш, ако не си тежък психопат, руската управленска система не би го позволила. Така че оттук нататък следва от него да се очаква най-лошото.
Какво ще е то? Зависи дали околните ще успеят да му намерят някакъв изход от ситуацията, в която се вкара. Хич няма да е лесно. Ако успеят, може и нещата да се разминат по-леко. Ако обаче не успеят, може да се очаква всичко. Много по-агресивно включване на руската армия – до този момент тя предимно пази цивилното население. (Може да е не по хуманни, а по политически съображения, да не потриса руснаците – няма значение, фактът е факт, пази го.) Може да нареди масирани бомбардировки над украински градове, без значение на жертвите – не зная ще го изпълнят ли командирите му, някои вероятно да. Може да плаши Запада с ядрен удар, ако продължат да доставят оръжие на Украйна – Западът вероятно няма да престане, натискът от населението му в тази насока вече е твърде силен, а западните политици не могат да си позволят да го пренебрегнат. Може дори да стигне дотам да нанесе ядрен удар върху Украйна, за да сплаши съпротивата ѝ и света – съпротивата ѝ ще се втвърди още повече, а светът вероятно ще реагира с такова обединяване срещу Русия, че дори Китай ще бъде принуден да я изостави… В особено крайния случай може да се стигне дори до руски ядрен удар срещу държави от НАТО заради доставките на оръжие – това ще означава моментална ядрена война между НАТО и Русия, с пълните им арсенали, плюс конвенционална война. Ако Путин така или иначе няма да оцелее, защо да не погуби и света със себе си?
„Интересен“ е само последният вариант. Противно на убежденията на повечето хора, нито животът на Земята, нито човечеството ще бъдат унищожени. Ще загинат десетки, може би стотици милиони хора, но човечеството ще го преживее. (Русия има голям ядрен арсенал, но какво е състоянието му вече обсъдих. А САЩ няма да ударят с повече, отколкото реално им е нужно, за да обеззъбят врага.) Какви ще са последствията за Русия не ми се мисли. Какви ще са за България – също няма да са хубави.
Сигурно е само едно – ако Путин беше разкаран от Кремъл навреме, всичко това нямаше да се случи. Ако ще войната да спре в този миг, вече убитите и разрушенията ще са излишно много.



