Tag Archives: translations

Celebrating our translators!

Post Syndicated from Nina Szymor original https://www.raspberrypi.org/blog/celebrating-our-translators/

As the world gets ready to celebrate International Translation Day on 30 September, we want to say thank you to our amazing community of volunteer translators. This talented bunch work very hard so that people around the world can learn digital making and computing in their native languages.

Can you help us translate our content?

If you speak an additional language to English, volunteering as a translator is an easy way to make a big difference.

Our translators

The #RPiTranslate community is growing every day, and at the moment we have around 370 volunteers. They are translating our learning projects into 50 languages – everything from Afrikaans, to Tamil, to Scots Gaelic! Projects in 26 of those languages are already available on the Raspberry Pi learning projects website, and we continually add more.

Our translators are all volunteers, and they come from various walks of life. They are students and professionals, translators and coders, young and retired, already passionate about our mission or completely new to it.

Abdulaziz is a language coordinator for the Arabic language team. He is finishing his doctoral research at the University of Toledo in the US, and will soon start working as an assistant professor in the Department of Curriculum and Instruction at King Saud University in Saudi Arabia. He translates for us because he believes our educational resources are great and he’d love to see them used by Arabic speakers of all ages.

Wojtek volunteers at a Code Club in Poland, and helps us translate our projects into Polish because he thinks translations are crucial for learning. When children can access lessons in their native language, they truly understand programming concepts, and that empowers them to experiment and create more.

getting started with raspberry pi

Cor is the main force behind all of our Dutch projects. He is a retired simulator designer and developer for the Royal Netherlands Air Force, and volunteers at a hackerspace in the Netherlands. While teaching young people coding and robotics, he realised how difficult it is for them to learn all of this in English. He decided to translate for us to change that.

Silvia started volunteering for us when she was studying for a degree in translation. She joined us to gain some real-life experience in translation and localisation, but quickly found herself immersed in our amazing community and became passionate about Raspberry Pi’s mission. She is still supporting us now, even though she has finished her degree and is working full-time.

Sanneke is a digital literacy consultant and librarian at Bibliotheek Kennemerwaard in the Netherlands. She runs five Dojos in the area where her library is based. Sanneke translates because it helps children who want to learn to code. English is taught from quite an early age at primary schools in the Netherlands, but having learning resources in Dutch is particularly helpful for young children.

All of these volunteers bring with them a unique set of skills and experiences. They make the #RPiTranslate community an amazing, diverse, successful team.

Raspberry Pi translators: we salute every single one of you. We couldn’t do what we do without you!

A GIF showing lots of Raspberry Pi colleagues smiling, saluting and clapping enthusiastically

Join us

Anyone can join this amazing group of people in their translation efforts. It’s really easy to get involved: you don’t need any experience of translation or coding, and you can choose how much time you want to commit.

Visit our translation page to find out more, or join one of our live Q&A sessions this week to ask our translation manager and language coordinators anything you’d like:

  • Wednesday 26 September at 18:00 BST – join here
  • Friday 28 September at 13:00 BST – join here

Happy translation week!

Special thanks to the Atlassian Foundation and MIT Solve for their continued support in developing our translation community.

The post Celebrating our translators! appeared first on Raspberry Pi.

Introducing Cloud Native Networking for Amazon ECS Containers

Post Syndicated from Nathan Taber original https://aws.amazon.com/blogs/compute/introducing-cloud-native-networking-for-ecs-containers/

This post courtesy of ECS Sr. Software Dev Engineer Anirudh Aithal.

Today, AWS announced Task Networking for Amazon ECS. This feature brings Amazon EC2 networking capabilities to tasks using elastic network interfaces.

An elastic network interface is a virtual network interface that you can attach to an instance in a VPC. When you launch an EC2 virtual machine, an elastic network interface is automatically provisioned to provide networking capabilities for the instance.

A task is a logical group of running containers. Previously, tasks running on Amazon ECS shared the elastic network interface of their EC2 host. Now, the new awsvpc networking mode lets you attach an elastic network interface directly to a task.

This simplifies network configuration, allowing you to treat each container just like an EC2 instance with full networking features, segmentation, and security controls in the VPC.

In this post, I cover how awsvpc mode works and show you how you can start using elastic network interfaces with your tasks running on ECS.

Background:  Elastic network interfaces in EC2

When you launch EC2 instances within a VPC, you don’t have to configure an additional overlay network for those instances to communicate with each other. By default, routing tables in the VPC enable seamless communication between instances and other endpoints. This is made possible by virtual network interfaces in VPCs called elastic network interfaces. Every EC2 instance that launches is automatically assigned an elastic network interface (the primary network interface). All networking parameters—such as subnets, security groups, and so on—are handled as properties of this primary network interface.

Furthermore, an IPv4 address is allocated to every elastic network interface by the VPC at creation (the primary IPv4 address). This primary address is unique and routable within the VPC. This effectively makes your VPC a flat network, resulting in a simple networking topology.

Elastic network interfaces can be treated as fundamental building blocks for connecting various endpoints in a VPC, upon which you can build higher-level abstractions. This allows elastic network interfaces to be leveraged for:

  • VPC-native IPv4 addressing and routing (between instances and other endpoints in the VPC)
  • Network traffic isolation
  • Network policy enforcement using ACLs and firewall rules (security groups)
  • IPv4 address range enforcement (via subnet CIDRs)

Why use awsvpc?

Previously, ECS relied on the networking capability provided by Docker’s default networking behavior to set up the network stack for containers. With the default bridge network mode, containers on an instance are connected to each other using the docker0 bridge. Containers use this bridge to communicate with endpoints outside of the instance, using the primary elastic network interface of the instance on which they are running. Containers share and rely on the networking properties of the primary elastic network interface, including the firewall rules (security group subscription) and IP addressing.

This means you cannot address these containers with the IP address allocated by Docker (it’s allocated from a pool of locally scoped addresses), nor can you enforce finely grained network ACLs and firewall rules. Instead, containers are addressable in your VPC by the combination of the IP address of the primary elastic network interface of the instance, and the host port to which they are mapped (either via static or dynamic port mapping). Also, because a single elastic network interface is shared by multiple containers, it can be difficult to create easily understandable network policies for each container.

The awsvpc networking mode addresses these issues by provisioning elastic network interfaces on a per-task basis. Hence, containers no longer share or contend use these resources. This enables you to:

  • Run multiple copies of the container on the same instance using the same container port without needing to do any port mapping or translation, simplifying the application architecture.
  • Extract higher network performance from your applications as they no longer contend for bandwidth on a shared bridge.
  • Enforce finer-grained access controls for your containerized applications by associating security group rules for each Amazon ECS task, thus improving the security for your applications.

Associating security group rules with a container or containers in a task allows you to restrict the ports and IP addresses from which your application accepts network traffic. For example, you can enforce a policy allowing SSH access to your instance, but blocking the same for containers. Alternatively, you could also enforce a policy where you allow HTTP traffic on port 80 for your containers, but block the same for your instances. Enforcing such security group rules greatly reduces the surface area of attack for your instances and containers.

ECS manages the lifecycle and provisioning of elastic network interfaces for your tasks, creating them on-demand and cleaning them up after your tasks stop. You can specify the same properties for the task as you would when launching an EC2 instance. This means that containers in such tasks are:

  • Addressable by IP addresses and the DNS name of the elastic network interface
  • Attachable as ‘IP’ targets to Application Load Balancers and Network Load Balancers
  • Observable from VPC flow logs
  • Access controlled by security groups

­This also enables you to run multiple copies of the same task definition on the same instance, without needing to worry about port conflicts. You benefit from higher performance because you don’t need to perform any port translations or contend for bandwidth on the shared docker0 bridge, as you do with the bridge networking mode.

Getting started

If you don’t already have an ECS cluster, you can create one using the create cluster wizard. In this post, I use “awsvpc-demo” as the cluster name. Also, if you are following along with the command line instructions, make sure that you have the latest version of the AWS CLI or SDK.

Registering the task definition

The only change to make in your task definition for task networking is to set the networkMode parameter to awsvpc. In the ECS console, enter this value for Network Mode.

 

If you plan on registering a container in this task definition with an ECS service, also specify a container port in the task definition. This example specifies an NGINX container exposing port 80:

This creates a task definition named “nginx-awsvpc" with networking mode set to awsvpc. The following commands illustrate registering the task definition from the command line:

$ cat nginx-awsvpc.json
{
        "family": "nginx-awsvpc",
        "networkMode": "awsvpc",
        "containerDefinitions": [
            {
                "name": "nginx",
                "image": "nginx:latest",
                "cpu": 100,
                "memory": 512,
                "essential": true,
                "portMappings": [
                  {
                    "containerPort": 80,
                    "protocol": "tcp"
                  }
                ]
            }
        ]
}

$ aws ecs register-task-definition --cli-input-json file://./nginx-awsvpc.json

Running the task

To run a task with this task definition, navigate to the cluster in the Amazon ECS console and choose Run new task. Specify the task definition as “nginx-awsvpc“. Next, specify the set of subnets in which to run this task. You must have instances registered with ECS in at least one of these subnets. Otherwise, ECS can’t find a candidate instance to attach the elastic network interface.

You can use the console to narrow down the subnets by selecting a value for Cluster VPC:

 

Next, select a security group for the task. For the purposes of this example, create a new security group that allows ingress only on port 80. Alternatively, you can also select security groups that you’ve already created.

Next, run the task by choosing Run Task.

You should have a running task now. If you look at the details of the task, you see that it has an elastic network interface allocated to it, along with the IP address of the elastic network interface:

You can also use the command line to do this:

$ aws ecs run-task --cluster awsvpc-ecs-demo --network-configuration "awsvpcConfiguration={subnets=["subnet-c070009b"],securityGroups=["sg-9effe8e4"]}" nginx-awsvpc $ aws ecs describe-tasks --cluster awsvpc-ecs-demo --task $ECS_TASK_ARN --query tasks[0]
{
    "taskArn": "arn:aws:ecs:us-west-2:xx..x:task/f5xx-...",
    "group": "family:nginx-awsvpc",
    "attachments": [
        {
            "status": "ATTACHED",
            "type": "ElasticNetworkInterface",
            "id": "xx..",
            "details": [
                {
                    "name": "subnetId",
                    "value": "subnet-c070009b"
                },
                {
                    "name": "networkInterfaceId",
                    "value": "eni-b0aaa4b2"
                },
                {
                    "name": "macAddress",
                    "value": "0a:47:e4:7a:2b:02"
                },
                {
                    "name": "privateIPv4Address",
                    "value": "10.0.0.35"
                }
            ]
        }
    ],
    ...
    "desiredStatus": "RUNNING",
    "taskDefinitionArn": "arn:aws:ecs:us-west-2:xx..x:task-definition/nginx-awsvpc:2",
    "containers": [
        {
            "containerArn": "arn:aws:ecs:us-west-2:xx..x:container/62xx-...",
            "taskArn": "arn:aws:ecs:us-west-2:xx..x:task/f5x-...",
            "name": "nginx",
            "networkBindings": [],
            "lastStatus": "RUNNING",
            "networkInterfaces": [
                {
                    "privateIpv4Address": "10.0.0.35",
                    "attachmentId": "xx.."
                }
            ]
        }
    ]
}

When you describe an “awsvpc” task, details of the elastic network interface are returned via the “attachments” object. You can also get this information from the “containers” object. For example:

$ aws ecs describe-tasks --cluster awsvpc-ecs-demo --task $ECS_TASK_ARN --query tasks[0].containers[0].networkInterfaces[0].privateIpv4Address
"10.0.0.35"

Conclusion

The nginx container is now addressable in your VPC via the 10.0.0.35 IPv4 address. You did not have to modify the security group on the instance to allow requests on port 80, thus improving instance security. Also, you ensured that all ports apart from port 80 were blocked for this application without modifying the application itself, which makes it easier to manage your task on the network. You did not have to interact with any of the elastic network interface API operations, as ECS handled all of that for you.

You can read more about the task networking feature in the ECS documentation. For a detailed look at how this new networking mode is implemented on an instance, see Under the Hood: Task Networking for Amazon ECS.

Please use the comments section below to send your feedback.

Help us translate our YouTube videos

Post Syndicated from Alex Bate original https://www.raspberrypi.org/blog/youtube-translations/

As we work to create more content for our YouTube channel, making our videos as accessible as possible is key to serving the growing Raspberry Pi community. And as we push to create more videos linked to our collection of free resources, providing translated subtitles will help to bring our content to more people across the globe.

We need your help to make this happen.

YouTube translations Raspberry Pi

Subtitles for our ‘Getting started with soldering‘ video translated into Portuguese.

Translating YouTube

We recently enabled translation submissions for all our YouTube content, allowing viewers, subscribers, and members of the community to contribute translated subtitles, descriptions, and titles for all of our videos.

YouTube Subtitle translations Raspberry Pi

Once approved, these translated subtitles are available for all viewers of our videos via the closed captioning button on the navigation bar of every video, while translated descriptions and titles will automatically be shown, based on your location. Anyone who has contributed to the translations is automatically credited in the video’s description.

YouTube translations Raspberry Pi

Thanks Mário!

Our aim is to collect translations of our videos in as many languages as possible, including the original English. While YouTube does a great job of using speech-to-text to create automatic subtitles, these aren’t always correct – especially when the videos feature loud background noises and music – so we need to create subtitles in English too.

Submit your own YouTube translations

If you’d like to contribute subtitles for our YouTube videos, you can do so by heading to the Community Contributions page for our channel. Simply pick a video you’d like to translate and work your way through. The system is very easy to navigate and allows you to manage the timing of subtitles, which is very handy. Once complete, your translation will be sent to us to double check. When we’ve approved it, it will be published. If we find any issues with the translation, we’ll let you know via the Community Contributions page.

YouTube translations Raspberry Pi

A sneaky peak into what we see on the other side

If you find a video that’s already been translated, but you see faults in the language and/or grammar used, you can also correct and improve existing translations.

Thank you

If you contribute a translation to any of our videos, make sure you post a comment for the world to see in the video’s comments section. If you have a Twitter account, leave your username in the comment and we’ll make sure to thank you on the official Raspberry Pi account when we’ve approved your submission.

Thank you to everyone who has contributed so far, and to everyone who is now logging into YouTube to take part. It’s things like this that make our community the best out there.

Thank you.

The post Help us translate our YouTube videos appeared first on Raspberry Pi.