C++ Graphics and Windowing System Software Engineer - Mir at Canonical in Oslo, Oslo, Norway

Apply for the C++ Graphics and Windowing System Software Engineer - Mir position at Canonical in Oslo, Oslo, Norway. Find the best jobs for you effortlessly with InJob.AI, your ultimate solution for job search. Discover top job opportunities and streamline your job search process.

alert circle

Job Description

<div>
 We build a high-performance, high-efficiency stack for window managers and display subsystems in C++, called Mir. We're growing the team and looking for new colleagues who share our passion for precision, performance and user experience.
 <br/>
 <br/>
 Our goal is to enable the whole spectrum of graphics from single-purpose screens through edge devices to full desktop environments. We focus on developers who are building window compositing systems or device graphics experience, and aim to give them an amazing developer experience, security, and easy access to today's most used graphics toolkits and libraries.
 <br/>
 <br/>
 We work on Mir and solutions built on it like Ubuntu Frame, and we also set the pace for graphics enablement across the Ubuntu certified hardware ecosystem. Our daily drill includes design, development and testing of features in those pieces of software as well as responding to issues and user inquiries. Most of the software is written in C++, with support tooling in scripting languages. We're also considering Rust or Carbon as evolutionary steps forward.
 <br/>
 <br/>
 This is an excellent opportunity for someone who wants to have a meaningful impact on modern display technologies that will impact millions of developers. Canonical offers a fast-paced team environment and a career full of learning and development opportunities across the open source spectrum.
 <br/>
 <br/>
 What you will do
 <br/>
 <br/>
 <ul>
  <li>
   Design and implement features across the Mir stack
  </li>
  <li>
   Assist in debugging, tracking down and fixing issues
  </li>
  <li>
   Improve tests and performance benchmarks to catch issues early
  </li>
  <li>
   Create documentation to enhance the developer experience
  </li>
  <li>
   Engage with the open source community and commercial partners
  </li>
  <li>
   Collaborate proactively with a distributed team
   <br/>
   <br/>
  </li>
 </ul>
 <strong>
  Required Skills And Experience
  <br/>
  <br/>
 </strong>
 <ul>
  <li>
   You have excellent, modern C++ programming taste
  </li>
  <li>
   You have a rigorous approach to software design, development and testing
  </li>
  <li>
   You have a solid understanding of asynchronous programming and concurrency patterns
  </li>
  <li>
   You have strong written and verbal communication skills to document and present software developed
  </li>
  <li>
   You are productive collaborating remotely and are highly motivated and organized
  </li>
  <li>
   You are familiar with Linux as a development and deployment platform
  </li>
  <li>
   You have proven ability to consistently deliver robust code to production
  </li>
  <li>
   Bachelor's or equivalent in Computer Science, STEM or similar degree
   <br/>
   <br/>
  </li>
 </ul>
 <strong>
  Desirable Skills And Experience
  <br/>
  <br/>
 </strong>
 <ul>
  <li>
   Experience with the Wayland protocol ecosystem and compositors
  </li>
  <li>
   Familiarity with a range of Linux Desktop Environments
  </li>
  <li>
   Familiarity with OpenGL, Vulkan, and other graphics and animation frameworks
  </li>
  <li>
   You have experience developing and deploying on a Ubuntu/Debian system
   <br/>
   <br/>
  </li>
 </ul>
 What is Canonical?
 <br/>
 <br/>
 Canonical is a growing international software company that works with the open-source community to deliver Ubuntu, "the world's best free software platform". Our services help businesses worldwide to reduce costs, improve efficiency and enhance security with Ubuntu.
 <br/>
 <br/>
 <em>
  We are proud to foster a workplace free from discrimination. Diversity of experience, perspectives, and background create a better work environment and better products. Whatever your identity, we will give your application fair consideration.
  <br/>
  <br/>
 </em>
</div>

AI Powered Job Insights

C++ Graphics and Windowing System Software Engineer Opportunity! Canonical is seeking a skilled professional to join their dynamic team developing the Mir display server. This role is perfect for those passionate about high-performance graphics and user experience. 

📍 Location: Oslo, Oslo, Norway  
💼 Position: C++ Graphics and Windowing System Software Engineer  
⏰ Type: Full-time  
📅 Date Posted: 2024-06-26  

Role Summary:  
- Contribute to the Mir stack development focusing on graphics and window management.  
- Engage in a collaborative environment with a distributed team to enhance user experiences.  
- Take part in the design, implementation, and testing of new features while addressing community and developer feedback.  

What You'll Do:  
- Design and implement features across the Mir stack.  
- Debug and resolve software issues while tracking improvements.  
- Enhance testing and performance benchmarks for early issue detection.  
- Create comprehensive documentation for a better developer experience.  
- Foster relationships within the open-source community and commercial partners.  

What's Needed:  
- Strong experience in modern C++ programming.  
- A detailed-oriented approach to software design, development, and testing.  
- Understanding of asynchronous programming and concurrency patterns.  
- Excellent communication skills for documentation and presentations.  
- Proficiency in working remotely with self-motivation and organization.  
- Familiarity with Linux as a development platform.  
- Proven ability to deliver code reliably in production.  
- A degree in Computer Science, STEM, or a related field.  

Desirable Skills:  
- Experience with Wayland protocol and compositors.  
- Familiarity with various Linux Desktop Environments.  
- Knowledge of OpenGL, Vulkan, and other graphics frameworks.  
- Experience in developing and deploying on Ubuntu/Debian systems.

Top Interview Questions

  • Q: Can you describe a complex feature you designed and implemented in C++ and the challenges you faced during its development?

    A: In a previous role, I designed a custom rendering engine in C++ for a real-time application. One of the biggest challenges was optimizing performance while maintaining high-quality graphical output. I utilized multithreading to improve rendering times and implemented caching strategies to reduce redundant computations. This resulted in a 40% increase in frame rates without sacrificing quality.

  • Q: How do you approach debugging and fixing issues in a large codebase, especially in a complex system like a window manager?

    A: My approach to debugging a large codebase begins with reproducing the issue reliably. I use tools like GDB for step-by-step analysis and valgrind to identify memory leaks. Additionally, I leverage logging to trace the flow of execution and understand where things go wrong. I also break down the problem into smaller sections to isolate where the fault lies, ensuring that each part is functioning correctly before integrating it back into the system.

  • Q: Explain the importance of asynchronous programming in developing responsive applications and how you implement it in C++.

    A: Asynchronous programming is crucial for maintaining responsiveness in applications, especially those that require UI interaction while processing tasks such as rendering or I/O operations. In C++, I utilize features from C++11 and beyond like std::async and std::future to manage concurrency. I also ensure that long-running tasks are offloaded to separate threads, which allows the main thread to handle user interactions smoothly without freezing the application.

  • Q: What tools and methodologies do you use to ensure code quality and performance benchmarking in your projects?

    A: To ensure code quality, I implement a combination of unit testing with frameworks like Google Test, and continuous integration systems to automate testing on code changes. For performance benchmarking, I use profiling tools such as gprof or Valgrind's Callgrind to identify bottlenecks. I regularly conduct performance reviews during development sprints, allowing my team to address potential issues before deployment.

  • Q: Describe your experience with graphics frameworks like OpenGL or Vulkan and how you applied them in past projects.

    A: I have hands-on experience with both OpenGL and Vulkan in various projects. For instance, I used OpenGL to create a 2D game engine where I implemented shader programming and texture management to enhance graphics fidelity. More recently, I worked with Vulkan in a 3D rendering application which required careful resource management and understanding of low-level graphics pipeline operation, resulting in improved performance and better control over rendering processes.

People Faces

200+ professionals have found their dream job with InJob.ai this week.

salary

Salary Benefits

Salary details not provided

application process

Want to apply directly?

Apply for the C++ Graphics and Windowing System Software Engineer - Mir position at Canonical in Oslo, Oslo, Norway using https://www.linkedin.com/jobs/view/3960300486

Get StartedGet Started

Similar Jobs found by InJob.AI


Full Stack Developer (.NET/Angular)

Nigel Frank International, Oslo, Oslo, Norway

Senior Full-Stack Software Engineer

CV Partner, Oslo, Oslo, Norway

Full Stack Engineer

IGA Talent Solutions, Oslo, Norway

Senior Full-Stack Engineer

CatalystOne Solutions, Drammen, Viken, Norway

Senior Full-Stack Engineer

CatalystOne Solutions, Oslo, Oslo, Norway

Scroll To Top
Get Started

Frequently asked Questions

Still have a question? Check out our FAQ section below.

FAQ Section

InJob searches for the best jobs, based on your profile and automatically generates customized cover letters for you. It saves a lot of hours in your job hunting time.

InJob creates your profile by having a conversation with you to learn about your skills and requirements. It also scans your resume to gather information about your experiences, skills, and achievements. This information is used to craft your profile in the backend which is further used to match jobs and gives you a personalized cover letter for each job opportunity.

InJob searches for job opportunities across a wide range of sources, including LinkedIn, Indeed, and hundreds of other job boards to find hidden gems. Its search is not limited, ensuring it covers as many potential job listings as possible. It also searches the career pages of individual companies that suit your target industry and location and you get applied there.

InJob is constantly active, scanning for fresh job opportunities every single minute. This ensures that you are the first person to apply to new job listings that align with your profile.

InJob plays matchmaker by comparing your profile and resume with job listings. Each job receives a score from 1-10, indicating how well you match with it.

In the upcoming update, Yes, this will be included and this will be the main differentiator. InJob will apply for jobs on your behalf. It will target top matches and craft custom cover letters for each job, ensuring your application stands out. InJob will also handle the application process, including visiting company websites and filling out forms.

In the upcoming update, Yes, InJob will provide an interactive dashboard that serves as mission control for your job search. It will display all the jobs InJob has applied for you and their current status. You will also be able to track which companies have shown interest in your profile and view the feedback they provided.

In an upcoming feature, Yes, InJob will collect all feedback, including positive and constructive feedback, and presents it to you. This will allow you to know exactly where you stand in the job market and provides insights on how to improve your skills.