Job details
Canonical is hiring a Python Software Engineer to join the Certification team, who make the tools which enable us to know that a desktop, laptop, server or IoT device is working properly. We work at the interface of hardware and software, so the ideal candidate is a Python developer familiar with hardware. The Certification team develops the tools needed to certify hardware as working with Ubuntu Core as well as Ubuntu Desktop and Server: . We design hardware which can be used to probe devices independently, and frameworks for software tests that check every aspect of Ubuntu on that hardware. This is an excellent opportunity for someone who wants to have a meaningful impact for adoption of Linux across multiple device categories and industries. Canonical offers a fun, fast-paced team environment and a career full of learning and development opportunities. This team is centered in EMEA time zones, and works with colleagues on related teams in both the Americas and APAC. We work together with silicon companies, OEMs, ODMs and teams within Canonical to ensure a smooth, secure out of the box Ubuntu experience, with success in this role leading to a great Ubuntu experience being offered on more and more devices.
Role description
We are looking for a self-motivated software engineer with experience developing in Python, to work on test automation tools or Linux based embedded hardware. This role offers an exciting opportunity to push the industry forward by enabling entirely new Linux based hardware testing capabilities, scaling up hardware certification efforts and allowing for deeper test coverage. The role involves the development and maintenance of Canonical's open source certification tools, supporting the creation of hardware solutions for test automation, and automating our existing processes. We seek out continuous process and tooling improvements as part of expanding the certification test suites, ultimately to improve the quality of Linux experience felt by millions of Linux end users.Key responsibilities
- Maintain and develop new features to our Python based test automation tools like Checkbox, used by both in-house teams and industry partners.
- Invent new ways to enable remote, automated testing.
- Help build the software counterpart to in-house designed testing hardware to help test device enablement (graphics, hotplug, bluetooth, etc).
- Write functional and performance tests to support hardware enablement and to protect from regressions.
- Participate in meetings involving international travel 2-3 times per year.
Required Skills And Experience
- Knowledge of Python programming language.
- Quality oriented, pragmatic approach to software design and implementation.
- Interest in test automation methodologies.
- Previous experience working with Ubuntu or other Linux distributions.
- Ability to be productive in a globally distributed team.
Desired Skills And Experience
- Passion for tinkering: you are a maker.
- Experience working in an agile environment.
- Hardware testing experience, for example in the IoT space.
- Familiarity with the C programming language.
#Stack
#J-18808-LjbffrApply safely
To stay safe in your job search, information on common scams and to get free expert advice, we recommend that you visit SAFERjobs, a non-profit, joint industry and law enforcement organization working to combat job scams.
Notice (8): Use of undefined constant border - assumed 'border' [APP/View/Jobs/externalview.ctp, line 206]Code Context'title'=> empty($job['Company']['hideName']) ? $job['Company']['name'] : 'Confidential Company',
'alt'=> empty($job['Company']['hideName']) ? $job['Company']['name'] : 'Confidential Company',
border=>"0"
$viewFile = '/var/www/html/laimoon/View/Jobs/externalview.ctp' $dataForView = array( 'uaPopup' => '', 'Urls' => array( 'providers' => 'https://providers.laimoon.com', 'recruiters' => 'https://partners.laimoon.com', 'canonical' => 'https://jobs.laimoon.com', 'courses' => 'https://courses.laimoon.com', '7days' => 'http://courses.7daysindubai.com', 'careers' => 'http://careers.7daysindubai.com', 'careerguide' => 'https://laimoon.com', 'jobs' => 'https://jobs.laimoon.com', 'cms' => 'http://cms.laimoon.com', 'profiles' => 'https://profiles.laimoon.com' ), 'availLocations' => array( 'uae' => array( 'name' => 'UAE', 'country_id' => '2', 'country_code' => 'ae', 'slug' => 'uae', 'global_location_id' => '225', 'rel_gloc_ids' => '251,250,249,248,247,246,245,244,225', 'currency' => 'AED', 'currency_name' => 'UAE Dirham', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Dubai', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'saudi' => array( 'name' => 'Saudi Arabia', 'country_id' => '183', 'country_code' => 'sa', 'slug' => 'saudi', 'global_location_id' => '187', 'rel_gloc_ids' => '274,273,272,271,269,268,267,266,265,264,263,262,261,260,259,258,257,256,255,254,253,187', 'currency' => 'SAR', 'currency_name' => 'Saudi Riyal', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Riyadh', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'india' => array( 'name' => 'India', 'country_id' => '99', 'country_code' => 'in', 'slug' => 'india', 'global_location_id' => '100', 'rel_gloc_ids' => '100,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,976,994,1263,1264', 'currency' => 'INR', 'currency_name' => 'Indian Rupee', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Kolkata', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'south-africa' => array( 'name' => 'South Africa', 'country_id' => '236', 'country_code' => 'za', 'slug' => 'south-africa', 'global_location_id' => '197', 'rel_gloc_ids' => '197,498,499,500,501,502,503,504', 'currency' => 'ZAR', 'currency_name' => 'South African Rand', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Africa/Johannesburg', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'egypt' => array( 'name' => 'Egypt', 'country_id' => '61', 'country_code' => 'eg', 'slug' => 'egypt', 'global_location_id' => '64', 'rel_gloc_ids' => '64,955,957,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115', 'currency' => 'EGP', 'currency_name' => 'Egyptian pound', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Africa/Cairo', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'singapore' => array( 'name' => 'Singapore', 'country_id' => '188', 'country_code' => 'sg', 'slug' => 'singapore', 'global_location_id' => '192', 'rel_gloc_ids' => '192,382,432,438,445,453', 'currency' => 'SGD', 'currency_name' => 'Singapore Dollar', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Singapore', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'qatar' => array( 'name' => 'Qatar', 'country_id' => '178', 'country_code' => 'qa', 'slug' => 'qatar', 'global_location_id' => '176', 'rel_gloc_ids' => '176,252', 'currency' => 'QAR', 'currency_name' => 'Qatar Rial', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Qatar', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'pakistan' => array( 'name' => 'Pakistan', 'country_id' => '169', 'country_code' => 'pk', 'slug' => 'pakistan', 'global_location_id' => '164', 'rel_gloc_ids' => '164,979,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071', 'currency' => 'PKR', 'currency_name' => 'Pakistani rupee', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Karachi', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'kuwait' => array( 'name' => 'Kuwait', 'country_id' => '116', 'country_code' => 'kw', 'slug' => 'kuwait', 'global_location_id' => '116', 'rel_gloc_ids' => '116,276,277,278,279,280,281', 'currency' => 'KWD', 'currency_name' => 'Kuwait Dinar', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Kuwait', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'oman' => array( 'name' => 'Oman', 'country_id' => '163', 'country_code' => 'om', 'slug' => 'oman', 'global_location_id' => '163', 'rel_gloc_ids' => '163,282,283,284,285,286,287,288,289,290,291', 'currency' => 'OMR', 'currency_name' => 'Oman Rial', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Muscat', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'jordan' => array( 'name' => 'Jordan', 'country_id' => '106', 'country_code' => 'jo', 'slug' => 'jordan', 'global_location_id' => '110', 'rel_gloc_ids' => '110,958,959,1101,1247,1246,1245,1244,1243,1242,1241,1240,1239', 'currency' => 'JOD', 'currency_name' => 'Jordanian Dinar', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Amman', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'philippines' => array( 'name' => 'Philippines', 'country_id' => '168', 'country_code' => 'ph', 'slug' => 'philippines', 'global_location_id' => '171', 'rel_gloc_ids' => '171,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,1262', 'currency' => 'PHP', 'currency_name' => 'Philippine Peso', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Manila', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'bahrain' => array( 'name' => 'Bahrain', 'country_id' => '23', 'country_code' => 'bh', 'slug' => 'bahrain', 'global_location_id' => '17', 'rel_gloc_ids' => '17,292,293,294,295,314,297,298,299,300,301,302,303,304,1276,1277', 'currency' => 'BHD', 'currency_name' => 'Bahrain Dinar', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Bahrain', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'sri-lanka' => array( 'name' => 'Sri Lanka', 'country_id' => '123', 'country_code' => 'lk', 'slug' => 'sri-lanka', 'global_location_id' => '200', 'rel_gloc_ids' => '200,1047,1048,1049,1084,1085,1086', 'currency' => 'LKR', 'currency_name' => 'Sri Lankan rupee', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Colombo', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'united-kingdom' => array( 'name' => 'United Kingdom', 'country_id' => '74', 'country_code' => 'gb', 'slug' => 'united-kingdom', 'global_location_id' => '226', 'rel_gloc_ids' => '226,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1050,1259,1260,1261,1267', 'currency' => 'GBP', 'currency_name' => 'British Pound', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/London', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'malaysia' => array( 'name' => 'Malaysia', 'country_id' => '149', 'country_code' => 'my', 'slug' => 'malaysia', 'global_location_id' => '131', 'rel_gloc_ids' => '131,131,980,1051', 'currency' => 'MYR', 'currency_name' => 'Ringgit', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Kuala_Lumpur', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'nepal' => array( 'name' => 'Nepal', 'country_id' => '159', 'country_code' => 'np', 'slug' => 'nepal', 'global_location_id' => '151', 'rel_gloc_ids' => '151,981,1096,1097,1098', 'currency' => 'NPR', 'currency_name' => 'Nepalese Rupee', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Kathmandu', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'nigeria' => array( 'name' => 'Nigeria', 'country_id' => '155', 'country_code' => 'ng', 'slug' => 'nigeria', 'global_location_id' => '158', 'rel_gloc_ids' => '158,995,996,997,1095', 'currency' => 'NGN', 'currency_name' => 'Nigerian Naira', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Africa/Lagos ', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'newzealand' => array( 'name' => 'New Zealand', 'country_id' => '162', 'country_code' => 'nz', 'slug' => 'newzealand', 'global_location_id' => '155', 'rel_gloc_ids' => '155,998,999,1080,1081,1082,1083', 'currency' => 'NZD', 'currency_name' => 'New Zealand Dollar', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Pacific/Auckland', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'brasil' => array( 'name' => 'Brasil', 'country_id' => '29', 'country_code' => 'br', 'slug' => 'brasil', 'global_location_id' => '30', 'rel_gloc_ids' => '30,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013', 'currency' => 'BRL', 'currency_name' => 'Brazilian Real', 'languages' => 'pt', 'default_language' => 'pt', 'country_time_zone' => 'America/Sao_Paulo', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'portugal' => array( 'name' => 'Portugal', 'country_id' => '175', 'country_code' => 'pt', 'slug' => 'portugal', 'global_location_id' => '174', 'rel_gloc_ids' => '174,1014,1015,1087,1088,1089,1090', 'currency' => 'EUR', 'currency_name' => 'Euro', 'languages' => 'pt', 'default_language' => 'pt', 'country_time_zone' => 'Europe/Lisbon', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'canada' => array( 'name' => 'Canada', 'country_id' => '36', 'country_code' => 'ca', 'slug' => 'canada', 'global_location_id' => '38', 'rel_gloc_ids' => '38,1019,1020,1021,1022,1023,1024,1025', 'currency' => 'CAD', 'currency_name' => 'Canadian Dollar', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Canada/Saskatchewan', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'united-states' => array( 'name' => 'United States', 'country_id' => '221', 'country_code' => 'us', 'slug' => 'united-states', 'global_location_id' => '227', 'rel_gloc_ids' => '227,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326', 'currency' => 'USD', 'currency_name' => 'US Dollar', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'America/New_York', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'angola' => array( 'name' => 'Angola', 'country_id' => '9', 'country_code' => 'ao', 'slug' => 'angola', 'global_location_id' => '6', 'rel_gloc_ids' => '6,1016,1091,1092,1093,1094', 'currency' => 'AOA', 'currency_name' => 'Angolan Kwanza', 'languages' => 'pt', 'default_language' => 'pt', 'country_time_zone' => 'Africa/Luanda', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'australia' => array( 'name' => 'Australia', 'country_id' => '14', 'country_code' => 'au', 'slug' => 'australia', 'global_location_id' => '13', 'rel_gloc_ids' => '13,1026,1027,1028,1029,1030', 'currency' => 'AUD', 'currency_name' => 'Australian Dollar', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Australia/Melbourne', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'kenya' => array( 'name' => 'Kenya', 'country_id' => '108', 'country_code' => 'ke', 'slug' => 'kenya', 'global_location_id' => '112', 'rel_gloc_ids' => '112,1031,1032,1075,1076,1077,1078,1079', 'currency' => 'KES', 'currency_name' => 'Kenyan Shilling', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Africa/Nairobi', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'ghana' => array( 'name' => 'Ghana', 'country_id' => '78', 'country_code' => 'gh', 'slug' => 'ghana', 'global_location_id' => '83', 'rel_gloc_ids' => '83,1033,1034,1072,1073,1074', 'currency' => 'GHS', 'currency_name' => 'Ghanaian Cedi', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Africa/Accra', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'ireland' => array( 'name' => 'Ireland', 'country_id' => '98', 'country_code' => 'ie', 'slug' => 'ireland', 'global_location_id' => '104', 'rel_gloc_ids' => '104,104,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416', 'currency' => 'EUR', 'currency_name' => 'Euro', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/Dublin', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'vietnam' => array( 'name' => 'Vietnam', 'country_id' => '229', 'country_code' => 'vn', 'slug' => 'vietnam', 'global_location_id' => '234', 'rel_gloc_ids' => '234,1170,1171', 'currency' => 'VND', 'currency_name' => 'Vietnamese Dong', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Ho_Chi_Minh', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'cyprus' => array( 'name' => 'Cyprus', 'country_id' => '51', 'country_code' => 'cy', 'slug' => 'cyprus', 'global_location_id' => '55', 'rel_gloc_ids' => '55,1230,1231,1232,1233', 'currency' => 'EUR', 'currency_name' => 'Euro', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/Nicosia', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'malta' => array( 'name' => 'Malta', 'country_id' => '144', 'country_code' => 'mt', 'slug' => 'malta', 'global_location_id' => '134', 'rel_gloc_ids' => '134,1255,1254,1253,1252,1251,1250,1249,1248', 'currency' => 'EUR', 'currency_name' => 'Euro', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/Malta', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'maldives' => array( 'name' => 'Maldives', 'country_id' => '146', 'country_code' => 'mv', 'slug' => 'maldives', 'global_location_id' => '132', 'rel_gloc_ids' => '132,1172', 'currency' => 'MVR', 'currency_name' => 'Maldivian rufiyaa', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Indian/Maldives', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'turkey' => array( 'name' => 'Turkey', 'country_id' => '213', 'country_code' => 'tr', 'slug' => 'turkey', 'global_location_id' => '219', 'rel_gloc_ids' => '219,1173,1174,1175,1176', 'currency' => 'TRY', 'currency_name' => 'Turkish lira', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/Istanbul', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'thailand' => array( 'name' => 'Thailand', 'country_id' => '206', 'country_code' => 'th', 'slug' => 'thailand', 'global_location_id' => '213', 'rel_gloc_ids' => '213,1177', 'currency' => 'THB', 'currency_name' => 'Baht', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Bangkok', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'hong-kong' => array( 'name' => 'Hong Kong', 'country_id' => '91', 'country_code' => 'hk', 'slug' => 'hong-kong', 'global_location_id' => '97', 'rel_gloc_ids' => '97', 'currency' => 'HKD', 'currency_name' => 'Hong Kong dollar', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Hong_Kong', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'germany' => array( 'name' => 'Germany', 'country_id' => '53', 'country_code' => 'de', 'slug' => 'germany', 'global_location_id' => '82', 'rel_gloc_ids' => '82,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187', 'currency' => 'EUR', 'currency_name' => 'Euro', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/Berlin', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'netherlands' => array( 'name' => 'Netherlands', 'country_id' => '157', 'country_code' => 'nl', 'slug' => 'netherlands', 'global_location_id' => '152', 'rel_gloc_ids' => '152,1188,1189,1190,1191,1192,1193', 'currency' => 'EUR', 'currency_name' => 'Euro', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/Amsterdam', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'japan' => array( 'name' => 'Japan', 'country_id' => '107', 'country_code' => 'jp', 'slug' => 'japan', 'global_location_id' => '108', 'rel_gloc_ids' => '108,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337', 'currency' => 'YEN', 'currency_name' => 'Japanese yen', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Search Results Web results Asia/Tokyo', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'global' => array( 'name' => 'Global', 'country_id' => (int) 251, 'country_code' => 'on', 'slug' => 'global', 'global_location_id' => '275', 'rel_gloc_ids' => '275', 'currency' => 'USD', 'currency_name' => 'US Dollar', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => null, 'job_location' => '0', 'published' => '1', 'show' => '1' ) ), 'currentLocation' => array( 'name' => 'Bahrain', 'country_id' => '23', 'country_code' => 'bh', 'slug' => 'bahrain', 'global_location_id' => '17', 'rel_gloc_ids' => '17,292,293,294,295,314,297,298,299,300,301,302,303,304,1276,1277', 'currency' => 'BHD', 'currency_name' => 'Bahrain Dinar', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Bahrain', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'cityLists' => array( (int) 0 => array( 'name' => 'Dubai', 'slug' => 'dubai' ), (int) 1 => array( 'name' => 'Abu Dhabi', 'slug' => 'abu-dhabi' ), (int) 2 => array( 'name' => 'Ras al Khaimah', 'slug' => 'ras-al-khaimah' ), (int) 3 => array( 'name' => 'Al Ain', 'slug' => 'al-ain' ), (int) 4 => array( 'name' => 'Sharjah', 'slug' => 'sharjah' ), (int) 5 => array( 'name' => 'Fujairah', 'slug' => 'fujairah' ), (int) 6 => array( 'name' => 'Ajman', 'slug' => 'ajman' ), (int) 7 => array( 'name' => 'Umm Al Quwain', 'slug' => 'umm-al-quwain' ) ), 'menuState' => 'loggedoutmenu', 'showCVReviewLink' => true, 'profileInfo' => array( 'locations' => array( (int) 2 => 'UAE' ), 'searchKey' => '', 'guest' => (int) 1, 'jobCount' => '29649', 'contributedJobCount' => '24', 'courseCount' => null ), 'environment' => 'production', 'langUrlPrefix' => '', 'langUrl' => 'https://jobs.laimoon.com/', 'themeUrl' => 'https://jobs.laimoon.com/', 'siteUrl' => 'https://jobs.laimoon.com/', 'staticUrl' => 'https://cdn.laimoon.com/jobs/', 'langCode' => 'en', 'pageScripts' => array( (int) 0 => 'page_script' ), 'pageName' => 'externalview', 'courseUrl' => 'https://courses.laimoon.com/', 'onlineCourses' => array(), 'job' => array( 'Job' => array( 'id' => '44075113', 'contact_id' => '3773199', 'recruiter_id' => '74726', 'job_function_id' => null, 'title' => 'Python Software Engineer - Ubuntu Hardware Certification Team', 'vacancies' => null, 'job_type_id' => null, 'description' => null, 'pay_status' => 'Free', 'external_job_description' => '<p> Canonical is hiring a Python Software Engineer to join the Certification team, who make the tools which enable us to know that a desktop, laptop, server or IoT device is working properly. We work at the interface of hardware and software, so the ideal candidate is a Python developer familiar with hardware. </p><p> The Certification team develops the tools needed to certify hardware as working with Ubuntu Core as well as Ubuntu Desktop and Server: . </p><p> We design hardware which can be used to probe devices independently, and frameworks for software tests that check every aspect of Ubuntu on that hardware. This is an excellent opportunity for someone who wants to have a meaningful impact for adoption of Linux across multiple device categories and industries. Canonical offers a fun, fast-paced team environment and a career full of learning and development opportunities. This team is centered in EMEA time zones, and works with colleagues on related teams in both the Americas and APAC. </p><p> We work together with silicon companies, OEMs, ODMs and teams within Canonical to ensure a smooth, secure out of the box Ubuntu experience, with success in this role leading to a great Ubuntu experience being offered on more and more devices. </p><h3> Role description </h3><p> We are looking for a self-motivated software engineer with experience developing in Python, to work on test automation tools or Linux based embedded hardware. This role offers an exciting opportunity to push the industry forward by enabling entirely new Linux based hardware testing capabilities, scaling up hardware certification efforts and allowing for deeper test coverage. </p><p> The role involves the development and maintenance of Canonical's open source certification tools, supporting the creation of hardware solutions for test automation, and automating our existing processes. We seek out continuous process and tooling improvements as part of expanding the certification test suites, ultimately to improve the quality of Linux experience felt by millions of Linux end users. </p><h3> Key responsibilities </h3><ul><li> Maintain and develop new features to our Python based test automation tools like Checkbox, used by both in-house teams and industry partners. </li><li> Invent new ways to enable remote, automated testing. </li><li> Help build the software counterpart to in-house designed testing hardware to help test device enablement (graphics, hotplug, bluetooth, etc). </li><li> Write functional and performance tests to support hardware enablement and to protect from regressions. </li><li> Participate in meetings involving international travel 2-3 times per year. </li></ul><h3> Required Skills And Experience </h3><ul><li> Knowledge of Python programming language. </li><li> Quality oriented, pragmatic approach to software design and implementation. </li><li> Interest in test automation methodologies. </li><li> Previous experience working with Ubuntu or other Linux distributions. </li><li> Ability to be productive in a globally distributed team. </li></ul><h3> Desired Skills And Experience </h3><ul><li> Passion for tinkering: you are a maker. </li><li> Experience working in an agile environment. </li><li> Hardware testing experience, for example in the IoT space. </li><li> Familiarity with the C programming language. </li></ul><p><b> What is Canonical?</b></p><p> 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. </p><p><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. </em></p><h3>#Stack </h3>#J-18808-Ljbffr', 'course_qualifications' => null, 'global_location_id' => '17', 'gender' => '0', 'baseSalary' => null, 'salary_duration' => 'Monthly', 'job_type' => 'Full time', 'salaryFrom' => null, 'salaryTo' => null, 'currency_id' => null, 'hide_salary' => '0', 'benefits' => null, 'salary_type_id' => null, 'travel_type_id' => null, 'travel_id' => null, 'education_id' => null, 'education_background' => null, 'language_id' => null, 'position_level_id' => null, 'position_type' => null, 'number_of_staffs_mange' => null, 'experiance' => null, 'sales_experience' => null, 'sales_focus' => null, 'sales_cycle_id' => null, 'reporting_to' => null, 'otherAssignments' => null, 'otherConsiderations' => null, 'ideal_candidate' => null, 'company_info' => null, 'company_id' => '344251', 'company_name' => 'Canonical', 'external_apply_url' => 'https://bh.jooble.org/external/1141448621276725353?cpc=d0FU&utm_source=affiliate&utm_medium=laimoon_organic_bh&extra_ars_request_id=48329ffa22e5383a1881ee680ecce93a', 'external_short_url' => '1141448621276725353', 'apply_url' => null, 'contributed' => '0', 'created' => '2024-08-22 12:43:53', 'published' => '2024-08-22 12:43:53', 'closed_time' => null, 'updated' => '2024-08-22 12:43:53', 'hideCompany' => null, 'hide_contact_info' => '0', 'application_count' => '0', 'closed' => '0', 'draft' => '0', 'rejected' => '0', 'deleted' => '0', 'moderated' => '1', 'boosted' => '0', 'rejectnote' => null, 'job_extended' => '0', 'purchased' => '0', 'seeder_id' => '113', 'source_id' => 'jooble', 'course_keywords' => null, 'shortlist_magic_applied' => '0', 'shortlist_magic_keywords' => null, 'living_in' => '0', 'age_limit' => null, 'is_managerial' => '0', 'application_email' => null, 'quality_score' => null, 'reopened' => '0', 'quality_type' => 'White', 'promoted' => '0' ), 'Recruiter' => array( 'first_name' => 'Jooble Jobs', 'last_name' => null, 'recruiter_type' => 'company' ), 'GlobalLocation' => array( 'id' => '17', 'display_name' => 'Bahrain', 'name_ar' => 'البحرين', 'country_id' => '23', 'Country' => array( [maximum depth reached] ) ), 'Company' => array( 'id' => '344251', 'name' => 'Canonical', 'website' => 'http://canonical.com', 'verified' => '0', 'photo' => 'CANONICAL_50e08520-be73-11eb-b4fd-f30d5c6a414d.jpeg', 'details' => null, 'display_details' => '' ), 'Industry' => array(), 'Tag' => array() ), 'jobsList' => array(), 'courses' => array(), 'promotedCourses' => array(), 'referer' => '/', 'urlKeyword' => 'Python ', 'profile' => array( 'locations' => array( (int) 2 => 'UAE' ), 'searchKey' => '', 'guest' => (int) 1, 'jobCount' => '29649', 'contributedJobCount' => '24', 'courseCount' => null ), 'askLogin' => true, 'jobLinkTitle' => 'Python ', 'renderSchema' => 'yes', 'title_for_layout' => 'Python Software Engineer - Ubuntu Hardware Certification Team jobs in Canonical in Bahrain.', 'page_description' => 'Apply to Python Software Engineer - Ubuntu Hardware Certification Team jobs in Canonical in Bahrain.Find similar vacancies, jobs and salary information in Bahrain.', 'locationForTitle' => 'Bahrain', 'currentJobCity' => array( 'id' => '17', 'display_name' => 'Bahrain', 'name_ar' => 'البحرين', 'country_id' => '23', 'Country' => array( 'name' => 'Bahrain', 'id' => '23', 'slug' => 'bahrain', 'code' => 'BH' ) ), 'jobCompanyPage' => array( 'CompanyPage' => array( 'id' => '102078', 'title' => 'Canonical', 'slug' => 'canonical-2', 'description' => '', 'meta_title' => 'Jobs from Canonical', 'meta_description' => 'Jobs from Canonical', 'meta_keywords' => 'Jobs from Canonical', 'draft' => '0' ), 'CompanyPageTranslation' => array( 'id' => '102060', 'company_page_id' => '102078', 'title' => 'Canonical', 'slug' => 'canonical-2', 'summary' => null, 'description' => '', 'meta_title' => 'Jobs from Canonical', 'meta_description' => 'Jobs from Canonical', 'meta_keywords' => 'Jobs from Canonical', 'company_matching_keywords' => null, 'draft' => '0', 'lang_code' => 'en' ) ), 'location' => 'Bahrain', 'breadCrumbs' => array( 'Job Details' => '' ), 'relCourseBanner' => array( 'title' => 'Python , Software ', 'relatedUrl' => 'https://courses.laimoon.com/search/Python | Software ', 'course_category_id' => '', 'relatedOnlineUrl' => 'https://courses.laimoon.com/search/Python | Software ?fromloc=online&' ), 'published' => '2024-08-22 12:43:53', 'daysleft' => (float) 9, 'isLoggedIn' => false, 'facebookSession' => null, 'fbConfig' => array( 'AppId' => '151651858238476', 'APIKey' => '1c032aa6c89b302e8ec5dea94dc89104', 'AppSecret' => 'f2b69d3a25fe65601f146efe7178e72a' ), 'linkedInConfig' => array( 'APIKey' => '779yus3aqi524z', 'AppSecret' => 'XCdGJxUokce5Ygf6' ), 'criticalCSSes' => array( 'jobdetail' => 'jobdetail-critical-css', 'companylist' => 'companylist-critical-css', 'companyview' => 'companyview-critical-css', 'agencylist' => 'agencylist-critical-css', 'agencyview' => 'agencyview-critical-css', 'laimoonverified' => 'laimoonverified-critical-css', 'seopages' => 'seopages-critical-css', 'externalview' => 'externalview-critical-css', 'popularjobsearches' => 'popularjobsearches-critical-css' ), 'basicProfileIncomplete' => true ) $uaPopup = '' $Urls = array( 'providers' => 'https://providers.laimoon.com', 'recruiters' => 'https://partners.laimoon.com', 'canonical' => 'https://jobs.laimoon.com', 'courses' => 'https://courses.laimoon.com', '7days' => 'http://courses.7daysindubai.com', 'careers' => 'http://careers.7daysindubai.com', 'careerguide' => 'https://laimoon.com', 'jobs' => 'https://jobs.laimoon.com', 'cms' => 'http://cms.laimoon.com', 'profiles' => 'https://profiles.laimoon.com' ) $availLocations = array( 'uae' => array( 'name' => 'UAE', 'country_id' => '2', 'country_code' => 'ae', 'slug' => 'uae', 'global_location_id' => '225', 'rel_gloc_ids' => '251,250,249,248,247,246,245,244,225', 'currency' => 'AED', 'currency_name' => 'UAE Dirham', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Dubai', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'saudi' => array( 'name' => 'Saudi Arabia', 'country_id' => '183', 'country_code' => 'sa', 'slug' => 'saudi', 'global_location_id' => '187', 'rel_gloc_ids' => '274,273,272,271,269,268,267,266,265,264,263,262,261,260,259,258,257,256,255,254,253,187', 'currency' => 'SAR', 'currency_name' => 'Saudi Riyal', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Riyadh', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'india' => array( 'name' => 'India', 'country_id' => '99', 'country_code' => 'in', 'slug' => 'india', 'global_location_id' => '100', 'rel_gloc_ids' => '100,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,976,994,1263,1264', 'currency' => 'INR', 'currency_name' => 'Indian Rupee', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Kolkata', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'south-africa' => array( 'name' => 'South Africa', 'country_id' => '236', 'country_code' => 'za', 'slug' => 'south-africa', 'global_location_id' => '197', 'rel_gloc_ids' => '197,498,499,500,501,502,503,504', 'currency' => 'ZAR', 'currency_name' => 'South African Rand', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Africa/Johannesburg', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'egypt' => array( 'name' => 'Egypt', 'country_id' => '61', 'country_code' => 'eg', 'slug' => 'egypt', 'global_location_id' => '64', 'rel_gloc_ids' => '64,955,957,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115', 'currency' => 'EGP', 'currency_name' => 'Egyptian pound', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Africa/Cairo', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'singapore' => array( 'name' => 'Singapore', 'country_id' => '188', 'country_code' => 'sg', 'slug' => 'singapore', 'global_location_id' => '192', 'rel_gloc_ids' => '192,382,432,438,445,453', 'currency' => 'SGD', 'currency_name' => 'Singapore Dollar', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Singapore', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'qatar' => array( 'name' => 'Qatar', 'country_id' => '178', 'country_code' => 'qa', 'slug' => 'qatar', 'global_location_id' => '176', 'rel_gloc_ids' => '176,252', 'currency' => 'QAR', 'currency_name' => 'Qatar Rial', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Qatar', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'pakistan' => array( 'name' => 'Pakistan', 'country_id' => '169', 'country_code' => 'pk', 'slug' => 'pakistan', 'global_location_id' => '164', 'rel_gloc_ids' => '164,979,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071', 'currency' => 'PKR', 'currency_name' => 'Pakistani rupee', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Karachi', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'kuwait' => array( 'name' => 'Kuwait', 'country_id' => '116', 'country_code' => 'kw', 'slug' => 'kuwait', 'global_location_id' => '116', 'rel_gloc_ids' => '116,276,277,278,279,280,281', 'currency' => 'KWD', 'currency_name' => 'Kuwait Dinar', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Kuwait', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'oman' => array( 'name' => 'Oman', 'country_id' => '163', 'country_code' => 'om', 'slug' => 'oman', 'global_location_id' => '163', 'rel_gloc_ids' => '163,282,283,284,285,286,287,288,289,290,291', 'currency' => 'OMR', 'currency_name' => 'Oman Rial', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Muscat', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'jordan' => array( 'name' => 'Jordan', 'country_id' => '106', 'country_code' => 'jo', 'slug' => 'jordan', 'global_location_id' => '110', 'rel_gloc_ids' => '110,958,959,1101,1247,1246,1245,1244,1243,1242,1241,1240,1239', 'currency' => 'JOD', 'currency_name' => 'Jordanian Dinar', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Amman', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'philippines' => array( 'name' => 'Philippines', 'country_id' => '168', 'country_code' => 'ph', 'slug' => 'philippines', 'global_location_id' => '171', 'rel_gloc_ids' => '171,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,1262', 'currency' => 'PHP', 'currency_name' => 'Philippine Peso', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Manila', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'bahrain' => array( 'name' => 'Bahrain', 'country_id' => '23', 'country_code' => 'bh', 'slug' => 'bahrain', 'global_location_id' => '17', 'rel_gloc_ids' => '17,292,293,294,295,314,297,298,299,300,301,302,303,304,1276,1277', 'currency' => 'BHD', 'currency_name' => 'Bahrain Dinar', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Bahrain', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'sri-lanka' => array( 'name' => 'Sri Lanka', 'country_id' => '123', 'country_code' => 'lk', 'slug' => 'sri-lanka', 'global_location_id' => '200', 'rel_gloc_ids' => '200,1047,1048,1049,1084,1085,1086', 'currency' => 'LKR', 'currency_name' => 'Sri Lankan rupee', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Colombo', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'united-kingdom' => array( 'name' => 'United Kingdom', 'country_id' => '74', 'country_code' => 'gb', 'slug' => 'united-kingdom', 'global_location_id' => '226', 'rel_gloc_ids' => '226,1035,1036,1037,1038,1039,1040,1041,1042,1043,1044,1045,1046,1050,1259,1260,1261,1267', 'currency' => 'GBP', 'currency_name' => 'British Pound', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/London', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'malaysia' => array( 'name' => 'Malaysia', 'country_id' => '149', 'country_code' => 'my', 'slug' => 'malaysia', 'global_location_id' => '131', 'rel_gloc_ids' => '131,131,980,1051', 'currency' => 'MYR', 'currency_name' => 'Ringgit', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Kuala_Lumpur', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'nepal' => array( 'name' => 'Nepal', 'country_id' => '159', 'country_code' => 'np', 'slug' => 'nepal', 'global_location_id' => '151', 'rel_gloc_ids' => '151,981,1096,1097,1098', 'currency' => 'NPR', 'currency_name' => 'Nepalese Rupee', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Kathmandu', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'nigeria' => array( 'name' => 'Nigeria', 'country_id' => '155', 'country_code' => 'ng', 'slug' => 'nigeria', 'global_location_id' => '158', 'rel_gloc_ids' => '158,995,996,997,1095', 'currency' => 'NGN', 'currency_name' => 'Nigerian Naira', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Africa/Lagos ', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'newzealand' => array( 'name' => 'New Zealand', 'country_id' => '162', 'country_code' => 'nz', 'slug' => 'newzealand', 'global_location_id' => '155', 'rel_gloc_ids' => '155,998,999,1080,1081,1082,1083', 'currency' => 'NZD', 'currency_name' => 'New Zealand Dollar', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Pacific/Auckland', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'brasil' => array( 'name' => 'Brasil', 'country_id' => '29', 'country_code' => 'br', 'slug' => 'brasil', 'global_location_id' => '30', 'rel_gloc_ids' => '30,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013', 'currency' => 'BRL', 'currency_name' => 'Brazilian Real', 'languages' => 'pt', 'default_language' => 'pt', 'country_time_zone' => 'America/Sao_Paulo', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'portugal' => array( 'name' => 'Portugal', 'country_id' => '175', 'country_code' => 'pt', 'slug' => 'portugal', 'global_location_id' => '174', 'rel_gloc_ids' => '174,1014,1015,1087,1088,1089,1090', 'currency' => 'EUR', 'currency_name' => 'Euro', 'languages' => 'pt', 'default_language' => 'pt', 'country_time_zone' => 'Europe/Lisbon', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'canada' => array( 'name' => 'Canada', 'country_id' => '36', 'country_code' => 'ca', 'slug' => 'canada', 'global_location_id' => '38', 'rel_gloc_ids' => '38,1019,1020,1021,1022,1023,1024,1025', 'currency' => 'CAD', 'currency_name' => 'Canadian Dollar', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Canada/Saskatchewan', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'united-states' => array( 'name' => 'United States', 'country_id' => '221', 'country_code' => 'us', 'slug' => 'united-states', 'global_location_id' => '227', 'rel_gloc_ids' => '227,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325,1326', 'currency' => 'USD', 'currency_name' => 'US Dollar', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'America/New_York', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'angola' => array( 'name' => 'Angola', 'country_id' => '9', 'country_code' => 'ao', 'slug' => 'angola', 'global_location_id' => '6', 'rel_gloc_ids' => '6,1016,1091,1092,1093,1094', 'currency' => 'AOA', 'currency_name' => 'Angolan Kwanza', 'languages' => 'pt', 'default_language' => 'pt', 'country_time_zone' => 'Africa/Luanda', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'australia' => array( 'name' => 'Australia', 'country_id' => '14', 'country_code' => 'au', 'slug' => 'australia', 'global_location_id' => '13', 'rel_gloc_ids' => '13,1026,1027,1028,1029,1030', 'currency' => 'AUD', 'currency_name' => 'Australian Dollar', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Australia/Melbourne', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'kenya' => array( 'name' => 'Kenya', 'country_id' => '108', 'country_code' => 'ke', 'slug' => 'kenya', 'global_location_id' => '112', 'rel_gloc_ids' => '112,1031,1032,1075,1076,1077,1078,1079', 'currency' => 'KES', 'currency_name' => 'Kenyan Shilling', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Africa/Nairobi', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'ghana' => array( 'name' => 'Ghana', 'country_id' => '78', 'country_code' => 'gh', 'slug' => 'ghana', 'global_location_id' => '83', 'rel_gloc_ids' => '83,1033,1034,1072,1073,1074', 'currency' => 'GHS', 'currency_name' => 'Ghanaian Cedi', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Africa/Accra', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'ireland' => array( 'name' => 'Ireland', 'country_id' => '98', 'country_code' => 'ie', 'slug' => 'ireland', 'global_location_id' => '104', 'rel_gloc_ids' => '104,104,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416', 'currency' => 'EUR', 'currency_name' => 'Euro', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/Dublin', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'vietnam' => array( 'name' => 'Vietnam', 'country_id' => '229', 'country_code' => 'vn', 'slug' => 'vietnam', 'global_location_id' => '234', 'rel_gloc_ids' => '234,1170,1171', 'currency' => 'VND', 'currency_name' => 'Vietnamese Dong', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Ho_Chi_Minh', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'cyprus' => array( 'name' => 'Cyprus', 'country_id' => '51', 'country_code' => 'cy', 'slug' => 'cyprus', 'global_location_id' => '55', 'rel_gloc_ids' => '55,1230,1231,1232,1233', 'currency' => 'EUR', 'currency_name' => 'Euro', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/Nicosia', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'malta' => array( 'name' => 'Malta', 'country_id' => '144', 'country_code' => 'mt', 'slug' => 'malta', 'global_location_id' => '134', 'rel_gloc_ids' => '134,1255,1254,1253,1252,1251,1250,1249,1248', 'currency' => 'EUR', 'currency_name' => 'Euro', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/Malta', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'maldives' => array( 'name' => 'Maldives', 'country_id' => '146', 'country_code' => 'mv', 'slug' => 'maldives', 'global_location_id' => '132', 'rel_gloc_ids' => '132,1172', 'currency' => 'MVR', 'currency_name' => 'Maldivian rufiyaa', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Indian/Maldives', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'turkey' => array( 'name' => 'Turkey', 'country_id' => '213', 'country_code' => 'tr', 'slug' => 'turkey', 'global_location_id' => '219', 'rel_gloc_ids' => '219,1173,1174,1175,1176', 'currency' => 'TRY', 'currency_name' => 'Turkish lira', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/Istanbul', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'thailand' => array( 'name' => 'Thailand', 'country_id' => '206', 'country_code' => 'th', 'slug' => 'thailand', 'global_location_id' => '213', 'rel_gloc_ids' => '213,1177', 'currency' => 'THB', 'currency_name' => 'Baht', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Bangkok', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'hong-kong' => array( 'name' => 'Hong Kong', 'country_id' => '91', 'country_code' => 'hk', 'slug' => 'hong-kong', 'global_location_id' => '97', 'rel_gloc_ids' => '97', 'currency' => 'HKD', 'currency_name' => 'Hong Kong dollar', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Asia/Hong_Kong', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'germany' => array( 'name' => 'Germany', 'country_id' => '53', 'country_code' => 'de', 'slug' => 'germany', 'global_location_id' => '82', 'rel_gloc_ids' => '82,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187', 'currency' => 'EUR', 'currency_name' => 'Euro', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/Berlin', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'netherlands' => array( 'name' => 'Netherlands', 'country_id' => '157', 'country_code' => 'nl', 'slug' => 'netherlands', 'global_location_id' => '152', 'rel_gloc_ids' => '152,1188,1189,1190,1191,1192,1193', 'currency' => 'EUR', 'currency_name' => 'Euro', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Europe/Amsterdam', 'job_location' => '0', 'published' => '1', 'show' => '1' ), 'japan' => array( 'name' => 'Japan', 'country_id' => '107', 'country_code' => 'jp', 'slug' => 'japan', 'global_location_id' => '108', 'rel_gloc_ids' => '108,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337', 'currency' => 'YEN', 'currency_name' => 'Japanese yen', 'languages' => 'en', 'default_language' => 'en', 'country_time_zone' => 'Search Results Web results Asia/Tokyo', 'job_location' => '1', 'published' => '1', 'show' => '1' ), 'global' => array( 'name' => 'Global', 'country_id' => (int) 251, 'country_code' => 'on', 'slug' => 'global', 'global_location_id' => '275', 'rel_gloc_ids' => '275', 'currency' => 'USD', 'currency_name' => 'US Dollar', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => null, 'job_location' => '0', 'published' => '1', 'show' => '1' ) ) $currentLocation = array( 'name' => 'Bahrain', 'country_id' => '23', 'country_code' => 'bh', 'slug' => 'bahrain', 'global_location_id' => '17', 'rel_gloc_ids' => '17,292,293,294,295,314,297,298,299,300,301,302,303,304,1276,1277', 'currency' => 'BHD', 'currency_name' => 'Bahrain Dinar', 'languages' => 'en,ar', 'default_language' => 'en', 'country_time_zone' => 'Asia/Bahrain', 'job_location' => '1', 'published' => '1', 'show' => '1' ) $cityLists = array( (int) 0 => array( 'name' => 'Dubai', 'slug' => 'dubai' ), (int) 1 => array( 'name' => 'Abu Dhabi', 'slug' => 'abu-dhabi' ), (int) 2 => array( 'name' => 'Ras al Khaimah', 'slug' => 'ras-al-khaimah' ), (int) 3 => array( 'name' => 'Al Ain', 'slug' => 'al-ain' ), (int) 4 => array( 'name' => 'Sharjah', 'slug' => 'sharjah' ), (int) 5 => array( 'name' => 'Fujairah', 'slug' => 'fujairah' ), (int) 6 => array( 'name' => 'Ajman', 'slug' => 'ajman' ), (int) 7 => array( 'name' => 'Umm Al Quwain', 'slug' => 'umm-al-quwain' ) ) $menuState = 'loggedoutmenu' $showCVReviewLink = true $profileInfo = array( 'locations' => array( (int) 2 => 'UAE' ), 'searchKey' => '', 'guest' => (int) 1, 'jobCount' => '29649', 'contributedJobCount' => '24', 'courseCount' => null ) $environment = 'production' $langUrlPrefix = '' $langUrl = 'https://jobs.laimoon.com/' $themeUrl = 'https://jobs.laimoon.com/' $siteUrl = 'https://jobs.laimoon.com/' $staticUrl = 'https://cdn.laimoon.com/jobs/' $langCode = 'en' $pageScripts = array( (int) 0 => 'page_script' ) $pageName = 'externalview' $courseUrl = 'https://courses.laimoon.com/' $onlineCourses = array() $job = array( 'Job' => array( 'id' => '44075113', 'contact_id' => '3773199', 'recruiter_id' => '74726', 'job_function_id' => null, 'title' => 'Python Software Engineer - Ubuntu Hardware Certification Team', 'vacancies' => null, 'job_type_id' => null, 'description' => null, 'pay_status' => 'Free', 'external_job_description' => '<p> Canonical is hiring a Python Software Engineer to join the Certification team, who make the tools which enable us to know that a desktop, laptop, server or IoT device is working properly. We work at the interface of hardware and software, so the ideal candidate is a Python developer familiar with hardware. </p><p> The Certification team develops the tools needed to certify hardware as working with Ubuntu Core as well as Ubuntu Desktop and Server: . </p><p> We design hardware which can be used to probe devices independently, and frameworks for software tests that check every aspect of Ubuntu on that hardware. This is an excellent opportunity for someone who wants to have a meaningful impact for adoption of Linux across multiple device categories and industries. Canonical offers a fun, fast-paced team environment and a career full of learning and development opportunities. This team is centered in EMEA time zones, and works with colleagues on related teams in both the Americas and APAC. </p><p> We work together with silicon companies, OEMs, ODMs and teams within Canonical to ensure a smooth, secure out of the box Ubuntu experience, with success in this role leading to a great Ubuntu experience being offered on more and more devices. </p><h3> Role description </h3><p> We are looking for a self-motivated software engineer with experience developing in Python, to work on test automation tools or Linux based embedded hardware. This role offers an exciting opportunity to push the industry forward by enabling entirely new Linux based hardware testing capabilities, scaling up hardware certification efforts and allowing for deeper test coverage. </p><p> The role involves the development and maintenance of Canonical's open source certification tools, supporting the creation of hardware solutions for test automation, and automating our existing processes. We seek out continuous process and tooling improvements as part of expanding the certification test suites, ultimately to improve the quality of Linux experience felt by millions of Linux end users. </p><h3> Key responsibilities </h3><ul><li> Maintain and develop new features to our Python based test automation tools like Checkbox, used by both in-house teams and industry partners. </li><li> Invent new ways to enable remote, automated testing. </li><li> Help build the software counterpart to in-house designed testing hardware to help test device enablement (graphics, hotplug, bluetooth, etc). </li><li> Write functional and performance tests to support hardware enablement and to protect from regressions. </li><li> Participate in meetings involving international travel 2-3 times per year. </li></ul><h3> Required Skills And Experience </h3><ul><li> Knowledge of Python programming language. </li><li> Quality oriented, pragmatic approach to software design and implementation. </li><li> Interest in test automation methodologies. </li><li> Previous experience working with Ubuntu or other Linux distributions. </li><li> Ability to be productive in a globally distributed team. </li></ul><h3> Desired Skills And Experience </h3><ul><li> Passion for tinkering: you are a maker. </li><li> Experience working in an agile environment. </li><li> Hardware testing experience, for example in the IoT space. </li><li> Familiarity with the C programming language. </li></ul><p><b> What is Canonical?</b></p><p> 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. </p><p><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. </em></p><h3>#Stack </h3>#J-18808-Ljbffr', 'course_qualifications' => null, 'global_location_id' => '17', 'gender' => '0', 'baseSalary' => null, 'salary_duration' => 'Monthly', 'job_type' => 'Full time', 'salaryFrom' => null, 'salaryTo' => null, 'currency_id' => null, 'hide_salary' => '0', 'benefits' => null, 'salary_type_id' => null, 'travel_type_id' => null, 'travel_id' => null, 'education_id' => null, 'education_background' => null, 'language_id' => null, 'position_level_id' => null, 'position_type' => null, 'number_of_staffs_mange' => null, 'experiance' => null, 'sales_experience' => null, 'sales_focus' => null, 'sales_cycle_id' => null, 'reporting_to' => null, 'otherAssignments' => null, 'otherConsiderations' => null, 'ideal_candidate' => null, 'company_info' => null, 'company_id' => '344251', 'company_name' => 'Canonical', 'external_apply_url' => 'https://bh.jooble.org/external/1141448621276725353?cpc=d0FU&utm_source=affiliate&utm_medium=laimoon_organic_bh&extra_ars_request_id=48329ffa22e5383a1881ee680ecce93a', 'external_short_url' => '1141448621276725353', 'apply_url' => null, 'contributed' => '0', 'created' => '2024-08-22 12:43:53', 'published' => '2024-08-22 12:43:53', 'closed_time' => null, 'updated' => '2024-08-22 12:43:53', 'hideCompany' => null, 'hide_contact_info' => '0', 'application_count' => '0', 'closed' => '0', 'draft' => '0', 'rejected' => '0', 'deleted' => '0', 'moderated' => '1', 'boosted' => '0', 'rejectnote' => null, 'job_extended' => '0', 'purchased' => '0', 'seeder_id' => '113', 'source_id' => 'jooble', 'course_keywords' => null, 'shortlist_magic_applied' => '0', 'shortlist_magic_keywords' => null, 'living_in' => '0', 'age_limit' => null, 'is_managerial' => '0', 'application_email' => null, 'quality_score' => null, 'reopened' => '0', 'quality_type' => 'White', 'promoted' => '0' ), 'Recruiter' => array( 'first_name' => 'Jooble Jobs', 'last_name' => null, 'recruiter_type' => 'company' ), 'GlobalLocation' => array( 'id' => '17', 'display_name' => 'Bahrain', 'name_ar' => 'البحرين', 'country_id' => '23', 'Country' => array( 'name' => 'Bahrain', 'id' => '23', 'slug' => 'bahrain', 'code' => 'BH' ) ), 'Company' => array( 'id' => '344251', 'name' => 'Canonical', 'website' => 'http://canonical.com', 'verified' => '0', 'photo' => 'CANONICAL_50e08520-be73-11eb-b4fd-f30d5c6a414d.jpeg', 'details' => null, 'display_details' => '' ), 'Industry' => array(), 'Tag' => array() ) $jobsList = array() $courses = array() $promotedCourses = array() $referer = '/' $urlKeyword = 'Python ' $profile = array( 'locations' => array( (int) 2 => 'UAE' ), 'searchKey' => '', 'guest' => (int) 1, 'jobCount' => '29649', 'contributedJobCount' => '24', 'courseCount' => null ) $askLogin = true $jobLinkTitle = 'Python ' $renderSchema = 'yes' $title_for_layout = 'Python Software Engineer - Ubuntu Hardware Certification Team jobs in Canonical in Bahrain.' $page_description = 'Apply to Python Software Engineer - Ubuntu Hardware Certification Team jobs in Canonical in Bahrain.Find similar vacancies, jobs and salary information in Bahrain.' $locationForTitle = 'Bahrain' $currentJobCity = array( 'id' => '17', 'display_name' => 'Bahrain', 'name_ar' => 'البحرين', 'country_id' => '23', 'Country' => array( 'name' => 'Bahrain', 'id' => '23', 'slug' => 'bahrain', 'code' => 'BH' ) ) $jobCompanyPage = array( 'CompanyPage' => array( 'id' => '102078', 'title' => 'Canonical', 'slug' => 'canonical-2', 'description' => '', 'meta_title' => 'Jobs from Canonical', 'meta_description' => 'Jobs from Canonical', 'meta_keywords' => 'Jobs from Canonical', 'draft' => '0' ), 'CompanyPageTranslation' => array( 'id' => '102060', 'company_page_id' => '102078', 'title' => 'Canonical', 'slug' => 'canonical-2', 'summary' => null, 'description' => '', 'meta_title' => 'Jobs from Canonical', 'meta_description' => 'Jobs from Canonical', 'meta_keywords' => 'Jobs from Canonical', 'company_matching_keywords' => null, 'draft' => '0', 'lang_code' => 'en' ) ) $location = 'Bahrain' $breadCrumbs = array( 'Job Details' => '' ) $relCourseBanner = array( 'title' => 'Python , Software ', 'relatedUrl' => 'https://courses.laimoon.com/search/Python | Software ', 'course_category_id' => '', 'relatedOnlineUrl' => 'https://courses.laimoon.com/search/Python | Software ?fromloc=online&' ) $published = '2024-08-22 12:43:53' $daysleft = (float) 9 $isLoggedIn = false $facebookSession = null $fbConfig = array( 'AppId' => '151651858238476', 'APIKey' => '1c032aa6c89b302e8ec5dea94dc89104', 'AppSecret' => 'f2b69d3a25fe65601f146efe7178e72a' ) $linkedInConfig = array( 'APIKey' => '779yus3aqi524z', 'AppSecret' => 'XCdGJxUokce5Ygf6' ) $criticalCSSes = array( 'jobdetail' => 'jobdetail-critical-css', 'companylist' => 'companylist-critical-css', 'companyview' => 'companyview-critical-css', 'agencylist' => 'agencylist-critical-css', 'agencyview' => 'agencyview-critical-css', 'laimoonverified' => 'laimoonverified-critical-css', 'seopages' => 'seopages-critical-css', 'externalview' => 'externalview-critical-css', 'popularjobsearches' => 'popularjobsearches-critical-css' ) $basicProfileIncomplete = true $seeAllJobLink = 'https://jobs.laimoon.com/bahrain/Python ' $csaKeywords = array( (int) 0 => 'Python Software Engineer - Ubuntu Hardware Certification Team' ) $allowLoginClass = 'notlogin' $jobLocSlug = 'bahrain' $jobLocName = 'Bahrain' $pfBackgrounds = '' $jobLink = 'https://jobs.laimoon.com/jobs/externalview/44075113' $companyName = ' at Canonical' $twitterText = 'Hiring now! Python Software Engineer - Ubuntu Hardware Certification Team at Canonical. Please apply or share https://jobs.laimoon.com/jobs/externalview/44075113' $emailText = 'Hiring now! Python Software Engineer - Ubuntu Hardware Certification Team at Canonical. Please apply or share by clicking here https://jobs.laimoon.com/jobs/externalview/44075113' $sCompanyName = false $csaSearchKey = 'Python Software Engineer - Ubuntu Hardware Certification Team' $jobDetails = 'job details' $btn_text = 'Apply on company website' $confidentialExists = false $showCompany = (int) 1 $mainCheck = (int) 1 $confidentialThumbClass = '' $cdnImageThumbPath = 'https://cdn.laimoon.com/profileimages/thumbnail/' $companyPageTitle = 'Canonical'include - APP/View/Jobs/externalview.ctp, line 206 View::_evaluate() - CORE/Cake/View/View.php, line 948 View::_render() - CORE/Cake/View/View.php, line 910 View::render() - CORE/Cake/View/View.php, line 471 Controller::render() - CORE/Cake/Controller/Controller.php, line 948 Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 194 Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 162 [main] - APP/webroot/index.php, line 115
Hiring company
Canonical
Why are you reporting this job?
Job has expired Cannot view this pageAlternatively, you may click on the link below or copy/paste it into your browser.
https://bh.jooble.org/external/1141448621276725353?cpc=d0FU&utm_source=affiliate&utm_medium=laimoon_organic_bh&extra_ars_request_id=48329ffa22e5383a1881ee680ecce93a