Apple - Job Opportunities - Job description
Dean Hudson <[email protected]> Sat, 17 May 2008 11:16:30 -0700
| Newsgroups | gmane.comp.accessibility.vision |
|---|---|
| Message-ID | <[email protected]> |
--Apple-Mail-40-812757136
Content-Type: text/plain;
charset=US-ASCII;
format=flowed;
delsp=yes
Content-Transfer-Encoding: 7bit
Job description
Create Profile
Email A Friend
Requisition Number 3540529
Job title VoiceOver Software Quality Engineer
Location Santa Clara Valley
Country
City
State/Province
Job type Full Time
Job description Do you want to directly and positively impact the
lives of many Apple customers? Do you *really* want to change the
world? Apple's VoiceOver Engineering Team is seeking a Software
Quality Engineer who will help test and improve future versions of
VoiceOver as well as the general accessibility of Mac OS X. VoiceOver
Is Apple's screenreader software that enables blind or visually
impaired users to use a Macintosh. You'll be responsible for testing
functionality, user experience, and performance, as well as text-to-
speech and Braille display accuracy and speed. The ideal candidate
will have experience with the software quality assurance process and
will be extremely passionate about accessibility and VoiceOver.
Job Responsibilities Include:
- Defining/evolving the team's testing and performance strategy.
- Developing test suites and scripts which work with Apple's automated
test tools.
- Testing the functionality of VoiceOver.
- Testing the accessibility of many Mac OS X applications (using
VoiceOver).
- Contributing ideas to improve VoiceOver's user experience.
- Testing alternative display devices, such as refreshable Braille
displays.
- Testing speech quality.
- General testing of Mac OS X.
Key Requirements:
- BSCS or equivalent.
- Experience using the UNIX command line and scripting.
- Experience using screen readers and knowledge of accessibility issues.
- Experience using speech synthesis.
- Fluent Braille reader.
- Solid testing skills.
- Strong communication skills.
Additional Desired Skills:
- Fluency in Braille.
- Experience with refreshable Braille displays and other accessibility
devices.
- Experience with C, Objective-C, Mac OS X, Cocoa, Carbon, and Apple's
Accessibility API.
BS in Computer Science or Equivalent
Create Profile
Email A Friend
Sign In
Search Jobs
Search Results
Inside Apple
Commitment to diversity
Apple locations
Benefits
Common questions
We are committed to diversity. Apple is an Equal Employment
Opportunity and Affirmative Action Employer.
Home>Job Opportunities>Job description
VICUG-L is the Visually Impaired Computer User Group List.
Archived on the World Wide Web at
http://listserv.icors.org/archives/vicug-l.html
Signoff: [email protected]
Subscribe: [email protected]
--Apple-Mail-40-812757136
Content-Type: text/html;
charset=US-ASCII
Content-Transfer-Encoding: quoted-printable
<p>
<html><head><base =
href=3D"http://jobs.apple.com/index.ajs?BID=3D1&method=3DmExternal.sho=
wJob&RID=3D21088&CurrentPage=3D1">
<link rel=3D"stylesheet" type=3D"text/css" =
href=3D"A2J.css">
<script language=3D"JavaScript1.2" =
src=3D"/ColdFusionScript/wddx.js"></script>
<script language=3D"JavaScript1.2" =
src=3D"/Script/jsMandatory.js"></script>
<script language=3D"JavaScript1.2" =
src=3D"/Script/jsEmailValidation.js"></script>
<script language=3D"JavaScript1.2" =
src=3D"/Script/jsPopupwindow.js"></script>
<script language=3D"JavaScript1.2">
function =
PopulateCombo(cmbTobeLoaded,jsVariable,FieldValueToBePopulated,FieldTextTo=
BePopulated,dependentCombo,dependentFieldValue,defaultValue)
{
var jsTotalRecords=3D0;
n=3Deval(jsVariable + ".getRowCount()");
cmbTobeLoaded.options.length=3D0;
optNew=3Dnew Option;
optNew.value=3D"";
optNew.text=3D"-- Select --";
cmbTobeLoaded.options[cmbTobeLoaded.options.length]=3DoptNew;
cmbTobeLoaded.options[0].selected=3Dtrue;
if(dependentCombo !=3D "")
{
for(i=3D0;i<n;i++)
{
var =
m=3DparseInt(dependentCombo.options[dependentCombo.options.selectedIndex].=
value);
var p=3DparseInt(eval(jsVariable + ".getField(" =
+ i + ",'" + dependentFieldValue + "')"));
if(m=3D=3Dp)
{
optNew=3Dnew Option;
optNew.value=3Deval(jsVariable + =
".getField(" + i + ",'" + FieldValueToBePopulated + "')");
optNew.text=3Deval(jsVariable + =
".getField(" + i + ",'" + FieldTextToBePopulated + "')");
=
cmbTobeLoaded.options[cmbTobeLoaded.options.length]=3DoptNew;
jsTotalRecords++;
=
if(parseInt(defaultValue)=3D=3DparseInt(eval(jsVariable + ".getField(" + =
i + ",'" + FieldValueToBePopulated + "')")))
{
=
cmbTobeLoaded.options[0].selected=3Dfalse;
var =
ind=3DcmbTobeLoaded.options.length-1;
=
cmbTobeLoaded.options.selectedIndex=3Dind;
=
cmbTobeLoaded.options[cmbTobeLoaded.options.length-1].selected=3Dtrue;
}
}
}
}
else
{
for(i=3D0;i<n;i++)
{
optNew=3Dnew Option;
optNew.value=3Deval(jsVariable + ".getField(" + =
i + ",'" + FieldValueToBePopulated + "')");
optNew.text=3Deval(jsVariable + ".getField(" + i =
+ ",'" + FieldTextToBePopulated + "')");
=
cmbTobeLoaded.options[cmbTobeLoaded.options.length]=3DoptNew;
var m=3DparseInt(defaultValue);
var p=3DparseInt(eval(jsVariable + ".getField(" =
+ i + ",'" + FieldValueToBePopulated + "')"));
if(m=3D=3Dp)
{
cmbTobeLoaded.options[0].selected=3Dfalse;=
var ind=3DcmbTobeLoaded.options.length-1;
cmbTobeLoaded.options.selectedIndex=3Dind;=
=
cmbTobeLoaded.options[ind].selected=3Dtrue;
}
}
jsTotalRecords=3DparseInt(n);
}
=09
if(jsTotalRecords=3D=3D1)
{
if(cmbTobeLoaded.options.selectedIndex <=3D 0)
{
cmbTobeLoaded.options.selectedIndex=3D1;
cmbTobeLoaded.options[1].selected=3Dtrue;
if(cmbTobeLoaded.onchange)
{
cmbTobeLoaded.onchange();
}
}
}
}
// Please leave these comments as they prevent JavaScript functions from =
running together in Netscape!
// End of Date Validation Functions
function =
PopulateComboForReadOnly(cmbTobeLoaded,jsVariable,FieldValueToBePopulated,=
FieldTextToBePopulated,dependentCombo,dependentFieldValue,defaultValue)
{
n=3Deval(jsVariable + ".getRowCount()");
if(typeof(cmbTobeLoaded.options)!=3D'undefined')
{
cmbTobeLoaded.options.length=3D0;
optNew=3Dnew Option;
optNew.value=3D"";
optNew.text=3D"-- Select --";
=
cmbTobeLoaded.options[cmbTobeLoaded.options.length]=3DoptNew;
cmbTobeLoaded.options[0].selected=3Dtrue;
if(dependentCombo !=3D "")
{
for(i=3D0;i<n;i++)
{
var m=3DparseInt(dependentCombo.value);
var p=3DparseInt(eval(jsVariable + =
".getField(" + i + ",'" + dependentFieldValue + "')"));
if(m=3D=3Dp)
{
optNew=3Dnew Option;
optNew.value=3Deval(jsVariable + =
".getField(" + i + ",'" + FieldValueToBePopulated + "')");
optNew.text=3Deval(jsVariable + =
".getField(" + i + ",'" + FieldTextToBePopulated + "')");
=
cmbTobeLoaded.options[cmbTobeLoaded.options.length]=3DoptNew;
=
if(parseInt(defaultValue)=3D=3DparseInt(eval(jsVariable + ".getField(" + =
i + ",'" + FieldValueToBePopulated + "')")))
{
=
cmbTobeLoaded.options[0].selected=3Dfalse;
var =
ind=3DcmbTobeLoaded.options.length-1;
=
cmbTobeLoaded.options.selectedIndex=3Dind;
=
cmbTobeLoaded.options[cmbTobeLoaded.options.length-1].selected=3Dtrue;
}
}
}
}
else
{
for(i=3D0;i<n;i++)
{
optNew=3Dnew Option;
optNew.value=3Deval(jsVariable + =
".getField(" + i + ",'" + FieldValueToBePopulated + "')");
optNew.text=3Deval(jsVariable + =
".getField(" + i + ",'" + FieldTextToBePopulated + "')");
=
cmbTobeLoaded.options[cmbTobeLoaded.options.length]=3DoptNew;
var m=3DparseInt(defaultValue);
var p=3DparseInt(eval(jsVariable + =
".getField(" + i + ",'" + FieldValueToBePopulated + "')"));
if(m=3D=3Dp)
{
=
cmbTobeLoaded.options[0].selected=3Dfalse;
var =
ind=3DcmbTobeLoaded.options.length-1;
=
cmbTobeLoaded.options.selectedIndex=3Dind;
=
cmbTobeLoaded.options[ind].selected=3Dtrue;
}
}
}
}
}
// Please leave these comments as they prevent JavaScript functions from =
running together in Netscape!
// End of Date Validation Functions
function =
PopulateComboOnMultiSelect(cmbTobeLoaded,jsVariable,FieldValueToBePopulate=
d,FieldTextToBePopulated,dependentCombo,dependentFieldValue,defaultValue)
{
n=3Deval(jsVariable + ".getRowCount()");
cmbTobeLoaded.options.length=3D0;
optNew=3Dnew Option;
optNew.value=3D"";
optNew.text=3D"-- Select --";
cmbTobeLoaded.options[cmbTobeLoaded.options.length]=3DoptNew;
cmbTobeLoaded.options[0].selected=3Dtrue;
=09
if(dependentCombo !=3D "")
{
for(j=3D0;j<dependentCombo.options.length;j++)
{
if(dependentCombo.options[j].selected)
{
for(i=3D0;i<n;i++)
{
var =
m=3DparseInt(dependentCombo.options[j].value);
var p=3DparseInt(eval(jsVariable =
+ ".getField(" + i + ",'" + dependentFieldValue + "')"));
if(m=3D=3Dp)
{
optNew=3Dnew Option;
=
optNew.value=3Deval(jsVariable + ".getField(" + i + ",'" + =
FieldValueToBePopulated + "')");
=
optNew.text=3Deval(jsVariable + ".getField(" + i + ",'" + =
FieldTextToBePopulated + "')");
=
cmbTobeLoaded.options[cmbTobeLoaded.options.length]=3DoptNew;
=
if(parseInt(defaultValue)=3D=3DparseInt(eval(jsVariable + ".getField(" + =
i + ",'" + FieldValueToBePopulated + "')")))
{
=
cmbTobeLoaded.options[0].selected=3Dfalse;
var =
ind=3DcmbTobeLoaded.options.length-1;
=
cmbTobeLoaded.options.selectedIndex=3Dind;
=
cmbTobeLoaded.options[cmbTobeLoaded.options.length-1].selected=3Dtrue;
}
}
}
}
}
cmbTobeLoaded.onchange();
}
}
// Please leave these comments as they prevent JavaScript functions from =
running together in Netscape!
// End of Date Validation Functions
function =
PopulateComboWithMultiSelectDefault(cmbTobeLoaded,jsVariable,FieldValueToB=
ePopulated,FieldTextToBePopulated,dependentCombo,dependentFieldValue,defau=
ltValue)
{
n=3Deval(jsVariable + ".getRowCount()");
cmbTobeLoaded.options.length=3D0;
optNew=3Dnew Option;
optNew.value=3D"";
optNew.text=3D"-- Select --";
cmbTobeLoaded.options[cmbTobeLoaded.options.length]=3DoptNew;
cmbTobeLoaded.options[0].selected=3Dtrue;
if(dependentCombo !=3D "")
{
for(i=3D0;i<n;i++)
{
var =
m=3DparseInt(dependentCombo.options[dependentCombo.options.selectedIndex].=
value);
var p=3DparseInt(eval(jsVariable + ".getField(" =
+ i + ",'" + dependentFieldValue + "')"));
if(m=3D=3Dp)
{
optNew=3Dnew Option;
optNew.value=3Deval(jsVariable + =
".getField(" + i + ",'" + FieldValueToBePopulated + "')");
optNew.text=3Deval(jsVariable + =
".getField(" + i + ",'" + FieldTextToBePopulated + "')");
=
cmbTobeLoaded.options[cmbTobeLoaded.options.length]=3DoptNew;
defValueList =3D =
defaultValue.split(",");
for(j=3D0;j<defValueList.length;j++)
{
=
if(parseInt(defValueList[j])=3D=3DparseInt(eval(jsVariable + =
".getField(" + i + ",'" + FieldValueToBePopulated + "')")))
{
=09
=
cmbTobeLoaded.options[0].selected=3Dfalse;
var =
ind=3DcmbTobeLoaded.options.length-1;
=
cmbTobeLoaded.options[cmbTobeLoaded.options.length-1].selected=3Dtrue;
}
}
}
}
}
else
{
for(i=3D0;i<n;i++)
{
optNew=3Dnew Option;
optNew.value=3Deval(jsVariable + ".getField(" + =
i + ",'" + FieldValueToBePopulated + "')");
optNew.text=3Deval(jsVariable + ".getField(" + i =
+ ",'" + FieldTextToBePopulated + "')");
=
cmbTobeLoaded.options[cmbTobeLoaded.options.length]=3DoptNew;
defValueList =3D defaultValue.split(",");
for(j=3D0;j<defValueList.length;j++)
{
var m=3DparseInt(defValueList[j]);
var p=3DparseInt(eval(jsVariable + =
".getField(" + i + ",'" + FieldValueToBePopulated + "')"));
if(m=3D=3Dp)
{
=
cmbTobeLoaded.options[0].selected=3Dfalse;
var =
ind=3DcmbTobeLoaded.options.length-1;
=
cmbTobeLoaded.options[ind].selected=3Dtrue;
}
}=09
}
}
}=09
=09
// Please leave these comments as they prevent JavaScript functions from =
running together in Netscape!
// End of Date Validation Functions
function resetCombo(cmbTobeLoaded)
{
cmbTobeLoaded.options.length=3D1;
cmbTobeLoaded.options[0].text=3D'-- Select --';
cmbTobeLoaded.options[0].value=3D'';
}
// Please leave these comments as they prevent JavaScript functions from =
running together in Netscape!
// End of Date Validation Functions
</script>
<script language=3D"JavaScript1.2">
function getCookie(name)
{ var pos
var token =3D name + "=3D";
var tnlen =3D token.length;
var cklen =3D document.cookie.length;
var i =3D 0;
var j;
while (i < cklen)
{ j =3D i + tnlen;
if (document.cookie.substring(i, j) =3D=3D token)
{ pos =3D document.cookie.indexOf (";", j);
if (pos =3D=3D -1)
pos =3D document.cookie.length;
return unescape(document.cookie.substring(j, pos));
}
i =3D document.cookie.indexOf(" ", i) + 1;
if (i =3D=3D 0) break;
}
return null;
}
function setCookie(name, value)
{=20
document.cookie =3D name + "=3D" + escape(value)
}
function deleteCookie(name)
{
var exp =3D new Date();
exp.setTime (exp.getTime() - 1);
var cval =3D getCookie (name);
document.cookie =3D name + "=3D" + cval + "; expires=3D" + =
exp.toGMTString();
}
</script>
<script language=3D"JavaScript">
var glCookieCheckFailed=3Dfalse;
var glCookieMessage=3D"The Apply2Jobs web site is functional only if =
Cookies are enabled. A test of your browsers configuration has =
determined that Cookies are disabled.Your browser must be configured to =
support JavaScript and Cookies before you can apply. Once you have =
properly configured your browser please re-visit Apply2Jobs.";
var gCookieName;
var gCookieValueRet;
gCookieName=3D"A2J";
gCookieValue=3D"1";
gCookieValueRet=3D"???"
setCookie(gCookieName,gCookieValue,1);
gCookieValueRet=3DgetCookie(gCookieName);
if (gCookieValueRet=3D=3Dnull)
{
glCookieCheckFailed=3Dtrue;
}
</script>=20
<title>Apple - Job Opportunities - Job description </title>
<meta content=3D"company" name=3D"Category">
<meta content=3D"Thu, 01 Nov 2007 09:02:25 -0380" name=3D"date">
<meta content=3D"text/html; charset=3Dutf-8" http-equiv=3D"Content-Type">
<meta content=3D"Fri, 26 Mar 1999 23:59:59 GMT" http-equiv=3D"Expires">
<meta content=3D"Apple Inc." name=3D"Author">
<link href=3D"http://www.apple.com/" rel=3D"home"> =20
<link href=3D"http://www.apple.com/find/sitemap.html" rel=3D"index">
<link charset=3D"utf-8" =
href=3D"http://www.apple.com/jobs/includes/ve/apple/us/../../../global/sty=
les/base.css" rel=3D"stylesheet" type=3D"text/css">
<link charset=3D"utf-8" =
href=3D"http://www.apple.com/jobs/includes/ve/apple/us/../../../global/nav=
/styles/nav.css" rel=3D"stylesheet" type=3D"text/css"> =20
<link =
href=3D"http://www.apple.com/jobs/includes/ve/apple/us/../../../../css/app=
le1_global.css" media=3D"all" rel=3D"stylesheet" type=3D"text/css"> =
=20
<link =
href=3D"http://www.apple.com/jobs/includes/ve/apple/us/../../../../css/app=
le2_fonts.css" media=3D"screen" rel=3D"stylesheet" type=3D"text/css"> =
=20
<link =
href=3D"http://www.apple.com/jobs/includes/ve/apple/us/../../../../css/app=
le3_nav_ve.css" media=3D"screen" rel=3D"stylesheet" type=3D"text/css"> =
=20
<link =
href=3D"http://www.apple.com/jobs/includes/ve/apple/us/../../../../css/app=
le4_jobs.css" media=3D"screen" rel=3D"stylesheet" type=3D"text/css"> =
=20
<link =
href=3D"http://www.apple.com/jobs/includes/ve/apple/us/../../../../css/app=
le5_division.css" media=3D"screen" rel=3D"stylesheet" type=3D"text/css"> =
=20
<link =
href=3D"http://www.apple.com/jobs/includes/ve/apple/us/../../../../css/app=
le6_globalprint.css" media=3D"print" rel=3D"stylesheet" type=3D"text/css">=
=20
<link =
href=3D"http://www.apple.com/jobs/includes/ve/apple/us/../../../../css/app=
le7_jobsprint.css" media=3D"print" rel=3D"stylesheet" type=3D"text/css">
<link =
href=3D"http://www.apple.com/jobs/includes/ve/apple/us/../../../../css/hac=
k.css" media=3D"screen" rel=3D"stylesheet" type=3D"text/css">
<style>
iframe.nav {
width: 100%;
height: 215px;
border: none;
=09
}
</style>=20
<script =
src=3D"http://www.apple.com/jobs/includes/ve/apple/us/../../../../scripts/=
jobs_ve.js" type=3D"text/javascript"></script>
<style>
Table.Right {float: Right;text-align: Right;}
DIV.VEclearFloatAfterElement =
{clear:both;visibility:hidden;height:0px;}=20
</style><style>
Table.Right {float: Right;text-align: Right;}
DIV.VEclearFloatAfterElement =
{clear:both;visibility:hidden;height:0px;}=20
</style></head><body bgcolor=3D"#ffffff" =
style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
-webkit-line-break: after-white-space; "><base =
href=3D"http://jobs.apple.com/index.ajs?BID=3D1&method=3DmExternal.sho=
wJob&RID=3D21088&CurrentPage=3D1"><div style=3D"font-family: =
Helvetica; font-size: 12px; color: black; text-align: left; "><br =
class=3D"webkit-block-placeholder"></div>
<iframe class=3D"nav" frameborder=3D"0" scrolling=3D"no" =
src=3D"https://www.apple.com/jobs/includes/common/nav/us/top_nav_pro.html"=
></iframe>
<div class=3D"clearer"> </div>
<div id=3D"main">
<!-- <div id=3D"content"> VE will insert for A2J, not for online App -->
<h2>Job description </h2>=20
<!-- VEBody Begin--><div id=3D"content">
<noscript></noscript>
=09
=09
<script language=3D"JavaScript1.2">
var isResizable =3D false;
=09
function noOp()
{
}
=09
function createTarget(form)
{
_target =3D form.target;
_colon =3D _target.indexOf(":");
if(_colon !=3D -1) {
form.target =3D _target.substring(0,_colon);
form.args =3D _target.substring(_colon+1);
} else if(typeof(form.args)=3D=3D"undefined") {
form.args =3D "";
}
if(form.args.indexOf("{")!=3D-1) {
_args =3D form.args.split("{");
form.args =3D _args[0];
for(var i =3D 1; i < _args.length;i++) {
_args[i] =3D _args[i].split("}");
form.args +=3D eval(_args[i][0]) + _args[i][1];
}
}
form.args =3D form.args.replace(/ /g,"");
_win =3D window.open('',form.target,form.args);
if(typeof(focus)=3D=3D"function")
_win.focus();
form.submit();
return false;
}
</script>
<script language=3D"JavaScript1.2">
function MenuValidateForm()
{
if(window.glCookieCheckFailed && =
window.glCookieMessage)=20
{
if(glCookieCheckFailed)=20
{
alert(glCookieMessage);=20
return false;
}=20
}
return true;
}
</script>
=09
=09
=09
=09
<form name=3D"frmCreateProfile1" =
action=3D"index.ajs?BID=3D1&method=3DmExternal.showLogin" =
method=3D"Post" onsubmit=3D"return MenuValidateForm();">
<input type=3D"Hidden" =
name=3D"RID" value=3D"21088">
<input type=3D"Hidden" =
name=3D"PTS" value=3D"F8144FFD-15C5-F4EB-80F24BE41EAEE64F">
=09
</form>
=09
<form name=3D"frmResumeBuilder1" =
action=3D"index.ajs?BID=3D1&method=3DmExternal.showLogin" =
method=3D"Post" onsubmit=3D"return MenuValidateForm();">
<input type=3D"Hidden" =
name=3D"RB" value=3D"1">
<input type=3D"Hidden" =
name=3D"RID" value=3D"21088">
<input type=3D"Hidden" =
name=3D"PTS" value=3D"F8144FFD-15C5-F4EB-80F24BE41EAEE64F">
=09
</form>
=09
=09
=09
<form name=3D"frmApply1" =
action=3D"index.ajs?BID=3D1&method=3DmExternal.showLogin" =
method=3D"post" onsubmit=3D"return MenuValidateForm();">
<input type=3D"Hidden" =
name=3D"RID" value=3D"21088">
<input type=3D"Hidden" =
name=3D"PTS" value=3D"F8144FFD-15C5-F4EB-80F24BE41EAEE64F">
=09
</form>
=09
<form name=3D"frmEmailJob1" =
action=3D"index.ajs?BID=3D1&method=3DmExternal.showEmailAFriend" =
method=3D"post" target=3D"foobar">
<input type=3D"Hidden" name=3D"RID" =
value=3D"21088">
<input type=3D"Hidden" =
name=3D"CorrectNavigation" value=3D"Yes">
</form>
=09
=09
=09
<table cellpadding=3D"3" cellspacing=3D"0" border=3D"0" =
class=3D"Right" style=3D"position: static; z-index: auto; ">
<tbody><tr>
<td>
<table cellpadding=3D"3" =
cellspacing=3D"0" border=3D"0" style=3D"position: static; z-index: auto; =
">
<tbody><tr>
=09
<td>
<table =
cellpadding=3D"0" cellspacing=3D"0" border=3D"0" style=3D"position: =
static; z-index: auto; ">
=09
=
<tbody><tr><td class=3D"JobDetailNavigation">
=
<a onclick=3D"return confirm('Are you sure you want to apply to this =
job?');" href=3D"javascript:if(document.frmCreateProfile1.onsubmit()) =
document.frmCreateProfile1.submit();" =
class=3D"JobDetailNavigationLink">Create Profile</a>
</td>
=09
=
</tr></tbody></table>
</td>
=09
<td>
<table =
cellpadding=3D"0" cellspacing=3D"0" border=3D"0" style=3D"position: =
static; z-index: auto; ">
=09
=
<tbody><tr><td class=3D"JobDetailNavigation">
=
<a href=3D"javascript:noOp()" onclick=3D"return =
createTarget(document.frmEmailJob1);" =
class=3D"JobDetailNavigationLink">Email A Friend</a>
</td>
=09
=
</tr></tbody></table>
</td>
=09
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<div class=3D"VEclearFloatAfterElement"></div>=20
=09
<table cellpadding=3D"3" cellspacing=3D"0" =
border=3D"0" width=3D"100%" style=3D"position: static; z-index: auto; ">
=09
<tbody><tr>
=09
<td class=3D"JobDetailLabel" =
valign=3D"top" nowrap=3D"">
Requisition Number=20
</td>
<td colspan=3D"1" valign=3D"top">
3540529=20
</td>
=09
</tr>
=09
<tr>
=09
<td class=3D"JobDetailLabel" =
valign=3D"top" nowrap=3D"">
Job title=20
</td>
<td colspan=3D"1" valign=3D"top">
VoiceOver Software =
Quality Engineer=20
</td>
=09
</tr>
=09
<tr>
=09
<td class=3D"JobDetailLabel" =
valign=3D"top" nowrap=3D"">
Location=20
</td>
<td colspan=3D"1" valign=3D"top">
Santa Clara Valley<br>
=09
</td>
=09
</tr>
=09
<tr>
=09
<td class=3D"JobDetailLabel" =
valign=3D"top" nowrap=3D"">
Country=20
</td>
<td colspan=3D"1" valign=3D"top">
=09
</td>
=09
</tr>
=09
<tr>
=09
<td class=3D"JobDetailLabel" =
valign=3D"top" nowrap=3D"">
City=20
</td>
<td colspan=3D"1" valign=3D"top">
=09
</td>
=09
</tr>
=09
<tr>
=09
<td class=3D"JobDetailLabel" =
valign=3D"top" nowrap=3D"">
State/Province=20
</td>
<td colspan=3D"1" valign=3D"top">
=09
</td>
=09
</tr>
=09
<tr>
=09
<td class=3D"JobDetailLabel" =
valign=3D"top" nowrap=3D"">
Job type=20
</td>
<td colspan=3D"1" valign=3D"top">
Full Time<br>
=09
</td>
=09
</tr>
=09
<tr>
=09
<td class=3D"JobDetailLabel" =
valign=3D"top" nowrap=3D"">
Job description=20
</td>
<td colspan=3D"1" valign=3D"top">
Do you want to directly =
and positively impact the lives of many Apple customers? Do you =
*really* want to change the world? Apple's VoiceOver Engineering Team =
is seeking a Software Quality Engineer who will help test and improve =
future versions of VoiceOver as well as the general accessibility of Mac =
OS X. VoiceOver Is Apple's screenreader software that enables blind or =
visually impaired users to use a Macintosh. You'll be responsible for =
testing functionality, user experience, and performance, as well as =
text-to-speech and Braille display accuracy and speed. The ideal =
candidate will have experience with the software quality assurance =
process and will be extremely passionate about accessibility and =
VoiceOver.<br><br>Job Responsibilities Include:<br>- Defining/evolving =
the team's testing and performance strategy.<br>- Developing test suites =
and scripts which work with Apple's automated test tools.<br>- Testing =
the functionality of VoiceOver.<br>- Testing the accessibility of many =
Mac OS X applications (using VoiceOver).<br>- Contributing ideas to =
improve VoiceOver's user experience.<br>- Testing alternative display =
devices, such as refreshable Braille displays.<br>- Testing speech =
quality.<br>- General testing of Mac OS X.<br><br>Key Requirements:<br>- =
BSCS or equivalent.<br>- Experience using the UNIX command line and =
scripting.<br>- Experience using screen readers and knowledge of =
accessibility issues.<br>- Experience using speech synthesis.<br>- =
Fluent Braille reader.<br>- Solid testing skills.<br>- Strong =
communication skills.<br><br>Additional Desired Skills:<br>- Fluency in =
Braille.<br>- Experience with refreshable Braille displays and other =
accessibility devices.<br>- Experience with C, Objective-C, Mac OS X, =
Cocoa, Carbon, and Apple's Accessibility API.<br><br><br>BS in Computer =
Science or Equivalent=20
</td>
=09
</tr>
=09
</tbody></table>
=09
=09
<script language=3D"JavaScript1.2">
var isResizable =3D false;
=09
function noOp()
{
}
=09
function createTarget(form)
{
_target =3D form.target;
_colon =3D _target.indexOf(":");
if(_colon !=3D -1) {
form.target =3D _target.substring(0,_colon);
form.args =3D _target.substring(_colon+1);
} else if(typeof(form.args)=3D=3D"undefined") {
form.args =3D "";
}
if(form.args.indexOf("{")!=3D-1) {
_args =3D form.args.split("{");
form.args =3D _args[0];
for(var i =3D 1; i < _args.length;i++) {
_args[i] =3D _args[i].split("}");
form.args +=3D eval(_args[i][0]) + _args[i][1];
}
}
form.args =3D form.args.replace(/ /g,"");
_win =3D window.open('',form.target,form.args);
if(typeof(focus)=3D=3D"function")
_win.focus();
form.submit();
return false;
}
</script>
<script language=3D"JavaScript1.2">
function MenuValidateForm()
{
if(window.glCookieCheckFailed && =
window.glCookieMessage)=20
{
if(glCookieCheckFailed)=20
{
alert(glCookieMessage);=20
return false;
}=20
}
return true;
}
</script>
=09
=09
=09
=09
<form name=3D"frmCreateProfile2" =
action=3D"index.ajs?BID=3D1&method=3DmExternal.showLogin" =
method=3D"Post" onsubmit=3D"return MenuValidateForm();">
<input type=3D"Hidden" =
name=3D"RID" value=3D"21088">
<input type=3D"Hidden" =
name=3D"PTS" value=3D"F8144FFD-15C5-F4EB-80F24BE41EAEE64F">
=09
</form>
=09
<form name=3D"frmResumeBuilder2" =
action=3D"index.ajs?BID=3D1&method=3DmExternal.showLogin" =
method=3D"Post" onsubmit=3D"return MenuValidateForm();">
<input type=3D"Hidden" =
name=3D"RB" value=3D"1">
<input type=3D"Hidden" =
name=3D"RID" value=3D"21088">
<input type=3D"Hidden" =
name=3D"PTS" value=3D"F8144FFD-15C5-F4EB-80F24BE41EAEE64F">
=09
</form>
=09
=09
=09
<form name=3D"frmApply2" =
action=3D"index.ajs?BID=3D1&method=3DmExternal.showLogin" =
method=3D"post" onsubmit=3D"return MenuValidateForm();">
<input type=3D"Hidden" =
name=3D"RID" value=3D"21088">
<input type=3D"Hidden" =
name=3D"PTS" value=3D"F8144FFD-15C5-F4EB-80F24BE41EAEE64F">
=09
</form>
=09
<form name=3D"frmEmailJob2" =
action=3D"index.ajs?BID=3D1&method=3DmExternal.showEmailAFriend" =
method=3D"post" target=3D"foobar">
<input type=3D"Hidden" name=3D"RID" =
value=3D"21088">
<input type=3D"Hidden" =
name=3D"CorrectNavigation" value=3D"Yes">
</form>
=09
=09
=09
<table cellpadding=3D"3" cellspacing=3D"0" border=3D"0" =
class=3D"Right">
<tbody><tr>
<td>
<table cellpadding=3D"3" =
cellspacing=3D"0" border=3D"0">
<tbody><tr>
=09
<td>
<table =
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
=09
=
<tbody><tr><td class=3D"JobDetailNavigation">
=
<a onclick=3D"return confirm('Are you sure you want to apply to this =
job?');" href=3D"javascript:if(document.frmCreateProfile2.onsubmit()) =
document.frmCreateProfile2.submit();" =
class=3D"JobDetailNavigationLink">Create Profile</a>
</td>
=09
=
</tr></tbody></table>
</td>
=09
<td>
<table =
cellpadding=3D"0" cellspacing=3D"0" border=3D"0">
=09
=
<tbody><tr><td class=3D"JobDetailNavigation">
=
<a href=3D"javascript:noOp()" onclick=3D"return =
createTarget(document.frmEmailJob2);" =
class=3D"JobDetailNavigationLink">Email A Friend</a>
</td>
=09
=
</tr></tbody></table>
</td>
=09
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<div class=3D"VEclearFloatAfterElement"></div>=20
</div><!-- VEBody End-->
<div id=3D"sidebar">
=09
<div id=3D"sidebar"> <div id=3D"index"> =
<!-- VENavigation Begin-->
<ul>
<li>
<a href=3D"index.ajs?BID=3D1&method=3DmExternal.showLo=
gin" class=3D"MainNavigationLink">Sign In</a>
=09
</li>
</ul>
=09
<ul>
<li><a =
href=3D"index.ajs?BID=3D1&method=3DmExternal.showSearchInterface" =
class=3D"MainNavigationLink">Search Jobs</a></li><li><a =
href=3D"index.ajs?BID=3D1&method=3DmExternal.returnToResults" =
class=3D"MainNavigationLink">Search Results</a></li>
</ul>
<!-- VENavigation End--> </div> <div =
id=3D"division"> <h2>Inside Apple</h2> =
<ul class=3D"last"> <li> <a =
href=3D"http://www.apple.com/jobs/us/pro/inside/diversity.html">Commitment=
to diversity</a> </li> <li> =
<a =
href=3D"http://www.apple.com/jobs/us/pro/inside/locations.html">Apple =
locations</a> </li> <li> =
<a =
href=3D"http://www.apple.com/jobs/us/pro/inside/benefits.html">Benefits</a=
> </li> <li> =
<a href=3D"http://www.apple.com/jobs/us/pro/inside/questions.html">Common =
questions</a> </li> </ul> =
</div> </div>
</div>
</div>
<div class=3D"clearer"> </div>
<div id=3D"diversity">We are committed to diversity. Apple is an =
Equal Employment Opportunity and Affirmative Action Employer. =
</div><br><div class=3D"gf-980" id=3D"globalfooter"> <div =
id=3D"breadcrumbs"> <a class=3D"home" =
href=3D"http://www.apple.com/">Home</a><span>></span><a =
href=3D"http://www.apple.com/jobs/us">Job =
Opportunities</a><span>></span>Job description </div><iframe class=3D"nav"=
frameborder=3D"0" scrolling=3D"no" =
src=3D"https://www.apple.com/jobs/includes/common/nav/us/footer.html"></if=
rame></div>
=20
<div style=3D"font-family: Helvetica; font-size: 12px; color: black; =
text-align: left; "><br =
class=3D"webkit-block-placeholder"></div></body></html>=
<hr>
<p>
Leave list:
<a href=3D"mailto:[email protected]">
[email protected]</a>
<p>
VICUG-L is archived on the World Wide Web at
<a
href=3D"http://listserv.icors.org/archives/vicug-l.html">http://listserv.i
cors.or g/archives/vicug-l.html</a>
<p>
Send questions on list operation to
<a href=3D"mailto:[email protected] ">
[email protected]</a>
--Apple-Mail-40-812757136--