ASRock Rack 4U8G-TURIN2 A Fresh Take on a Classic AI Server Design

Post Syndicated from Patrick Kennedy original https://www.servethehome.com/asrock-rack-4u8g-turin2-amd-nvidia-broadcom-classic-ai-8-gpu/

The ASRock Rack 4U8G-TURIN2 uses two AMD EPYC processors to provide the most unique spin on the 8x GPU AI server we have seen in years

The post ASRock Rack 4U8G-TURIN2 A Fresh Take on a Classic AI Server Design appeared first on ServeTheHome.

Manage authorization within a containerized workload using Amazon Verified Permissions

Post Syndicated from Manuel Heinkel original https://aws.amazon.com/blogs/security/manage-authorization-within-a-containerized-workload-using-amazon-verified-permissions/

Containerization offers organizations significant benefits such as portability, scalability, and efficient resource utilization. However, managing access control and authorization for containerized workloads across diverse environments—from on-premises to multi-cloud setups—can be challenging.

This blog post explores four architectural patterns that use Amazon Verified Permissions for application authorization in Kubernetes environments. Verified Permissions is a scalable permissions management and fine-grained authorization service for your applications.

In this blog post, we cover the following patterns and discuss their trade-offs:

  • Calling Verified Permissions from an Amazon API Gateway API fronting your application in Kubernetes
  • Calling Verified Permissions from a Kubernetes Ingress controller component
  • Calling Verified Permissions from a sidecar container running in the same pod as the application container
  • Calling Verified Permissions from the application container

Understanding these patterns and their implications can help you implement secure and consistent authorization mechanisms across your entire infrastructure without compromising the scalability, portability, and resource efficiency of your containerized workloads.

Consistent authorization through centralized policy management

Access to application resources can be secured more effectively with a centralized and consistent approach to authorization. Especially in containerized environments with distributed architectures and shared resources, traditional access control methods, like embedding authorization logic within individual application code or relying on local access control policies, can become difficult to manage and prone to errors. This becomes even more challenging when you have a combination of on-premises and cloud setups.

A centralized authorization solution empowers developers to implement consistent access control across individual components of an application efficiently. Benefits include reduced duplicate work, an improved security posture, and lower complexity in managing and enforcing access control policies.

Verified Permissions benefits in a containerized environment

Amazon Verified Permissions provides several key benefits as an external authorization service:

  • Benefits for the platform engineering team – Centralized authorization enables platform engineering teams to implement, maintain, and govern authorization policies across the organization without requiring changes to individual applications. This aligns with modern platform engineering practices, where platform engineering teams can provide authorization as a service to application teams, promoting consistent security standards while reducing the operational burden on development teams.
  • Consistent authorization across environments – With Verified Permissions, you can define and manage access control policies in a centralized location. This makes it easier to apply consistent authorization rules across your entire infrastructure, including on-premises deployments and different cloud environments.
  • Simplified application development – Externalizing authorization logic from applications reduces development complexity. Developers can focus on core application functionality without having to implement and maintain authorization mechanisms within each service or component. This separation of concerns promotes code modularity, reusability, and faster iteration cycles.
  • Scalable and highly available – Verified Permissions is a managed service, designed to be scalable and highly available out of the box. As your containerized workloads grow in scale and complexity, Verified Permissions can handle increasing authorization request volumes while maintaining performance and availability.
  • Fine-grained access control – Verified Permissions supports attribute-based access control (ABAC) and role-based access control (RBAC). This allows you to define granular policies in the open source Cedar language based on various attributes like user roles, resource properties, environmental factors, and more.

Integration patterns for authorization

Kubernetes provides many options for architecting applications. Therefore, there are multiple locations in a typical architecture where authorization decisions can be enforced, as shown in Figure 1.

Figure 1: Integration points for authorization in containerized workloads

Figure 1: Integration points for authorization in containerized workloads

The workflow is as follows:

  1. API Gateway. Organizations can use entry points to the application outside of the Kubernetes cluster, such as an API gateway, to obtain an authorization decision. In AWS, Amazon API Gateway enables customers to use authorizer Lambda functions to send an authorization request to Verified Permissions.
  2. Ingress controller. The Kubernetes API defines Ingress objects, which provide load balancing and routing functions on layer 7. Common Ingress controllers like Traefik offer the option to integrate external authorization services.
  3. Sidecar proxy container. You can intercept every request routed to the application by using a sidecar container running in the same pod as the application container. This sidecar container calls Verified Permissions for authorization decisions.
  4. Application container. Developers can use the Amazon SDK to communicate with Verified Permissions from inside the application when an authorization decision is needed.

In the following sections, we explore each of these patterns in detail, examining their implementation, use cases, and specific considerations. At the end of our discussion, we provide a comprehensive comparison table to help you choose the most appropriate pattern based on factors such as scalability, performance, maintenance overhead, and specific use case requirements. This will help you make an informed decision about which pattern best suits your application’s needs.

Authorization workflow

Independent of which of the four mentioned options for authorization you choose, the overall authorization workflow, shown in Figure 2, will stay the same.

Figure 2: Authorization workflow with Amazon Verified Permissions

Figure 2: Authorization workflow with Amazon Verified Permissions

The workflow is as follows:

  1. Authentication. The user first authenticates with an identity provider to obtain a JSON Web Token (JWT). You can configure the identity provider to write relevant information like user roles, tenant ID, or other needed user attributes into the JWT. You can then use this information later to make an authorization decision.
  2. API request. The user makes a request to your application that includes the JWT.
  3. Authorization information. Your application extracts the relevant information that is needed to make an authorization decision from the request. This can include principal information from the JWT, information about the resource that the user requests, and what action the user wants to perform.
  4. (Optional) Policy information point lookup. Depending on your policies, you might need additional information in order for Verified Permissions to make an authorization decision. For example, you can query ownership details for a document from a database.
  5. Authorization decision. You then send the relevant information to Verified Permissions, which returns a decision stating whether the request is permitted or forbidden.
  6. Authorization enforcement. You then enforce the decision from Verified Permissions in your application by allowing or denying an action. For a REST API, this would result in sending back an HTTP 403 forbidden status if the request was denied, or processing the request if it was allowed and sending an HTTP 200 OK status.

Authorization outside of the cluster by using Amazon API Gateway

In this pattern, authorization decisions are made at the API gateway layer before requests reach the Kubernetes cluster. When a request arrives at the API gateway, it triggers an authorization check with Verified Permissions to evaluate the request against defined policies. Based on the Verified Permissions response, the gateway either forwards the request to the containerized application or denies access.

This pattern excels in scenarios where you need coarse-grained access control that can be enforced with information accessible at the API level (such as an HTTP header or ID or access token) and that supports RBAC and ABAC. Consider a document management application where different users have access to different documents based on group membership or identity attribute.

This approach to authorization works consistently regardless of whether your application runs in containers, virtual machines, or serverless environments. The API gateway acts as a unified control point for enforcing access policies across backend services.

For implementations that use Amazon API Gateway specifically, you can use Lambda authorizers to integrate with Verified Permissions. For each incoming API request, API Gateway invokes the authorizer Lambda function, which makes a call to Verified Permissions to evaluate the request against the defined authorization policies, as shown in Figure 3.

Figure 3: Integration of Amazon Verified Permissions in Amazon API Gateway

Figure 3: Integration of Amazon Verified Permissions in Amazon API Gateway

AWS provides a quick-start solution that demonstrates this integration by using Amazon API Gateway and Amazon Cognito, making it easier to implement this pattern. The setup process is detailed in the blog post Authorize API Gateway APIs using Amazon Verified Permissions and Amazon Cognito or bring your own identity provider.

Authorization in a Kubernetes Ingress

Another option to implement coarse-grained access control in use cases as described in the previous section is to use a Kubernetes Ingress layer. Some customers prefer Kubernetes-native solutions, especially if they need to run Kubernetes clusters within and outside of AWS.

Kubernetes provides an API to create and maintain Ingress objects, operating at layer 7 (the application layer), which enables routing decisions based on HTTP attributes. This layer 7 capability makes Ingress controllers ideal for implementing authorization checks.

One Kubernetes Ingress controller that supports external authorization is Traefik Proxy. With this feature, you can delegate authorization decisions to an external service like Verified Permissions before routing requests to the application container.

Assuming that the authorization endpoint is backed by a service in the same Kubernetes cluster, the architecture looks as shown in Figure 4.

Figure 4: Integration of Amazon Verified Permissions in a Kubernetes Ingress

Figure 4: Integration of Amazon Verified Permissions in a Kubernetes Ingress

The workflow is as follows:

  1. Authenticated users access the service through an Elastic Load Balancer of type Network Load Balancer (NLB).
  2. The NLB—operating at layer 4—exposes a Kubernetes Ingress inside the cluster that provides layer 7 capabilities. The Ingress object is implemented by an Ingress controller that supports external authorization, as described earlier.
  3. The Ingress forwards the request—or parts of it—that needs authorization to a local authorization service in the cluster. We use a dedicated authorization service in this architecture because the Ingress backend service allows an external endpoint to be called for authorization.
  4. The authorization service is deployed into its own Kubernetes namespace with a dedicated Kubernetes service account. EKS Pod Identity provides the ability to link the service account in this namespace to an AWS Identity and Access Management (IAM) role that grants access to Verified Permissions by injecting temporary AWS access credentials into the pod at runtime.
  5. The authorization service extracts relevant information from the request and sends it to Verified Permissions for an authorization decision.
  6. The Ingress for the backend service awaits the response of the authorization service and forwards it to the backend service, if access is granted. The Ingress expects the authorization service to respond with HTTP status code 200 for authorized requests. If the Ingress receives HTTP status code 403, the requester is not allowed to access the requested resource, and the Ingress will block the request at this stage.
  7. Only authorized requests are forwarded to registered backend pods.

Because integration with external authorization services is not part of the Kubernetes Ingress API, you need to consult the documentation of the Ingress controller that you decide to use to determine the availability of this feature and its implementation details. Forward authentication of the Traefik Kubernetes Ingress supports this pattern and can be configured with the vendor-specific annotations described in the Traefik documentation.

Authorization in sidecar containers

Not all Ingress controllers support integration with an external authorization service. Amazon Elastic Kubernetes Service (Amazon EKS) customers might prefer the AWS Load Balancer Controller to manage the lifecycle of NLBs and ALBs for their services. Customers can continue using their existing Ingress controller, even if it does not support calling external authorization services today. You can move the authorization of requests behind the Ingress layer with the sidecar container pattern.

Sidecar containers are a common pattern for extending an application’s functionality in Kubernetes. A sidecar is a container running in the same pod as the application it relates to. This means that the sidecar and application follow the same lifecycle and share resources, such as the network ID. This pattern is a good fit when the authorization logic is service-specific. Because the authorization service is deployed alongside the application, this pattern also provides better support in situations where changes to the application demand changes in the authorization logic.

Consider a document management system where access control depends on document metadata and team structures. When a user attempts to edit a document, the sidecar queries the document’s metadata, such as the classification level, tags, and department ownership. The sidecar can also check the organizational team hierarchy to understand reporting relationships and access privileges. This context enables fine-grained authorization decisions that consider not just who the user is, but also, for example, their organizational context or the individual document’s metadata.

Although it’s possible to configure sidecar proxies such as Envoy for individual pods manually, the more convenient option is to introduce a service mesh. A service mesh provides a control plane to manage proxies, including centralized configuration, automated injection of sidecars, and an Ingress layer for traffic routing. Istio is a popular option for a service mesh in Kubernetes.

The diagram in Figure 5 shows the deployment architecture to implement authorization with Verified Permissions in a service mesh.

Figure 5: Integration of Amazon Verified Permissions in a Kubernetes Ingress

Figure 5: Integration of Amazon Verified Permissions in a Kubernetes Ingress

The workflow is as follows:

  1. Authenticated users access the application through an NLB.
  2. The request is routed through an Ingress in the Kubernetes cluster.
  3. The Ingress forwards the request directly to the backend service.
  4. Pods of the backend service consist of multiple containers. Each request is routed through an Envoy proxy first.
  5. The Envoy proxy forwards the request to a co-located container running the authorization service.
  6. Pod Identity is used to map an IAM role to a Kubernetes service account bound to the pod, which enables the authorization sidecar to invoke Verified Permissions for an authorization decision. Note that each container in this pod has access to the IAM credentials that are mapped to the service account.
  7. The Envoy proxy awaits the response of the authorization sidecar and blocks or forwards the request to the backend container, depending on the Verified Permissions authorization decision.

When Istio is deployed into a Kubernetes cluster, it introduces Custom Resource Definitions (CRDs) for managing the service mesh. The authorization workflow can be implemented using the ServiceEntry CRD and an Istio Authorization Policy. The authorization service running as a local container in the application pod becomes a registered service entry in the mesh. This service entry can then be configured in an authorization policy as the target for request authorization in the proxy. For more details, see the External Authorization section in the Istio documentation.

Application container

When it comes to integrating Verified Permissions directly within your application container, you have the advantage of fine-grained control over authorization decisions at the application level. This approach allows for more context-aware authorization checks and can be useful when you need to make authorization decisions based on application-specific data that you can query from a policy information point.

Unlike the sidecar pattern, where authorization happens before the request reaches your application code, this approach lets you gather the necessary context from your application state, databases, or other services before making the authorization call. This is particularly valuable when the authorization logic is deeply intertwined with business logic or requires data that’s only available within the application context. This pattern also supports minimizing the number of authorization requests, if, for example, only a subset of requests processed by a monolithic service require authorization.

However, it’s important to note that this tight coupling between authorization and business logic makes the system more brittle and susceptible to breakage when functional or business logic changes occur. This means that modifications to your application code might require careful consideration of their impact on the authorization logic, potentially increasing maintenance complexity.

The architecture for authorization requests from the application container is shown in Figure 6.

Figure 6: Integration of Amazon Verified Permissions in the application container

Figure 6: Integration of Amazon Verified Permissions in the application container

The workflow is as follows:

  1. Authenticated users access the application through an Elastic Load Balancer—either Application Load Balancer (ALB) or NLB depending on workload requirements.
  2. The Kubernetes service or Ingress for the backend application is directly registered at the ALB or NLB by the AWS Load Balancer Controller.
  3. Requests are directly routed to a pod that is backing the service.
  4. The backend application’s logic is responsible for identifying whether a request needs authorization. The backend uses an IAM role injected at runtime through Pod Identity, when an authorization decision from Verified Permission is needed. The backend application returns HTTP status code 403 if the decision is a deny; otherwise it will continue processing the request.

See the Simplify fine-grained authorization with Amazon Verified Permissions and Amazon Cognito blog post for details on calling Verified Permissions within an application.

Choosing the right pattern for your app

You now have a set of patterns to introduce authorization into your containerized workloads. You need to consider multiple factors and understand the trade-offs that come with each pattern to identify the best option for a given scenario. In the following table, we list certain areas with influence on your architectural decisions.

Granularity of authorization decisions
API gateway
  • Authorization on API or service level
  • Decision based on information from HTTP request
  • Suitable for consistent coarse-grained authorization
Ingress controller
  • Authorization on API or service level
  • Decision based on information from HTTP request
  • Suitable for consistent coarse-grained authorization
Sidecar proxy
  • Authorization on service level
  • Decision based on information from HTTP request and service domain (such as policy information point or static service-specific rules)
  • Suitable for service-specific authorization with low or mid-level complexity for decisions
Application container
  • Authorization on code level
  • Decision based on information from HTTP request and arbitrary business logic
  • Suitable for highly complex decision logic
Resource overhead
API gateway
  • No cluster resources needed for authorization
  • Unauthorized requests don’t consume cluster resources
Ingress controller
  • Central Ingress pods consume cluster resources
  • Unauthorized requests don’t consume application pod resources
Sidecar proxy
  • Authorization services increases resource demand of each pod in the cluster
  • Unauthorized requests consume application pod resources
Application container
  • Authorization service consumes resources only when authorization is performed
  • Unauthorized requests consume CPU cycles of application logic until the authorization logic is triggered
Scalability
API gateway
  • Fully managed serverless service
Ingress controller
  • Scaling of Ingress pods needs to be defined
  • Cluster auto-scaling or capacity planning for compute resources in cluster needed
Sidecar proxy
  • Existing scaling policies can be leveraged
Application container
  • Existing scaling policies can be leveraged
Performance
API gateway
  • Invokes Verified Permission in AWS for each request that needs authorization
  • Supports caching to reduce number of requests to Verified Permission out of the box
Ingress controller
  • Invokes Verified Permission in AWS for each request that needs authorization
  • (Optional) Integration of avp-local-agent to minimize number of requests to Verified Permissions
Sidecar proxy
  • Invokes Verified Permissions in AWS for each request that needs authorization
  • (Optional) Integration of avp-local-agent to minimize number of requests to Verified Permissions
Application container
  • Invokes Verified Permissions in AWS only if the business logic processing a request requires authorization
  • (Optional) Integration of avp-local-agent to minimize number of requests to Verified Permissions
Cost
API gateway
  • Consumption-based costs depending on requests received and data transferred out, and optionally cache size
  • Consumption-based costs to invoke Verified Permissions
  • Enabling a cache potentially reduces costs per requests
Ingress controller
  • Adds to infrastructure costs depending on the underlying compute resources needed to run the fleet of pods for Ingress and authorization service
  • Consumption-based costs to invoke Verified Permissions, which can be minimized by integrating avp-local-agent
Sidecar proxy
  • Adds to infrastructure costs depending on the underlying compute resources needed to run the sidecar containers for the proxy and authorization service in each pod
  • Consumption-based costs to invoke Verified Permissions, which can be minimized by integrating avp-local-agent
Application container
  • Typically minimal additional costs, since authorization code shares the application’s resources
  • Consumption-based costs to invoke Verified Permissions, which can be minimized by integrating avp-local-agent
Portability
API gateway
  • Portability is limited and depends on API Gateway with functionality for custom authorization
Ingress controller
  • Portable across Kubernetes environments with Ingress controller supporting external authorization
Sidecar proxy
  • Portable across Kubernetes environments
Application container
  • Highly portable without dependencies to underlying components
Complexity
API gateway
  • Offered as central component by platform engineering team to offload complexity of authorization from product teams
  • Changes in authorization service impact product teams
Ingress controller
  • Offered as central component by platform engineering team to offload complexity of authorization from product teams
  • Changes in authorization service impact product teams
Sidecar proxy
  • Platform engineering teams provide standardized patterns (and optionally implementation) for authorization that can be integrated and implemented by product teams
  • Increases autonomy of individual teams
Application container
  • Full responsibility for authorization lies with the product teams
  • Increases autonomy of individual teams

Not all services have the same requirements for authorization. You can also combine the patterns discussed in this post. You can, for example, put a basic authorization workflow with coarse-grained access control in front of the majority of your services. You can then rely on sidecar proxies with policy information points to inject additional, dynamic context into authorization decisions for specific services. Lastly, if certain use cases of a service demand complex authorization decisions, you can fall back to application-level authorization for specific parts of your code base.

Conclusion

In this blog post, we explored four patterns for integrating Verified Permissions into a containerized environment. We discussed the benefits and considerations of implementing Verified Permissions at different levels: from an API gateway outside of Kubernetes clusters, by means of Ingress controllers and sidecar proxies as network components inside the Kubernetes cluster, to authorization within the application itself. We saw how each pattern offers unique advantages. We also discussed considerations for finding a suitable option for your situation and when to combine patterns.

By using Verified Permissions, organizations can implement consistent, fine-grained authorization across their containerized workloads, whether they’re running on-premises, in the cloud, or in hybrid environments. This centralized approach to authorization can enhance security and simplify policy management and application development.

To learn more about implementing these patterns and best practices, visit the Amazon Verified Permissions User Guide. For hands-on experience, we recommend exploring the Verified Permissions workshop, which provides practical examples and guided exercises.

 
If you have feedback about this post, submit comments in the Comments section below. If you have questions about this post, contact AWS Support.
 

Manuel Heinkel
Manuel Heinkel

Manuel is a Solutions Architect at AWS, working with software companies in Germany to build innovative and secure applications in the cloud. He supports customers in solving business challenges and achieving success with AWS. Manuel has a track record of diving deep into security and SaaS topics. Outside of work, he enjoys spending time with his family and exploring the mountains.
Markus Kokott
Markus Kokott

Markus is a Senior Solutions Architect at AWS, specializing in guiding software companies to become successful SaaS providers. With over a decade of experience in consulting as well as designing, building, and operating software products, he excels in bridging the gap between business and technology. Markus is passionate about containers, platform engineering, and DevOps in general, using his expertise to drive innovation and efficiency.

Choi: announcing Casual Make

Post Syndicated from jzb original https://lwn.net/Articles/1014065/

Charles Choi has announced
the release of the Casual
Make
: a menu-driven interface, implemented as part of the Casual
suite of tools, for Makefile
Mode
in GNU Emacs.

Emacs supports makefile editing with make-mode which has a mix of
useful and half-baked (though thankfully obsoleted in 30.1)
commands. It is from this substrate that I’m happy to announce the
next Casual user interface: Casual Make.

Of particular note to Casual Make is its attention to authoring and
identifying automatic variables whose arcane syntax is
un-memorizable. Want to know what $> means? Just select it in the
makefile and use the . binding in the Casual Make menu to identify
what it does in the mini-buffer.

Casual Make is part of Casual
2.4.0
, released on March 12 and is available from MELPA. The 2.4.0 update to
Casual also includes documentation in the Info format for the first time.

[$] Warming up to frozen pages for networking

Post Syndicated from corbet original https://lwn.net/Articles/1013408/

When the 6.14 kernel is released later this month, it will include the
usual set of internal changes that users should never notice, with the
possible exception of changes that bring performance improvements. One of
those changes is frozen pages, a
memory-management optimization that should fly mostly under the radar.
When Hannes Reinecke reported a
crash
in 6.14, though, frozen pages suddenly came into view. There is a
workaround for this problem, but it seems there is a fair
amount of work to be done that nobody had counted on to solve the problem
properly.

Security updates for Thursday

Post Syndicated from jake original https://lwn.net/Articles/1014042/

Security updates have been issued by Debian (chromium), Fedora (ffmpeg, qt6-qtwebengine, tigervnc, and xorg-x11-server-Xwayland), Red Hat (fence-agents and libxml2), SUSE (amazon-ssm-agent, ark, chromium, fake-gcs-server, gerbera, google-guest-agent, google-osconfig-agent, grafana, kernel, libtinyxml2-10, podman, python311, python312, restic, ruby3.4-rubygem-rack, and thunderbird), and Ubuntu (jinja2, linux-azure, linux-azure-4.15, linux-lts-xenial, linux-nvidia, linux-nvidia-6.8, linux-nvidia-lowlatency, netatalk, python3.5, python3.8, rar, unrar-nonfree, and xorg-server, xwayland).

Watch the recordings from AWS Developer Day 2025

Post Syndicated from Brian Beach original https://aws.amazon.com/blogs/devops/watch-the-recordings-from-aws-developer-day-2025/

Software development is undergoing a seismic shift, driven by the transformative impact of generative AI. This powerful technology is redefining how developers work, what they build, and who can become a developer. At the AWS Developer Day 2025, we discussed how AWS is empowering developers to embrace this evolution through their generative AI developer tools. Developers got a first-hand look at exciting product launches, updates, and insights from AWS leaders on the future of software development. See the session list below.

Behind the scenes photo of Eva Knight, Artur Rodrigues, Farrah Campbell and AM Grobelny rehursing their session. Camera equipment in the foreground with speakers at a desk in the background.

This free, virtual event inspired developers of all backgrounds about the possibilities of generative AI for their work. Through use case demos, leadership insights, and community spotlights, attendees learned how AWS is making it faster and easier to build and scale quality software in the cloud.

If you could not attend AWS Developer Day 2025, you can still watch the recordings on YouTube:

The AWS Developer Day 2025 showcased the transformative power of generative AI for software development. Developers learned how AWS is empowering them to embrace this evolution through their generative AI developer tools, making it faster and easier to build and scale quality software in the cloud. From boosting productivity across the SDLC to accelerating application modernization, the event highlighted the exciting possibilities that generative AI offers for the future of software development. As the industry continues to evolve, AWS is committed to equipping developers with the tools and insights they need to thrive in this changing landscape.

Чуждоезиковото обучение в училище – максимално неефективно, за да е удобно на всички

Post Syndicated from original https://www.toest.bg/chuzhdoezikovoto-obuchenie-v-uchilishte-maksimalno-neefektivno-za-da-e-udobno-na-vsichki/

Чуждоезиковото обучение в училище – максимално неефективно, за да е удобно на всички

Има една обществена тайна, която се обсъжда главно от родители на потърпевши ученици, но за съжаление, е стигнала до изключително малко учебни институции. И това – при положение че засегнатите от нея не са единични случаи. Става въпрос за чуждоезиковото обучение в цели три години от средношколския път на учениците в България – от 5. до 7. клас. Училищата като главни изпълнители на образователната услуга услужливо мълчат, въпреки че никоя наредба не забранява изрично да действат адекватно. 

Какво казват учебните планове?

В стотици училища в страната изучаването на чужд език започва във втори клас с 64 учебни часа за цялата учебна година – така както е предвидено в Рамковия учебен план. В трети клас часовете стават 96, в четвърти – 102. Общо за трите първи години изучаване на чужд език учениците разполагат с 262 учебни часа по първия си чужд език. 

В 5. и 6. клас часовете по чужд език на година остават по 102, в 7. клас са 108. Общо за трите години учебните часове са 312. Това е абсолютният минимум, предвиден в учебните планове, без да смятаме всички възможности, които предлага обучението по факултативен учебен предмет и избирателен учебен предмет, които най-често се използват за допълнителни часове по профилиращ предмет и чужд език.

2. клас

64

3. клас

96

4. клас

102

5. клас

102

6. клас

102

7. клас

108

ОБЩО УЧ

574

Оставяме настрани факта, че този пръв чужд език най-често не може да бъде избран свободно – все пак образованието не е концерт по желание и това ще ви бъде напомняно от почти всяко общинско училище, с което ви събере животът. Концентрираме се върху тези общо 574 учебни часа, или 22 960 минути. 

Да приемем, че първият чужд език на детето ви в училище е английски. Не сте имали възможността да го избирате, но и няма нищо лошо в това – това е съвременният универсален световен език. 

В края на 7. клас се очаква учениците да са достигнали ниво А2. Общият брой на часовете през годините, разделен на 120 (колкото е нормативът за изучаване на материала за едно ниво), надвишава сумата от продължителността на общо 4 нива, но да приемем, че грубо отговаря на нея. Да обобщим: в програмата, заложена от Министерството на образованието и науката (МОН) се приема, че са нужни 6 учебни години за 4 нива (А 1.1., А 1.2., А 2.1. и А 2.2.). Това обхваща приблизително възрастта от 8 до 14 години. 

Покриването на ниво А2, разделено по четирите компетенции, които са заложени и в учебната програма на МОН, означава следното:

  • Говорене: умения за говорене в опростени ежедневни ситуации в магазини или учреждения, основни форми на поздравяване, заговаряне, обръщение; изразяване на чувства като страх и радост по много семпъл начин; умение за кратки, прости и ежедневни телефонни разговори.
  • Писане: умения за много базова лична кореспонденция, пощенски картички или имейли; в официална кореспонденция – умения за обръщение, поздравяване, отправяне на молба или благодарност; попълване на прости формуляри с лични и професионални данни.
  • Слушане: разпознаване на темата на разговор; разбиране на прости указания в ежедневни ситуации (упътване, разпореждания от лекар); грубо проследяване на проста ежедневна история или на кратки и ясно произнесени радиотекстове за ежедневни събития – например прогноза за времето.
  • Четене: разбиране на прости указания, ако са стъпково структурирани и са подкрепени с илюстрации; разбиране на кратка и просто построена история; разбиране на табели на публични места; разбиране на основна договорна информация – срок, цена, валидност; разбиране на кратки ежедневни информиращи текстове от етикети; разбиране на основна информация от кратки обяви или дописки в медиите.

Кога трябва да започне обучението по чужд език?

Въпреки че съвременните изследвания разширяват успешния период за научаване на чужд език до около 17-годишна възраст, те затвърждават тезата, че за да се достигне най-високото ниво на владеене, е препоръчително човек да започне преди десетата си година. Тогава дяловете от мозъка, които са основна движеща сила за езиковите ни умения, преминават през пиковия си период на продуктивност. През началния етап на образованието способностите на децата в познавателните процеси, творчеството, дивергентното мислене са в оптимално състояние. 

Множество изследвания доказват, че е възможно да има първични явления, например промяна на произношение или синтаксис от езици (език 1 към език 2 и обратно), но те са само временни и не влошават владеенето на първия език. По-важното е доказателството, че владеенето на повече от един език подобрява не само езиковите, но и когнитивните способности. Така двуезичните хора показват по-добри изпълнителски умения (executive functions) – това е когнитивният процес, който организира мислите и дейностите. Тези хора са по-способни да работят в многозадачен режим, имат по-добро внимание и концентрация, по-успешно филтрират информация. Установено е и че владеенето на повече от един език в по-напреднала възраст забавя или спира когнитивния упадък.

Накратко, от биологична гледна точка в периода от 6 до 13 години е най-ползотворно да се въведе чужд език. 

Децата в този период могат да разбират чуждия език наравно с родния си в петте основни умения – четене, писане, слушане, говорене и мултимодално учене (филми, видеа и извличане на информация от тях). Едно прелюбопитно изследване дава отговор на въпроса коя е най-подходящата възраст да се започне изучаването на английски език като чужд, за да се достигне до ниво на майчин език: най-късно на 10.

Освен силната биологична обусловеност на ученето на чужд език съществува и социална – заради технологии, музика, игри, пътувания, изобщо всичко, което ни заобикаля в света. Много от децата на 80-те и 90-те години на миналия век си спомнят комичното прохождане в английския език с ваденето на текстове на песни, сублимирали в изпълнението на небезизвестната песен на Марая Кери – „Кен лий“. 

В днешно време достъпът до автентичния съвременен английски език е буквално навсякъде – социални мрежи, недублирани телевизионни канали, приложения за телефони и таблети. Светът е съвсем различен и децата (често и абсолютно неконтролирано) проговарят едновременно на майчиния си език и на поне още един, най-често именно английски. Добавяме и възможностите за пътуване, за живеене на различно от родното място, смесените бракове, многоезичната семейна среда – все повече деца са билингви от раждането си. И не на последно място, ранното чуждоезиково обучение е една от първите грижи на почти всички родители. За справка може да се огледате колко широка палитра от услуги се предлагат в частния сектор, когато става въпрос за чуждоезиково обучение. Именно защото това е бъдещето. Но то още не е влязло в държавната образователна система. 

Харизаният кон

Училищното образование в България е задължително и безплатно. Това обаче някак автоматично започна да означава, че ползвателят му няма право на претенции за качеството. Ако имате късмет, ще попаднете на учители, които си обичат работата. Може обаче да нямате този късмет и трябва да слушате как образованието „не е концерт по желание“ и ако искате нещо различно, „отидете в частно училище“. Не знам дали директори и учители си дават сметка за собственото си омаловажаване, когато предлагат този единствен според тях изход.

Харизаният кон всъщност чисто регулационно (закони, наредби, програми и всички мерки, посочвани винаги като ограничителни) е много гъвкав. И това го доказват десетките частни училища, които са задължени да спазват същите тези регулации, но предлагат много по-качествена услуга. 

Ако влезете в произволен 5., 6. или 7. клас, ще установите, че една представителна част от класа владее чуждия език на по-високо ниво от това, което изисква годишната учебна програма от него. Децата, които са минали през езикови школи от малки, гледат вече филми без дублаж или субтитри, четат и общуват свободно на английски език, са длъжни да минават отново през материал (граматика и лексика), който владеят добре отдавна. Детето няма право да бъде освободено от този час. Може единствено да се надявате учителят да прояви разбиране и да се споразумеете ученикът да участва във всяко писмено и устно изпитване, но в регулярните часове да си носи работни листове от извънучилищното си обучение и кротко да се упражнява по тях, вместо да повтаря това, което вече знае. Тоест да използва разумно огромното количество часове. 

Ако това изключително рядко щастие не ви се усмихне, то ще преминете цялата йерархия до директора, за да ви бъде обяснено, че има програма, има наредба и вие сте никой да искате специално отношение.

Ако позволим на един, ще дойдат и други, които ще поискат същото.

Уви, никой не си задава въпроса, ако дойдат повече от петима с едно и също питане, проблемът в тях ли е, или е извън тях? Естествено, образователната система не вижда проблема в себе си. Най-често отношенията между по-напреднали езиково ученици и преподавателите им ескалират в междуличностни конфликти и наказателни оценки, за да „се вземе в ръце“ многознайкото. Не помагат дори доказателства като външно оценяване на олимпиада или на официален езиков тест (IELTS, TOEFL, Cambridge Certificate).

Така повечето родители са се научили да не се намесват и да не търсят варианти за регулиране на тези чисто пропуснати шансове предвид броя на часовете, а децата се научават да си мълчат и да изпълняват безсмислени упражнения, които не водят до напредък.

МОН всъщност залага един минимум знания в учебните си програми и никъде не пише, че той не може да бъде прекрачван, напротив. Никой обаче не може да ви отговори на въпроса, ако има проверка и тя установи, че 1/3 от класа всъщност е на по-високо ниво, какво ще последва. А като родители, плащащи за неефективността на образователния модел (защото този пропуск бива наваксван с частни уроци и школи), бихме имали пълно право да пожелаем качествена услуга. 

Не съществува наредба или каквато и да било административна пречка, която да забранява разделянето на класове и събирането на ученици от различни класове в отделни групи според етапа на уменията им. Така както се прави в много гимназии междувременно, в които още в началото на 8. клас децата преминават през тест за установяване на актуалното ниво на владеене и класовете биват разделени на групи за часовете по чужд език. 

Ето как би могло да изглежда това на пръв поглед сложно нещо в реалността

Вместо входно ниво в началото на учебната година, на учениците се прави тест за нивото на знания. Всеки учител по английски език би могъл да назове поне няколко такива теста, които са общовалидни и определят кое ниво е подходящо за конкретния обучаван. В даден випуск, състоящ се от повече паралелки, един учител е недостатъчен, винаги са най-малко двама, които си разделят класовете. Ако приемем, че говорим за средношколски етап, от 5. до 7. клас, то тези учители са с нужната квалификация, за да могат да преподават на различните нива.

Представете си как тези Х на брой паралелки започват да имат нещо повече от съседските взаимоотношения на засичане по коридорите – децата разширяват социалния си кръг, опознават се по-отблизо, работят в различни групи. Естествено, за учебната програма ще е по-лесно, а за учениците ще е много по-полезно, ако езиковите часове станат блокови – най-малко по два учебни часа. Така пък и учителите ще имат спокойствието да разгънат преподаване, затвърждаване и упражнение в един учебен ден. На кого би навредило това? 

Ако още във 2. клас сте наясно, че знаете повече от другите и няма нужда да учите по предмет Х, за да изкарвате похвали и добри оценки – честито! Вие още на 8 години започвате да заучавате грешно поведение при учене. Няма какво да ви мотивира, нищо не ви предизвиква, всичко, което ви преподават, е вече чувано и виждано – нищо ново. В голяма степен е вероятно да запазите тази самоувереност дори когато тя няма да отговаря на истината.

А децата, които не са учили до този момент чужд език? Не познават буквите, не знаят нито една дума. Те по всяка вероятност ще са малцинство и ще трябва да се учат в среда, в която повечето им съученици въздишат с досада. Ако си представим света от тяхна гледна точка, то има вероятност той да изглежда така: „Всички знаят всичко, само аз съм глупав и не мога нищо.“ Излиза, че сме създали всички предпоставки едно дете да намрази цял предмет, а защо не и генерално всички чужди езици – чували сте „не е моето“ и „на мен не ми вървят езиците“, нали?

Не му липсват наредби на българското образование. Липсва му желание. Човешко отношение. Внимание. Комуникация без назидание. 

И ще му гледаме зъбите на коня – няма как, дали сме му най-ценното си. Дори и да ни захапе, пак ще търсим начин да го погалим и да му кажем, че не е лош той, просто не са му показали, че може и с добро.


Светът се променя с бясна скорост. Професиите, в които ще се развиват поколенията, започващи днес образователния си път, все още не са измислени. Подготвена ли е нашата образователна система, за да отговори на тези предизвикателства? Какво може и трябва да се промени? А как? Веднъж месечно в рубриката „Възможното образование“ на Донка Дойчева-Попова ще говорим за промяната – такава, каквато искаме да я видим, за добрите примери и за посоките, в които може би е добре да обърне поглед българската образователна система.

[$] New terms of service for PyPI

Post Syndicated from jake original https://lwn.net/Articles/1012954/

On February 25, the Python
Software Foundation
(PSF), which runs the Python Package Index (PyPI), announced
new terms
of service
(ToS) for the repository. That has led to some questions
about the new ToS, and the process of coming up with them. For one thing, the previous terms
of use
for the service were shorter and simpler, but there are other
concerns with specific wording in the new agreement.

Traversal-resistant file APIs (The Go Blog)

Post Syndicated from jzb original https://lwn.net/Articles/1013876/

Damien Neil has written an article for the Go Blog about path
traversal vulnerabilities
and the os.Root API added in Go 1.24 to help prevent
them.

Root permits relative path components and symlinks that do not escape
the root. For example, root.Open("a/../b") is permitted. Filenames are
resolved using the semantics of the local platform: On Unix systems,
this will follow any symlink in “a” (so long as that link does not
escape the root); while on Windows systems this will open “b” (even if
“a” does not exist).

The collective thoughts of the interwebz