|
| 1 | +<!DOCTYPE html> |
| 2 | +<html lang="en"> |
| 3 | +<head> |
| 4 | + |
| 5 | + <meta charset="utf-8"> |
| 6 | + |
| 7 | + <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| 8 | + <meta name="viewport" content="width=device-width, initial-scale=1"> |
| 9 | + <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> |
| 10 | + <!-- Bootstrap --> |
| 11 | + <link href="css/bootstrap.min.css" rel="stylesheet"> |
| 12 | + <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> |
| 13 | + <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> |
| 14 | + <!--[if lt IE 9]> |
| 15 | + <script src="js/html5shiv.min.js"></script> |
| 16 | + <script src="js/respond.min.js"></script> |
| 17 | + <![endif]--> |
| 18 | + |
| 19 | + <link href="css/styles.css" rel="stylesheet"> |
| 20 | + <title>Ian Thomas - Scientific Software Developer</title> |
| 21 | +</head> |
| 22 | +<body> |
| 23 | + <div id="content-head"> </div> |
| 24 | + <div class="container-fluid fond fond5 parallax"> |
| 25 | + <div class="container"> |
| 26 | + <div class="col-md-10 col-md-push-1 fleche-retour"> |
| 27 | + <a href="the-team.html"><img class="fleche-gauche" src="img/fleche-gauche.svg"><span>The team</span></a> |
| 28 | + </div> |
| 29 | + </div> |
| 30 | + </div> |
| 31 | + <div class="container"> |
| 32 | + <div class="col-md-8 col-md-push-2"> |
| 33 | + <div class="fiche"> |
| 34 | + <div class="text-center"> |
| 35 | + <img src="img/avatar/Ian.jpg" srcset="img/avatar/Ian@2x.jpg 2x" class="img-circle avatar"> |
| 36 | + <h3><strong>Ian Thomas</strong><br/> |
| 37 | + Scientific Software Developer |
| 38 | + </h3> |
| 39 | + <div class="reseau"> |
| 40 | + <a target="_blank" href="https://github.com/ianthomas23"><img class="twi-gith" src="img/github.svg"></a> |
| 41 | + </div> |
| 42 | + <p> @ianthomas23 </p> |
| 43 | + </div> |
| 44 | + <div class="description"> |
| 45 | + |
| 46 | + <p>Ian Thomas is a Scientific Software Developer at QuantStack. He holds a BA in Physics from Oxford University and PhD in ocean modeling from the University of Southampton.</p> |
| 47 | + |
| 48 | + <p>He has particular interest in data analysis and visualisation, leaning towards solving mathematical and geometric problems.</p> |
| 49 | + |
| 50 | + <p>Ian has many years' experience as an open-source contributor. He is a core maintainer of <a href="https://github.com/bokeh/bokeh">Bokeh</a>, a library for interactive visualisation in web browsers, and the lead maintainer of <a href="https://github.com/contourpy/contourpy">ContourPy</a>, a Python/C++ library for calculating contours. He has also made significant contributions to <a href="https://github.com/matplotlib/matplotlib">Matplotlib</a> and <a href="https://github.com/holoviz/datashader">Datashader</a>.</p> |
| 51 | + |
| 52 | + </div> |
| 53 | + </div> |
| 54 | + </div> |
| 55 | + </div> |
| 56 | + |
| 57 | + <div class="spacer big"></div> |
| 58 | + |
| 59 | + <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> |
| 60 | + <script src="js/jquery.min.js"></script> |
| 61 | + <!-- Include all compiled plugins (below), or include individual files as needed --> |
| 62 | + <script src="js/bootstrap.min.js"></script> |
| 63 | + |
| 64 | + <div id="content-foot"></div> |
| 65 | + <script src="js/include-menus.js"></script> |
| 66 | + <script> |
| 67 | + |
| 68 | + function isInViewport(node) { |
| 69 | + var rect = node.getBoundingClientRect() |
| 70 | + return ( |
| 71 | + (rect.height > 0 || rect.width > 0) && |
| 72 | + rect.bottom >= 0 && |
| 73 | + rect.right >= 0 && |
| 74 | + rect.top <= (window.innerHeight || document.documentElement.clientHeight) && |
| 75 | + rect.left <= (window.innerWidth || document.documentElement.clientWidth) |
| 76 | + ) |
| 77 | + } |
| 78 | + |
| 79 | + |
| 80 | + $(window).scroll(function() { |
| 81 | + var scrolled = $(window).scrollTop() |
| 82 | + $('.parallax').each(function(index, element) { |
| 83 | + var initY = $(this).offset().top+200 |
| 84 | + var height = $(this).height() |
| 85 | + var endY = initY + $(this).height() |
| 86 | + // Check if the element is in the viewport. |
| 87 | + var visible = isInViewport(this) |
| 88 | + if(visible) { |
| 89 | + var diff = scrolled - initY |
| 90 | + var ratio = Math.round((diff / height) * 100) |
| 91 | + var move = parseInt(-(ratio * 1.5)); |
| 92 | + // if (move>90)move = 90; |
| 93 | + $(this).css('background-position','center ' + move + 'px') |
| 94 | + } |
| 95 | + }) |
| 96 | + |
| 97 | + $('.icons').each(function(index, element) { |
| 98 | + var visible = isInViewport(this); |
| 99 | + if(visible) { |
| 100 | + $('.icon-content').each(function (index,element) { |
| 101 | + $(this).delay(index*500).fadeIn(); |
| 102 | + }); |
| 103 | + } |
| 104 | + }); |
| 105 | + }); |
| 106 | + |
| 107 | + |
| 108 | + </script> |
| 109 | + </body> |
| 110 | + </html> |
0 commit comments