We are currently seeking a Software Engineer for a one-year contract, with the possibility of extension for up to four additional one-year periods. The expected annual workload is approximately 1500 hours, and the position allows for remote work. Occasional travel to the client's site in BC may be necessary, with durations ranging from a few days to two weeks, anticipated up to three trips per year and a maximum frequency of one trip per calendar month.
As a Software Engineer, the role will focus on optical and infra-red instrumentation projects involving analysis, design, development, implementation, and testing software for precision opto-mechanical components and systems in astronomical instrumentation. The scope of work includes creating innovative software and integrated hardware/software systems for cutting-edge astronomical instruments such as adaptive optic systems, spectrographs, cameras, and measuring equipment.
The compensation is 100 to 180K CAD annually.
Responsibilities
Code Optimization:
- Design and write highly optimized and efficient code for adaptive optics real-time systems.
- Ensure precise execution of mathematical operations within deterministic timings and achieve extremely low latency.
- Handle scenarios involving multiple CPUs and servers.
Software-Hardware Interface:- Develop a software interface that interacts with common off-the-shelf or custom hardware mechanisms.
- Work with software development kits tailored to specific operating systems and port them to alternate systems.
Standards Adherence:- Follow software standards for coding and use specific programming languages and operating systems.
- Maintain documentation standards embedded within the software and for additional documents such as design or interface documentation.
Control System Development:- Design, build, and test software components controlling and monitoring mechanisms in astronomical instruments.
- Handle multiple physical interfaces (e.g., serial, Ethernet) and software interfaces (e.g., microcontroller-specific, binary, ASCII).
Versatility:- Manage different types of files and program various control systems.
- Control different types of motors and components within the specified systems.
Delivery and Documentation:- Deliver software and tests monthly via a Git repository, ensuring compliance with code coverage requirements.
- Provide in-line documentation within the code; create additional documents using Microsoft Word.
Presentation:- Craft presentation materials, including slides, using Microsoft PowerPoint.
Requirements
- Education:Bachelor’s Degree or higher in Software/Computer/Electrical Engineering, Computer Science, or Physics.
- Experience:
-Proven experience in debugging large, multi-threaded, and multi-process software systems (e.g., 40k lines of code)
-Active participation in organizational engagements related to the analysis, design, and implementation of complex software instrumentation systems for ground-based astronomical observatories. - Knowledge:
-Operating system knowledge preferred, covering tasks like building kernels, installing low-level device drivers, allocation of processes to cores, and debugging network interfaces.
-Familiarity with using a Linux operating system in the design of complex software systems
-Experience with various code development environments and software repositories, preferably Git. - Skills:
-Strong individual knowledge and experience in software development.
-Demonstrated ability in building and testing systems including adaptive optics, real-time control, and opto-mechanical hardware control.
-Experience in developing software for real-time systems relevant to instrument design.
-Proficiency in programming languages such as C, C++/Java, and Python, including shell scripting.
-Documenting software with clarity and completeness.
-Experience with software controlling motors or wavefront sensors in a deterministic manner, coupled with expertise in linear algebra computations, including vectors and matrices.
LinHR is committed to providing accommodations for people with disabilities. If you require an accommodation, we will work with you to meet your needs.Accommodation will be provided in all parts of the hiring process as required under LinHR's Employment Accommodation Policy. Applicants need to make their needs known in advance.LinHR is an equal opportunity employer seeking to live its values in all we do. We are committed to taking proactive steps to provide and create opportunities forhistorically marginalized groups. We seek applicants who will strengthen our commitment to diversity, equality, and inclusion. We strongly encourage qualified candidates from Indigenous, Black and other racialized persons, 2SLGBTQI+ people, individuals with disabilities, and other members of marginalized communities to consider working with and for LinHR. We recognize that structural barriers shape experiences and job qualifications, and therefore we seek to use employment equity to differentiate between candidates who meet the required qualifications. We encourage people to apply even if they feel that the position would be a stretch.