CINXE.COM
Controlling the CERN Accelerator Complex - CERN Document Server
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!--[if IEMobile 7]><html class="iem7" xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#"><![endif]--> <!--[if lte IE 6]><html class="ie6 ie6-7 ie6-8" xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#"><![endif]--> <!--[if (IE 7)&(!IEMobile)]><html class="ie7 ie6-7 ie6-8" xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#"><![endif]--> <!--[if IE 8]><html class="ie8 ie6-8" xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#"><![endif]--> <!--[if (gte IE 9)|(gt IEMobile 7)]><!--><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#"><!--<![endif]--> <head> <title>Controlling the CERN Accelerator Complex - CERN Document Server</title> <link href='https://framework.web.cern.ch/framework/2.0/fonts/PTSansWeb/PTSansWeb.css' rel='stylesheet' type='text/css' /> <link rel="stylesheet" href="https://cds.cern.ch/img/invenio.css?v=20141127" type="text/css" /> <link rel="stylesheet" href="https://cds.cern.ch/img/cern_theme/css/cern_theme.css?v=20141127" type="text/css" /> <link rel="stylesheet"href="/css/font-awesome.min.css"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"/> <link rel="stylesheet" href="https://cds.cern.ch/img/cern_toolbar/css/toolbar.css" type="text/css" /> <!--[if lt IE 8]> <link href="https://cds.cern.ch/img/cern_toolbar/css/toolbar-ie.css" rel="stylesheet" type="text/css"> <![endif]--> <!--[if lt IE 8]> <link rel="stylesheet" type="text/css" href="https://cds.cern.ch/img/invenio-ie7.css" /> <![endif]--> <!--[if gt IE 8]> <style type="text/css">div.restrictedflag {filter:none;}</style> <![endif]--> <link rel="canonical" href="https://cds.cern.ch/record/2792031" /> <link rel="alternate" hreflang="el" href="https://cds.cern.ch/record/2792031?ln=el" /> <link rel="alternate" hreflang="fr" href="https://cds.cern.ch/record/2792031?ln=fr" /> <link rel="alternate" hreflang="bg" href="https://cds.cern.ch/record/2792031?ln=bg" /> <link rel="alternate" hreflang="zh-TW" href="https://cds.cern.ch/record/2792031?ln=zh_TW" /> <link rel="alternate" hreflang="pt" href="https://cds.cern.ch/record/2792031?ln=pt" /> <link rel="alternate" hreflang="no" href="https://cds.cern.ch/record/2792031?ln=no" /> <link rel="alternate" hreflang="hr" href="https://cds.cern.ch/record/2792031?ln=hr" /> <link rel="alternate" hreflang="ca" href="https://cds.cern.ch/record/2792031?ln=ca" /> <link rel="alternate" hreflang="de" href="https://cds.cern.ch/record/2792031?ln=de" /> <link rel="alternate" hreflang="it" href="https://cds.cern.ch/record/2792031?ln=it" /> <link rel="alternate" hreflang="zh-CN" href="https://cds.cern.ch/record/2792031?ln=zh_CN" /> <link rel="alternate" hreflang="sv" href="https://cds.cern.ch/record/2792031?ln=sv" /> <link rel="alternate" hreflang="sk" href="https://cds.cern.ch/record/2792031?ln=sk" /> <link rel="alternate" hreflang="en" href="https://cds.cern.ch/record/2792031?ln=en" /> <link rel="alternate" hreflang="pl" href="https://cds.cern.ch/record/2792031?ln=pl" /> <link rel="alternate" hreflang="ru" href="https://cds.cern.ch/record/2792031?ln=ru" /> <link rel="alternate" hreflang="ka" href="https://cds.cern.ch/record/2792031?ln=ka" /> <link rel="alternate" hreflang="ja" href="https://cds.cern.ch/record/2792031?ln=ja" /> <link rel="alternate" hreflang="es" href="https://cds.cern.ch/record/2792031?ln=es" /> <link rel="alternate" type="application/rss+xml" title="CERN Document Server RSS" href="/rss?ln=en" /> <link rel="search" type="application/opensearchdescription+xml" href="https://cds.cern.ch/opensearchdescription" title="CERN Document Server" /> <link rel="unapi-server" type="application/xml" title="unAPI" href="https://cds.cern.ch/unapi" /> <link rel="apple-touch-icon" href="/apple-touch-icon.png"/> <link rel="apple-touch-icon-precomposed" href="/apple-touch-icon-precomposed.png"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="en" /> <meta name="description" content="<!--HTML--><h3><span><span>Engineering APIs for Accelerator Controls Software</span></span></h3> <p><span><span>This lecture will provide a general introduction to the challenges of developing Application Programming Interfaces (APIs), and integrating and evolving multiple APIs from different systems over time. It will go on to refer to real-life examples in the world of CERN Accelerator Controls, serving a large and heterogenous user community with a variety of technical and functional requirements. During the lecture, insights will be shared on technologies used and best practices when it comes to designing and developing scalable and reliable APIs.</span></span></p> <p><strong>Short bio Bartek Urbaniec</strong></p> <p>With a MSc in Computer Science, Bartek is a senior Controls engineer focused on topics of systems integration, configuration and full-stack software development. Prior to becoming a staff member in 2017, Bartek has worked in the CERN Controls domain for Cryogenics, other Industrial and accelerator controls systems. Since then, he has taken a leading role in the design&nbsp;and development of systems such as Timber and&nbsp;Accelerator Schedule Management. He is currently leading the Controls Configuration Service -&nbsp;a core component of the CERN&nbsp;Control System.</p> <p>&nbsp;</p> Urbaniec, Bartek" /> <meta name="keywords" content="CERN Document Server, WebSearch, CERN Document Server" /> <script type="text/javascript" src="https://cds.cern.ch/js/jquery.min.js"></script> <!-- WebNews CSS library --> <link rel="stylesheet" href="https://cds.cern.ch/img/webnews.css" type="text/css" /> <!-- WebNews JS library --> <script type="text/javascript" src="https://cds.cern.ch/js/webnews.js?v=20131009"></script> <meta property="fb:app_id" content="137353533001720"/> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ tex2jax: {inlineMath: [['$','$']], processEscapes: true}, showProcessingMessages: false, messageStyle: "none" }); </script> <script src="/MathJax/MathJax.js?config=TeX-AMS_CHTML" type="text/javascript"> </script> <!-- GoogleScholar --> <meta content="Controlling the CERN Accelerator Complex" name="citation_title" /> <meta content="2021/12/02" name="citation_publication_date" /> <meta name="citation_online_date" content="2021/12/02"> <!-- OpenGraph --> <meta content="Controlling the CERN Accelerator Complex" property="og:title" /> <meta content="website" property="og:type" /> <meta content="website" property="og:type" /> <meta content="https://cds.cern.ch/record/2792031" property="og:url" /> <meta property="og:video:height" content="360" /> <meta property="og:video:width" content="640" /> <meta property="og:video" content="https://lecturemedia.cern.ch/2021/1054892/1054892-presentation-720p-quality.mp4" /> <meta property="og:video:type" content="video/mp4" /> <meta property="og:image" content="https://lecturemedia.cern.ch/2021/1054892/1054892-presentation-cover.jpg" /> <meta name="twitter:player:height" content="360" /> <meta name="twitter:player:width" content="640" /> <link rel="image_src" href="https://lecturemedia.cern.ch/2021/1054892/1054892-presentation-cover.jpg" /> <link rel="video_src" href="https://cds.cern.ch/mediaplayer.swf?file=/1054892/1054892-presentation-720p-quality.mp4&streamer=rtmp://wowza.cern.ch:1935/vod&provider=rtmp&stretching=exactfit&image=https://lecturemedia.cern.ch/2021/1054892/1054892-presentation-cover.jpg"/> <meta name="twitter:player" content="https://cds.cern.ch/video/?"/> <meta content="CERN Document Server" property="og:site_name" /> <meta content="Engineering APIs for Accelerator Controls Software This lecture will provide a general introduction to the challenges of developing Application Programming Interfaces (APIs), and integrating and evolving multiple APIs from different systems over time. It will go on to refer to real-life examples in the world of CERN Accelerator Controls, serving a large and heterogenous user community with a variety of technical and functional requirements. During the lecture, insights will be shared on technologies used and best practices when it comes to designing and developing scalable and reliable APIs. Short bio Bartek Urbaniec With a MSc in Computer Science, Bartek is a senior Controls engineer focused on topics of systems integration, configuration and full-stack software development. Prior to becoming a staff member in 2017, Bartek has worked in the CERN Controls domain for Cryogenics, other Industrial and accelerator controls systems. Since then, he has taken a leading role in the design&nbsp;and development of systems such as Timber and&nbsp;Accelerator Schedule Management. He is currently leading the Controls Configuration Service -&nbsp;a core component of the CERN&nbsp;Control System. &nbsp;" property="og:description" /> <!-- Twitter Card --> <meta content="summary" name="twitter:card" /> <style></style> </head> <body class="CERN32Document32Server search" lang="en"> <!-- toolbar starts --> <div id="cern-toolbar"> <h1><a href="http://cern.ch" title="CERN">CERN <span>Accelerating science</span></a></h1> <ul> <li class="cern-accountlinks"><a class="cern-account" href="https://cds.cern.ch/youraccount/login?ln=en&referer=https%3A//cds.cern.ch/record/2792031" title="Sign in to your CERN account">Sign in</a></li> <li><a class="cern-directory" href="http://cern.ch/directory" title="Search CERN resources and browse the directory">Directory</a></li> </ul> </div> <!-- toolbar ends --> <!-- Nav header starts--> <div role="banner" class="clearfix" id="header"> <div class="header-inner inner"> <hgroup class="clearfix"> <h2 id="site-name"> <a rel="home" title="Home" href="/"><span>CERN Document Server</span></a> </h2> <h3 id="site-slogan">Access articles, reports and multimedia content in HEP</h3> </hgroup><!-- /#name-and-slogan --> <div role="navigation" id="main-navigation" class="cdsmenu"> <h2 class="element-invisible">Main menu</h2><ul class="links inline clearfix"> <li class="menu-386 first active-trail"><a class="active-trail" href="https://cds.cern.ch/?ln=en">Search</a></li> <li class="menu-444 "><a class="" title="" href="https://cds.cern.ch/submit?ln=en">Submit</a></li> <li class="menu-426 "><a class="" href="https://cds.cern.ch/help/?ln=en">Help</a></li> <li class="leaf hassubcdsmenu"> <a hreflang="en" class="header" href="https://cds.cern.ch/youraccount/display?ln=en">Personalize</a> <ul class="subsubcdsmenu"><li><a href="https://cds.cern.ch/youralerts/list?ln=en">Your alerts</a></li><li><a href="https://cds.cern.ch/yourbaskets/display?ln=en">Your baskets</a></li><li><a href="https://cds.cern.ch/yourcomments?ln=en">Your comments</a></li><li><a href="https://cds.cern.ch/youralerts/display?ln=en">Your searches</a></li></ul></li> </ul> </div> </div> </div> <!-- Nav header ends--> <table class="navtrailbox"> <tr> <td class="navtrailboxbody"> <a href="/?ln=en" class="navtrail">Home</a> > Controlling the CERN Accelerator Complex </td> </tr> </table> </div> <div class="pagebody"><div class="pagebodystripemiddle"> <div class="detailedrecordbox"> <div class="detailedrecordtabs"> <div> <ul class="detailedrecordtabs"><li class="on first"><a href="/record/2792031/?ln=en">Information </a></li><li class="disabled"><a>Files </a></li></ul> <div id="tabsSpacer" style="clear:both;height:0px"> </div></div> </div> <div class="detailedrecordboxcontent"> <div class="top-left-folded"></div> <div class="top-right-folded"></div> <div class="inside"> <!--<div style="height:0.1em;"> </div> <p class="notopgap"> </p>--> <abbr class="unapi-id" title="2792031"></abbr> <!-- Add download buttons css --> <link href="/img/download_and_embed_buttons.css" rel="stylesheet" type="text/css" /> <style type="text/css"> <!-- ul.detailedrecordtabs li.on a{background-color:#4D94CC;color:#fff !important;border-bottom:1px solid #4D94CC!important;} div.detailedrecordboxcontent {padding-top:0px !important;} table.formatRecordTableFullWidth #download_movie_box { width: 500px; margin: 0; } table.formatRecordTableFullWidth #embed_video_box { width: inherit; margin: 0; } --> .video_talk_wrapper{ max-width: 640px; min-height: 360px; } </style> <table class="formatRecordTableFullWidth"> <tr> <td class="formatRecordHeader" style="background-image: url('/img/journals.jpg');" colspan="2"> <!--YTD: record may have more than one 690C.a tag--> Talk </td> </tr> <tr><td class="formatRecordLabel"> Title </td><td style="padding-left:5px;"><b>Controlling the CERN Accelerator Complex</b></td></tr> <tr><td class="formatRecordLabel"> Video </td><td style="padding-left:5px;"><div class='video_talk_wrapper'><iframe id="iframe-1054892" src="https://lecturemedia.cern.ch/2021/1054892/" width="1020px" height="600px" allowfullscreen scrolling="no" frameborder="0"></iframe></div> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <style type="text/css"> /* .video_controlbutton, .video_controlbutton:link{ margin-right : 20px; padding-left : 20px; padding-right : 20px; color : #4D94CC; font-size : 16px; font-weight : bold; position : relative; } .video_controlbutton:hover, .video_controlbutton.hover{ cursor : pointer; text-decoration : none; color : #333; } .video_controlbutton:after{ content : " "; width : 0; right : 0; top : 9px; position : absolute; height : 0; border-left : 5px solid transparent; border-right : 5px solid transparent; border-top : 5px solid #4D94CC; } .video_controlbutton.hover:after{ content : " "; width : 0; right : 0; top : 9px; position : absolute; height : 0; border-left : 5px solid transparent; border-right : 5px solid transparent; border-bottom : 5px solid #333; border-top : none!important; }*/ </style> <script> $(document).ready(function(){ $('#video_detailbox_download').hide(); $('#video_detailbox_embed').hide(); $('#video_controlbutton_download').click(function(){ $('#video_detailbox_embed').hide(); $('#video_detailbox_download').toggle(); $('#video_controlbutton_embed').removeClass('hover'); if ($('#video_detailbox_download').is(':hidden')){ $(this).removeClass('hover'); }else{ $(this).addClass('hover'); } return false; }); $('#video_controlbutton_embed').click(function(){ $('#video_detailbox_download').hide(); $('#video_detailbox_embed').toggle(); $('#video_controlbutton_download').removeClass('hover'); if ($('#video_detailbox_embed').is(':hidden')){ $(this).removeClass('hover'); }else{ $(this).addClass('hover'); } return false; });}); </script> <div class="video_control_container"> <div style="box-sizing: inherit;position: relative;min-height: 1em;margin: 1em 0;background: #f8f8f9;padding: 1em 1.5em;line-height: 1.4285em;transition: opacity .1s ease,color .1s ease,background .1s ease,box-shadow .1s ease,-webkit-box-shadow .1s ease;border-radius: .28571429rem;font-size: 1.1em;margin-top: 0;margin-bottom: 6px;background-color: #f8ffff;color: #276f86;box-shadow: 0 0 0 1px #a9d5de inset,0 0 0 0 transparent;"> <i class="fa fa-info"></i><span style="padding-left: 9px;">If you experience any problem watching the video, click the download button below</span> </div> <a id="video_controlbutton_download" rel="download_button" class="video_controlbutton" href="#">Download</a> <a id="video_controlbutton_embed" class="video_controlbutton" href="#">Embed</a> <div style="font-size:small;color:#999;float:right; margin-right:50px"> <span id="record-stats-container"> <a href="#" id="record-stats-link" rel="nofollow">Show n. of views</a> <img id="record-stats-loading" src="/img/loading.gif" style="display:none;" /> </span> <script type="text/javascript"> function getStats() { var $container = $("#record-stats-container"); var $containerLoading = $("#record-stats-loading"); var $containerLink = $("#record-stats-link"); $containerLink.remove() $containerLoading.css('display', 'inline-block'); $.get("/api/record-stats/2792031?display=total_nb_views").done(function(response) { var nViews = "n_views" in response ? response["n_views"] : 0; $container.html(nViews + " views (not distinct)"); }) .fail(function(error) { $container.html("Error loading stats"); console.warn(error); }); }; document.getElementById("record-stats-link").addEventListener('click', function(event) { event.preventDefault(); getStats(); }); </script> </div> </div> <div id="video_detailbox_download" style="margin:10px"> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <style type="text/css"> #download_movie_box_internal_link, .more_avail_bitrates_link{ background-color: #FAFAFA; border-radius: 5px; box-shadow: 1px 1px 1px 1px #CCCCCC; margin: 5px 2px; padding: 3px; color: #222222; text-align: center; display: inline-block; line-height: 110%; vertical-align: middle; } #download_movie_box_internal_link:hover, .more_avail_bitrates_link:hover, #more_avail_bitrates_links:hover{ color: #FFFFFF; cursor: pointer; text-decoration: none; background: rgb(58,58,58); /* Old browsers */ background: -moz-linear-gradient(top, rgba(58,58,58,1) 0%, rgba(125,126,125,1) 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(58,58,58,1)), color-stop(100%,rgba(125,126,125,1))); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, rgba(58,58,58,1) 0%,rgba(125,126,125,1) 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, rgba(58,58,58,1) 0%,rgba(125,126,125,1) 100%); /* Opera11.10+ */ background: -ms-linear-gradient(top, rgba(58,58,58,1) 0%,rgba(125,126,125,1) 100%); /* IE10+ */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3a3a3a', endColorstr='#7d7e7d',GradientType=0 ); /* IE6-9 */ background: linear-gradient(top, rgba(58,58,58,1) 0%,rgba(125,126,125,1) 100%); /* W3C */ -webkit-box-shadow: 0px 0px 0px 0px #b3b3b3; -moz-box-shadow: 0px 0px 0px 0px #b3b3b3; box-shadow: 0px 0px 0px 0px #b3b3b3; } .more_avail_bitrates_link:active{ background-color: #FAFAFA; color: #222222; } span#download_movie_box_internal_link_item{ font-size: x-small; } .more_avail_bitrates_box{ background-color: #FAFAFA; color: #222222; font-size: x-small; box-shadow: 1px 1px 1px 1px #CCCCCC; border-radius: 5px; padding: 2px; margin: 5px 2px; } #highres_box{ background-color: #FAFAFA; color: #222222; font-size: x-small; box-shadow: 1px 1px 1px 1px #CCCCCC; border-radius: 5px; padding: 2px; margin: 5px 2px; display: inline-block; } a.more_avail_bitrates_link{ color: #222222; background-color: #FAFAFA; } #more_avail_bitrates_links{ padding: 3px 7px; border-radius: 3px; color: #222222; vertical-align: middle; } #high_res_ext{ font-size: small; } #high_res_help_img{ vertical-align: middle; } #download_movie_box_title{ text-align: center; } #download_movie_box_part_label{ font-weight: bold; text-align: center; } #download_movie_box_format_label{ font-size: small; font-weight: bold; padding-right: 15px; padding-left: 15px; vertical-align: middle; } #download_movie_box_high_res_link{ color: #444; } #download_movie_box{ border: #CCCCCC solid 1px; margin: 0 auto; width: 90%; } </style> <script> $(document).ready(function(){ $('.more_avail_bitrates_box').hide(); $('a.more_avail_bitrates_link').click(function(){ var id_box = $(this).attr('id').replace('link', 'box'); $('#' + id_box).slideToggle(); $(this).text($(this).text() == 'More..'? 'Less..' : 'More..'); return false; }); }); </script><table id="download_movie_box"><tr><td align="right" valign="top" id="download_movie_box_format_label">Mp4:</td><td><a id="download_movie_box_internal_link" href="https://lecturemedia.cern.ch/2021/1054892/1054892-presentation-720p-quality.mp4">720p<br/><span>(presentation)</span></a></td><td><a id="download_movie_box_internal_link" href="https://lecturemedia.cern.ch/2021/1054892/1054892-presentation-360p-quality.mp4">270p<br/><span>(presentation)</span></a></td><td><a id="download_movie_box_internal_link" href="https://lecturemedia.cern.ch/2021/1054892/1054892-presentation-1080p-quality.mp4">1080p<br/><span>(presentation)</span></a></td><td><a id="download_movie_box_internal_link" href="https://lecturemedia.cern.ch/2021/1054892/1054892-presentation-480p-quality.mp4">360p<br/><span>(presentation)</span></a></td><tr><td align="right" valign="top" id="download_movie_box_format_label">Subtitles:</td><td colspan='4' align='left'><div class='cds-video-subtitles'><a id='download_movie_box_internal_link' href='/2021/1054892/1054892_fr.vtt'>FrançAis</a></td><td colspan='4' align='left'><div class='cds-video-subtitles'><a id='download_movie_box_internal_link' href='/2021/1054892/1054892_en.vtt'>English</a></td></tr/></table> </div> <div id="video_detailbox_embed" style="margin:10px"> <style type="text/css"> #embed_video_box{ background-color: #EEE; border: #DDD solid 1px; margin:0 auto; width: 90%; } #embed_video_box_header{ text-align: center; font-size:small; } </style><table id="embed_video_box"> <tr><th colspan="4" id="embed_video_box_header">Copy-paste this code into your page: </th></tr> <tr><td><textarea readonly="readonly" rows="3" cols="60"><iframe width="640" height="360" frameborder="0" src="https://cds.cern.ch/video/2792031?" allowfullscreen></iframe></textarea></td></tr> </table> </div> <tr><td class="formatRecordLabel"> <span style="white-space:nowrap;">Author(s)</span> </td><td style="padding-left:5px;"><a href="https://cds.cern.ch/search?f=author&p=Urbaniec%2C%20Bartek&ln=en">Urbaniec, Bartek</a> (speaker) (CERN)</td></tr> <tr><td class="formatRecordLabel"> Corporate <span style="white-space:nowrap;">author(s)</span> </td><td style="padding-left:5px;">CERN. Geneva</td></tr> <!-- In case of ``980__a:E-LEARNING``, the label is changed by a javascript code above as requested on RQF0820114 --> <script type="text/javascript"> /* * Changes the Imprint title to Date - Duration as requested by RQF0820114 * This is a hack not to touch the general imprint format element */ $(document).ready(function() { var collections = 'Indico'; if (collections.indexOf('E-LEARNING') > -1) { $('.cern-imprint-label').text('Date - Duration'); } }) </script> <tr><td class="formatRecordLabel cern-imprint-label"> Imprint </td><td style="padding-left:5px;">2021-12-02. - 3240.</td></tr> <!-- End --> <tr><td class="formatRecordLabel"> Series </td><td style="padding-left:5px;">(<a href="/search?f=490__a&p=Academic%20Training%20Lecture%20Regular%20Programme">Academic Training Lecture Regular Programme</a> ; 2021-2022)</td></tr> <tr><td class="formatRecordLabel"> Lecture note </td><td style="padding-left:5px;"> on 2021-12-02T11:00:00<br/></td></tr> <tr><td class="formatRecordLabel"> Subject category </td><td style="padding-left:5px;">Academic Training Lecture Regular Programme</td></tr> <tr><td class="formatRecordLabel"> Abstract </td><td style="padding-left:5px;"><span><span>Engineering APIs for Accelerator Controls Software</span></span> <p><span><span>This lecture will provide a general introduction to the challenges of developing Application Programming Interfaces (APIs), and integrating and evolving multiple APIs from different systems over time. It will go on to refer to real-life examples in the world of CERN Accelerator Controls, serving a large and heterogenous user community with a variety of technical and functional requirements. During the lecture, insights will be shared on technologies used and best practices when it comes to designing and developing scalable and reliable APIs.</span></span></p> <p><strong>Short bio Bartek Urbaniec</strong></p> <p>With a MSc in Computer Science, Bartek is a senior Controls engineer focused on topics of systems integration, configuration and full-stack software development. Prior to becoming a staff member in 2017, Bartek has worked in the CERN Controls domain for Cryogenics, other Industrial and accelerator controls systems. Since then, he has taken a leading role in the design and development of systems such as Timber and Accelerator Schedule Management. He is currently leading the Controls Configuration Service - a core component of the CERN Control System.</p> <p> </p></td></tr> <tr><td class="formatRecordLabel"> Copyright/License </td><td style="padding-left:5px;"><a href="https://copyright.web.cern.ch/">© 2021-2024 CERN</a></td></tr> <tr><td class="formatRecordLabel"> Submitted by </td><td style="padding-left:5px;"><a href="mailto:marika.flygar@cern.ch">marika.flygar@cern.ch</a></td></tr> </table> <br/><div><div style="clear: both;"> </div></div> <script type="text/javascript"> // Initially hide: $(".longCaption").hide(); // Allow to toggle visibility: $(".toggleLongCaption").toggle(function(){ $(this).siblings(".longCaption").show('fast'); var thisElem = $(this); thisElem.text(thisElem.text() === "more" ? "less" : "more"); },function(){ $(this).siblings(".longCaption").hide('fast'); var thisElem = $(this); thisElem.text(thisElem.text() === "more" ? "less" : "more"); }); </script> <br/><br/><div align="right"><div style="padding-bottom:2px;padding-top:30px;"><span class="moreinfo" style="margin-right:10px;"> <a href="" class="moreinfo">Back to search</a> </span></div></div> <div class="bottom-left-folded"><div class="recordlastmodifiedbox" style="position:relative;margin-left:1px"> Record created 2021-12-02, last modified 2024-06-26</div></div> <div class="bottom-right-folded" style="text-align:right;padding-bottom:2px;"> <span class="moreinfo" style="margin-right:10px;"><a href="/search?ln=en&p=recid%3A2792031&rm=wrd" class="moreinfo">Similar records</a></span></div> </div> </div> </div> <br/> <br /> <div class="detailedrecordminipanel"> <div class="top-left"></div><div class="top-right"></div> <div class="inside"> <div id="detailedrecordminipanelfile" style="width:33%;float:left;text-align:center;margin-top:0"> <small class="detailedRecordActions">External link:</small><br /><small><a href="https://indico.cern.ch/event/1054892/"><img style="border:none" src="/img/file-icon-text-34x48.gif" alt="Download fulltext" /><br />Event details</a></small> </div> <div id="detailedrecordminipanelreview" style="width:30%;float:left;text-align:center"> </div> <div id="detailedrecordminipanelactions" style="width:36%;float:right;text-align:right;"> <ul class="detailedrecordactions"> <li><a href="/yourbaskets/add?ln=en&recid=2792031">Add to personal basket</a></li> <li>Export as <a style="text-decoration:underline;font-weight:normal" href="/record/2792031/export/hx?ln=en">BibTeX</a>, <a style="text-decoration:underline;font-weight:normal" href="/record/2792031/export/hm?ln=en">MARC</a>, <a style="text-decoration:underline;font-weight:normal" href="/record/2792031/export/xm?ln=en">MARCXML</a>, <a style="text-decoration:underline;font-weight:normal" href="/record/2792031/export/xd?ln=en">DC</a>, <a style="text-decoration:underline;font-weight:normal" href="/record/2792031/export/xe?ln=en">EndNote</a>, <!-- <a style="text-decoration:underline;font-weight:normal" href="/record/2792031/export/xe8x?ln=en">EndNote (8-X)</a>,--> <a style="text-decoration:underline;font-weight:normal" href="/record/2792031/export/xn?ln=en">NLM</a>, <a style="text-decoration:underline;font-weight:normal" href="/record/2792031/export/xw?ln=en">RefWorks</a> </li> </ul> <div style='padding-left: 13px;'> <!-- JQuery Bookmark Button BEGIN --> <div id="bookmark"></div> <div id="bookmark_sciencewise"></div> <style type="text/css"> #bookmark_sciencewise, #bookmark {float: left;} #bookmark_sciencewise li {padding: 2px; width: 25px;} #bookmark_sciencewise ul, #bookmark ul {list-style-image: none;} </style> <script type="text/javascript" src="/js/jquery.bookmark.min.js"></script> <style type="text/css">@import "/css/jquery.bookmark.css";</style> <script type="text/javascript">// <![CDATA[ $.bookmark.addSite('sciencewise', 'ScienceWise.info', 'https://cds.cern.ch/img/sciencewise.png', 'en', 'bookmark', 'http://sciencewise.info/bookmarks/cds:2792031/add'); $('#bookmark_sciencewise').bookmark({sites: ['sciencewise']}); $('#bookmark').bookmark({ sites: ['facebook', 'twitter', 'linkedin', 'google_plusone'], icons: '/img/bookmarks.png', url: 'https://cds.cern.ch/record/2792031', addEmail: true, title: "Controlling the CERN Accelerator Complex", description: "<!--HTML--><h3><span><span>Engineering APIs for Accelerator Controls Software</span></span></h3>\n\n<p><span><span>This lecture will provide a general introduction to the challenges of developing Application Programming Interfaces (APIs), and integrating and evolving multiple APIs from different systems over time. It will go on to refer to real-life examples in the world of CERN Accelerator Controls, serving a large and heterogenous user community with a variety of technical and functional requirements. During the lecture, insights will be shared on technologies used and best practices when it comes to designing and developing scalable and reliable APIs.</span></span></p>\n\n<p><strong>Short bio Bartek Urbaniec</strong></p>\n\n<p>With a MSc in Computer Science, Bartek is a senior Controls engineer focused on topics of systems integration, configuration and full-stack software development. Prior to becoming a staff member in 2017, Bartek has worked in the CERN Controls domain for Cryogenics, other Industrial and accelerator controls systems. Since then, he has taken a leading role in the design and development of systems such as Timber and Accelerator Schedule Management. He is currently leading the Controls Configuration Service - a core component of the CERN Control System.</p>\n\n<p> </p>" }); // ]]> </script> <!-- JQuery Bookmark Button END --> </div> </div> <div style="clear:both;margin-bottom: 0;"></div> </div> <div class="bottom-left"></div><div class="bottom-right"></div> </div> </div></div> <footer id="footer" class="pagefooter clearfix"> <!-- replaced page footer --> <div class="pagefooterstripeleft"> CERN Document Server :: <a class="footer" href="https://cds.cern.ch/?ln=en">Search</a> :: <a class="footer" href="https://cds.cern.ch/submit?ln=en">Submit</a> :: <a class="footer" href="https://cds.cern.ch/youraccount/display?ln=en">Personalize</a> :: <a class="footer" href="https://cds.cern.ch/help/?ln=en">Help</a> :: <a class="footer" href="https://cern.service-now.com/service-portal?id=privacy_policy&se=CDS-Service" target="_blank">Privacy Notice</a> <br /> Powered by <a class="footer" href="http://invenio-software.org/">Invenio</a> <br /> Maintained by <a class="footer" href="https://cern.service-now.com/service-portal?id=service_element&name=CDS-Service">CDS Service</a> - Need help? Contact <a href="https://cern.service-now.com/service-portal?id=service_element&name=CDS-Service">CDS Support</a>. <br /> </div> <div class="pagefooterstriperight"> <div class="cern-logo"> <a id="logo" href="http://cern.ch" title="CERN" rel="CERN" ><img src="https://cds.cern.ch/img/cern_theme/img/cern-logo-large.png" alt="CERN" /></a> </div> <div class="cern-languagebox"> This site is also available in the following languages:<br /><a href="/record/2792031?ln=bg" class="langinfo">Български</a> <a href="/record/2792031?ln=ca" class="langinfo">Català</a> <a href="/record/2792031?ln=de" class="langinfo">Deutsch</a> <a href="/record/2792031?ln=el" class="langinfo">Ελληνικά</a> <span class="langinfo">English</span> <a href="/record/2792031?ln=es" class="langinfo">Español</a> <a href="/record/2792031?ln=fr" class="langinfo">Français</a> <a href="/record/2792031?ln=hr" class="langinfo">Hrvatski</a> <a href="/record/2792031?ln=it" class="langinfo">Italiano</a> <a href="/record/2792031?ln=ja" class="langinfo">日本語</a> <a href="/record/2792031?ln=ka" class="langinfo">ქართული</a> <a href="/record/2792031?ln=no" class="langinfo">Norsk/Bokmål</a> <a href="/record/2792031?ln=pl" class="langinfo">Polski</a> <a href="/record/2792031?ln=pt" class="langinfo">Português</a> <a href="/record/2792031?ln=ru" class="langinfo">Русский</a> <a href="/record/2792031?ln=sk" class="langinfo">Slovensky</a> <a href="/record/2792031?ln=sv" class="langinfo">Svenska</a> <a href="/record/2792031?ln=zh_CN" class="langinfo">中文(简)</a> <a href="/record/2792031?ln=zh_TW" class="langinfo">中文(繁)</a> </div> </div> <!-- replaced page footer --> </footer> <script type="text/javascript"> var SyndeticsBookCovers = (function() { var SMALL_SIZE = "sc.gif", MEDIUM_SIZE = "mc.gif", RAW_URL = "https://secure.syndetics.com/index.aspx?isbn=THEISBN/THESIZE&client=cernlibrary"; replaceCover = function(imgElement, isbns, hdFormat) { var img = new Image(), size = hdFormat ? MEDIUM_SIZE : SMALL_SIZE; var _isbns = isbns.sort(function(a, b) { // sort from shortest to longest ISBN (more modern) return a.length > b.length ? 1 : -1; }); function next() { var isbn = _isbns.pop(); if (isbn) { var url = RAW_URL.replace("THEISBN", isbn).replace("THESIZE", size); img.src = url; } } function done() { imgElement.src = img.src; } img.onload = function() { if (this.width > 1) { done(); } else { next(); } }; next(); }; return { replaceCover: replaceCover }; })(); $(document).ready(function() { // get book covers $("img.book-cover").each(function() { var $this = $(this), strIsbns = $this.data("isbns") || "", isbnsArray = String(strIsbns).split(","), hdFormat = $this.hasClass("hd"); SyndeticsBookCovers.replaceCover(this, isbnsArray, hdFormat); }); // WebNews tooltips $.ajax({ url: "/news/tooltips", success: function(data) { create_tooltips(data); }, dataType: "json", cache: false }); }); </script> <!-- Feedback script --> <script src="//cds.cern.ch/js/feedback.js"></script> <!-- Feedback script --> <!-- Matomo --> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://webanalytics.web.cern.ch/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '756']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Matomo Code --> </body> </html>