-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcv.html
1 lines (1 loc) · 12.3 KB
/
cv.html
1
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <meta http-equiv="content-language" content="en-gb"/> <meta name="language" content="english"/> <meta name="author" content="charles keepax"/> <meta name="robots" content="index, follow"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <link rel="sitemap" href="/sitemap.xml" type="application/xml" title="Sitemap"/> <link rel="shortcut icon" href="/favicon.ico" type="image/vnd.microsoft.icon"/> <link rel="stylesheet" href="/styles/layout.css" type="text/css" media="screen and (min-width: 750px)"/> <link rel="stylesheet" href="/styles/m_layout.css" type="text/css" media="screen and (max-width:750px)"/> <link rel="stylesheet" href="/styles/p_cv.css" type="text/css" media="print"/> <link rel="stylesheet" href="/styles/cv.css" type="text/css" media="screen and (min-width: 750px)"/> <link rel="stylesheet" href="/styles/m_cv.css" type="text/css" media="screen and (max-width: 750px)"/> <meta name="description" content="Charles Keepax's curriculum vitae, a history of my programming past."/> <meta name="keywords" content="charles keepax, charles, keepax"/> <title>Charles Keepax - Curriculum Vitae</title> </head> <body> <div> <div id="title_container"><h1>Charles Keepax CV</h1></div> <div id="sidebar_background"></div> <div id="column_container"> <div id="sidebar_container"> <img id="sidebar_icon" src="/image/menu.svg" alt="Toggle Navigation Menu" height="24" width="24"/> <ul class="nav_list"> <li class="nav_item"><div><a href="/blog/blog.html"><img class="spicon" src="/image/calendar.svg" height="12" width="12"/>Blog</a></div></li> <li><ol id="blogposts_sidebar" class="nav_list"> <li class="nav_item"><div> <a href="/blog/WebsiteIcons.html">Website Icons</a> </div></li> <li class="nav_item"><div> <a href="/blog/KeypressesFromJoystick.html">Keypresses From Joystick</a> </div></li> <li class="nav_item"><div> <a href="/blog/IntelHEXChecksumsInVim.html">Intel HEX Checksums in Vim</a> </div></li> <li class="nav_item"><div> <a href="/blog/HTCHeroDisassembly.html">HTC Hero Disassembly</a> </div></li> <li class="nav_item"><div> <a href="/blog/CPPForEmbedded.html">C++ for Embedded?</a> </div></li> <li class="nav_item"><div><a href="/blog/archive.html">Blog Archive</a></div></li> <li class="nav_item"><div><a href="/blog/tags.html">Blog Tags</a></div></li> </ol></li> <li class="nav_item"><div><a href="/cv.html"><img class="spicon" src="/image/doc.svg" height="12" width="12"/>Curriculum Vitae</a></div></li> <li><ol class="nav_list"> <li class="nav_item"><div><a href="/cv.html#cv_profile">Profile</a></div></li> <li class="nav_item"><div><a href="/cv.html#cv_employmenthistory">Employment History</a></div></li> <li class="nav_item"><div><a href="/cv.html#cv_education">Education</a></div></li> <li class="nav_item"><div><a href="/cv.html#cv_publications">Publications</a></div></li> <li class="nav_item"><div><a href="/cv.html#cv_references">References</a></div></li> </ol></li> <li class="nav_item"><div><a href="/links.html"><img class="spicon" src="/image/link.svg" height="12" width="12"/>Links</a></div></li> <li><ol class="nav_list"> <li class="nav_item"><div><a href="https://bitbucket.org/charleskeepax">Bitbucket</a></div></li> <li class="nav_item"><div><a href="http://github.com/charleskeepax">Github</a></div></li> <li class="nav_item"><div><a href="http://uk.linkedin.com/pub/charles-keepax/24/b79/59a">LinkedIn</a></div></li> <li class="nav_item"><div><a href="http://stackoverflow.com/users/735744/charles-keepax">Stackoverflow</a></div></li> </ol></li> <li class="nav_item"><div> <a href="mailto:ckeepax@gmail.com"><img class="spicon" src="/image/email.svg" height="12" width="12"/>Contact</a> </div></li> </ul> </div> <div id="content_container"> <div id="cv_profile" class="section"> <h2>Profile</h2> <div class="subsection"> <p>I have been programming professionally for 20 years now, the majority of which has been development of embedded systems in C and C++. I have worked extensively with the Linux kernel and have numerous upstream contributions. Obviously, I am no stranger to assembly language and being in the embedded world I have picked up a fair amount of rudimentary electronics skills and consider myself quite handy with a soldering iron or an oscilloscope. Much of the work I have done has involved fairly intensive signal processing, from designing complex digital filters through to full control system design, although these days I am mostly focused on Linux audio drivers.</p> <p>I enjoy working at the boundry of hardware and software and especially value the opportunity to make upstream contributions as part of my job.</p> </div> </div> <div id="cv_employmenthistory" class="section"> <h2>Employment History</h2> <div class="subsection"> <h3 class="big_title"><a href="http://www.cirrus.com">Cirrus Logic Inc.</a>, <span class="rnote">Edinburgh, Scotland</span></h3> <h3>Principal Software Engineer<div class="rnote">April 2016 - Present</div></h3> <h3>Senior Software Engineer<div class="rnote">August 2014 - April 2016</div></h3> <p>Cirrus Logic acquired Wolfson in August 2014. My role continues to be the development and maintenance of Linux kernel drivers for their mixed signal electronics.</p> </div> <div class="subsection"> <h3 class="big_title"><a href="http://www.wolfsonmicro.com">Wolfson Microelectronic Limited</a>, <span class="rnote">Edinburgh, Scotland</span></h3> <h3>Senior Software Engineer<div class="rnote">March 2014 - August 2014</div></h3> <h3>Software Engineer II<div class="rnote">September 2012 - March 2014</div></h3> <p>My work at Wolfson Microelectronics is primarily focused on the development of Linux kernel drivers to support Wolfson's market leading audio <abbr title="Coder Decoder">CODECs</abbr> and <abbr title="Digital Signal Processor">DSPs</abbr>, as well as supporting the integration engineers. Naturally, I have accumulated numerous upstream kernel contributions as part of this work. Additionally, I have had some exposure to the Android end of the audio stack.</p> <p>Wolfson has an excellent focus on research and development, taking maintaining its position as a major innovator in the audio space very seriously.</p> </div> <div class="subsection"> <h3 class="big_title"><a href="http://www.reactec.com">Reactec Limited</a>, <span class="rnote">Edinburgh, Scotland</span></h3> <h3>Lead Software Engineer<div class="rnote">February 2007 - September 2012</div></h3> <p>As a result of our consultancy work Reactec envisioned a new product, the HAVmeter. The HAVmeter is a health and safety focused small vibration exposure monitor and has since become the main focus of the company's activities. I produced all the firmware and <abbr title="Digital Signal Processing">DSP</abbr> algorithms for the system, assisted on the electronics design and managed the outsourced development of the PC software that accompanies the product. It has been especially rewarding to see an idea all the way through from the back of a napkin to a market leading product.</p> <h3>Software Engineer<div class="rnote">September 2003 - February 2007</div></h3> <p>I joined Reactec as the programmer on the Intelligent Control Unit project. The <abbr title="Intelligent Control Unit">ICU</abbr> was a small, low cost, low power, adaptive controller for the magnetorheological damper Reactec had developed. In addition to writing the firmware and some PC based configuration software, I was heavily involved in the design and simulation of the control algorithms. I thoroughly enjoyed learning about control theory and attempting to model the non-linearity of the magnetorheological fluid.</p> <p>For a short while after the completion of the <abbr title="Intelligent Control Unit">ICU</abbr> I worked primarily on engineering consultancy projects at Reactec, putting the vibration and control theory I had learned into practice. This involved solving complex vibration problems for numerous blue-chip clients.</p> </div> <div class="subsection"> <h3 class="big_title"><a href="http://www.ed.ac.uk">University of Edinburgh</a>, <span class="rnote">Edinburgh, Scotland</span></h3> <h3>Research Assistant<div class="rnote">June 2003 - July 2003</div></h3> <p>My work at the university continued on from my final year dissertation, which centred on an analysis of the Micronet-based Asynchronous Processor architecture. I made some additional improvements to the COMPASS design environment myself and the other researchers had been using; COMPASS was a compiler and simulator for the Micronet, written in C++. Then, in cooperation with my supervisor, published a paper based on a subset of the results of my dissertation. </p> </div> <div class="subsection"> <h3 class="big_title">Kvaerner Professional Services Limited, <span class="rnote">Aberdeen, Scotland</span></h3> <h3>Software Engineer<div class="rnote">July 1999 - October 1999</div></h3> <p>My responsibilities during my summer job at Kvaerner were to analyse functions from specific SMACKS5 (an oil-field control system) projects and create a standard library based on commonality between the user interface components. The library I created eliminated the need for a lot of bespoke code that was being created on a project by project basis.</p> <p>Having programmed exclusively in imperative programming languages until Kvaerner I particularly enjoyed learning the unusal, heavily dataflow based language they used. I recently happened upon <a href="http://code.google.com/p/anic/">ANI</a>, which is incredibily similar, albeit with rather different syntax.</p> </div> </div> <div id="cv_education" class="section"> <h2>Education</h2> <div class="subsection"> <h3 class="big_title"><a href="http://www.ed.ac.uk">University of Edinburgh</a>, <span class="rnote">Edinburgh, Scotland</span></h3> <h3>First Class, BSc(Hon) Computer Science and Artificial Intelligence<div class="rnote">October 1999 - May 2003</div></h3> <ol> <li>Graduated Top of class</li> <li>Class Representative</li> </ol> </div> </div> <div id="cv_publications" class="section"> <h2>Publications</h2> <div class="subsection"> <h3><a href="https://patentscope.wipo.int/search/en/detail.jsf?docId=WO2018158565">Circuit for Monitoring a Socket</a><div class="rnote">August 2018</div></h3> <p>Patent, <span class="rnote">Taylor, Rand, Keepax</span></p> </div> <div class="subsection"> <h3><a href="http://www.wipo.int/pctdb/en/wo.jsp?WO=2009027663">Wind Turbine Support Tower with Pendulum-Damping Means</a><div class="rnote">August 2008</div></h3> <p>Patent, <span class="rnote">Buckingham, Marmo, Keepax et al.</span></p> </div> <div class="subsection"> <h3><a href="http://www.wipo.int/pctdb/en/wo.jsp?WO=2007072068">Monitoring Apparatus and Method</a><div class="rnote">December 2006</div></h3> <p>Patent, <span class="rnote">Buckingham, Keepax et al.</span></p> </div> <div class="subsection"> <h3><a href="http://www.wipo.int/pctdb/en/wo.jsp?wo=2005019682">Vibration Control System</a><div class="rnote">August 2004</div></h3> <p>Patent, <span class="rnote">Buckingham, Keepax et al.</span></p> </div> <div class="subsection"> <h3>Limits on <abbr title="Instruction Level Parallelism">ILP</abbr> in Micronet-based Architectures<div class="rnote">July 2003</div></h3> <p>Proceedings of 14th Asynchronous Forum, <span class="rnote">D.K. Arvind and C. Keepax</span></p> </div> </div> <div id="cv_references" class="section"> <h2>References</h2> <div class="subsection"><p>Available on request.</p></div> </div> </div> <div id="footer_spacer"></div> </div> <div id="footer_container"> <p>Copyright © Charles Keepax 2010-2022. All rights reserved.<a id="privacy_policy" href="/privacy.html">Privacy Policy</a></p> </div> </div> <script type="text/javascript" src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script type="text/javascript">$(document).ready(function(){var a=true;if($("#sidebar_icon").is(":visible")){a=false;$("#sidebar_container > .nav_list").animate({height:"hide"},300)}$(window).resize(function(){if($(window).width()>750||a){$("#sidebar_container > .nav_list").show()}else{$("#sidebar_container > .nav_list").hide()}});$("#sidebar_icon").click(function(){a=!a;$("#sidebar_container > .nav_list").animate({height:"toggle"},300)});$("h2").click(function(){$(this).siblings(".subsection").animate({height:"toggle"},300);if($(this).children("span").length){$(this).children("span").remove()}else{$(this).prepend("<span>+ </span>")}})});</script> </body> </html>