If you're seeing this message, it means we're having trouble loading external resources on our website.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

Main content

Bill Mills, Physicist and Interdisciplinary Programmer

Hi, I'm Bill Mills!

What do you work on?

These days, my work is all about the many ways good programming, user interfaces, and computing user experience can help science move faster and be more fun! I work for TRIUMF, Canada’s national lab for nuclear physics, as a web technology specialist and software project manager for the GRIFFIN experiment. GRIFFIN is a cutting edge new gamma ray spectrometer, designed to record data about radioactive particles more efficiently and at much higher rates than any previous experiment, allowing us to get a more detailed picture of the nucleus of the atom than ever before.
For GRIFFIN, my work focuses on modernizing the way scientists interact with their experiment. Past experiments in my field have relied on rudimentary displays to communicate to scientists what was going on at the moment with their experiment; imagine long lists of numbers arranged in tables nested in more tables, scattered across a lot of different places. This was fine decades ago, when an experiment might only involve a relatively small number of simple devices - but modern experiments can have thousands of detectors and data streams (GRIFFIN alone will produce 200 TB of data every week), and an enormous support infrastructure on top of that.
Our experiments have grown too big and too complicated to manage with disorganized interfaces and simplistic reporting. And if that wasn’t bad enough, different teams of scientists will be flying in to use GRIFFIN all the time - they don’t have the bandwidth to learn a complicated user interface on top of conducting their experiments. Therefore, GRIFFIN has to have a user interface that is as intuitive and easy to use as possible, without sacrificing detail or power; that’s why for the past year, I’ve been using all the cool ideas and technologies the JavaScript community has built to make a user interface that will let scientists get started doing science as fast as possible when they arrive at the lab.
A development version of the dashboard I built for GRIFFIN, from the first online test of the SPICE detector.
Web based detector efficiency calculator for GRIFFIN and its sister detectors, which replaced pen-and-paper (!) calculations of the same.
In addition to my user interface work, I’m also trying to help scientists modernize the way they write code by getting them to use the tools used by real software developers. Computing has become so central to our methodology, that you simply cannot be a serious physicist today without writing a lot of code - but up until now, the physics community has yet to catch up with good computing education and techniques. Most physicists learn to program by simply guessing until they get something that (sort of) works. Strategies like version control and open source software collaboration were developed by programmers to streamline the development process; if scientists could learn from these strategies, we could not only supercharge how we do science, but make it more open and reproducible too. Labs in all fields need people who are able to bring in fresh ideas from outside their usual sphere, so that scientific techniques can continue to grow and evolve, and that’s exactly what I’m trying to do between physics and computing today.

How did you learn to program?

I started my programming life as a grad student working on the ATLAS experiment on the LHC at CERN - and it was a disaster! I had had exactly one class in programming as an undergraduate - which I failed. I knew nothing about coding, at all, and was convinced I was terrible at it - and then suddenly as a PhD student, I was writing code full time. For five years, I muddled through writing a sophisticated analysis package which formed the core of my dissertation - but it actually wasn’t then that I really learned to program. What I learned from my experiences in grad school was how lost and adrift professional science was in terms of a culture of good computing - and what an enormous leap forward we could make if we learned to do it right.
After grad school is when I really learned to program. As was the case for a lot of professional academics, science jobs were few and far between after grad school. While I was looking for work, my partner, a noted web developer in the Vancouver web development scene, suggested I teach myself some JavaScript, and start showing up to the local software meetup groups around town. This was brilliant advice, since it turned out that Vancouver had (and still has) a vibrant software startup scene which welcomed me with open arms, supporting me as I taught myself the basics of web design and development. By interacting with the Vancouver scene, I realized that there was a very rich culture not only of computing technology, but technique as well. It was this refined craftspersonship that was missing from computing in science, and I’ve been working to bring those two worlds together ever since.

What do you do when you're not working?

When I’m not programming, I’m probably teaching about programming! I’ve mentored for Ladies Learning Code, an educational outreach program to help break down barriers for women interested in learning to code, and I’m very excited to be almost finished my certification to teach for Software Carpentry, a bootcamp workshop program designed to teach coding to scientists.
I’m also currently building a free service to match volunteer developers with scientists looking for coding mentorship, and am exploring the possibility of bringing the maker movement to lab by helping my colleagues in ecology and agriculture learn about Arduino electronics prototyping and other open hardware options for modernizing their experiments.
I also try to get to as many conferences as possible to talk to programmers about working together to make science faster and better - here’s me at LXJS in Lisbon, Portugal in 2013 with the brilliant Angelina Fabbro, speaking about scientists and programmers teaming up:
Khan Academy video wrapper
LXJS 2013 - Bill Mills and Angelina Fabbro - JavaScript for ScienceSee video transcript
When I’m really properly away from the computer, I try and find time to volunteer with environmental groups in my community; I am passionate about correcting our relationship with nature, and wrote content and research for SPEC in Vancouver for some time.

What’s your one piece of advice for new programmers?

Never forget that there is no such thing as an inborn skill. It’s easy to look at great programmers and feel really inadequate, like you’ll never measure up or be a ‘real’ programmer. But I have had the privilege of meeting some of the greatest programmers on the web today, and they all have had the same experience - they all felt like fakes and impostors when they were starting out, and none of them thought it was easy at first, no matter how easy they make it look now. If you have written one single line of code, then you are a real programmer - and if you keep on coding and learning, you will one day be a master, too.

Want to join the conversation?

  • blobby green style avatar for user crx_curve_carver
    I am an aspiring physicist and since you work around them quite a bit, I want to ask how important having a knowledge of computer programming is for a physicist?
    (17 votes)
    Default Khan Academy avatar avatar for user
    • duskpin tree style avatar for user I AM A PERSON
      yeah it is Absolutely crucial. All fields of physics today have really stringent computing requirements on them - whether it's running over the massive datasets that an experiment like GRIFFIN or the LHC produces, or doing intricate theoretical simulations, or doing complicated analysis of datasets where new physics is only just beginning to poke its head up out of the background noise, programming is key. And the real clincher is, no one is going to do it for us! Our needs are so specialized, thatthere is no commercial solutions we can just buy to do it for us, so we program it all ourselves. Most physicists I work with spend at least 50% of their time programming, and many much more than that.

      It's so awesome that you are interested in physics, we would love to have you! You can really do yourself a big favour and jumpstart your research and your career by learning some programming if you have any spare time to do so now. Start with some python if you've never programmed much before, and when you're comfortable with that, try a bigger challenge with some C or C++ - if you follow it through I promise it will pay off bigtime by the time you get to the lab.
      (1 vote)
  • male robot donald style avatar for user Ryan Merritt
    Honestly, do programmers make these bios on KA to advertise their programmed products? Because no less then 50% of what these bios "teach" is about the programmer's product.

    I'm not trying to offend these people, but honestly, some of this looks like an ad.
    (0 votes)
    Default Khan Academy avatar avatar for user
  • marcimus pink style avatar for user D.E.Manthey
    How much does this guy make in money?
    (1 vote)
    Default Khan Academy avatar avatar for user
    • spunky sam blue style avatar for user Dalendrion
      I truly have no idea.
      But that's not really important in my opinion. What's more important is that you do what you like.
      If you love your job, you will get good at it. If you're good at your job, you'll make money.
      If you hate your job, you'll be bad at it. If you're bad at your job, you'll either make little money, or you'll get burned out.

      Bottom line: don't worry about money. Worry about what you want to do. The money will come later.
      (6 votes)
  • blobby green style avatar for user nor11884881
    what the way to contact you?
    Im PhD candidate need a help in programming
    (2 votes)
    Default Khan Academy avatar avatar for user
  • female robot amelia style avatar for user Russell Jones
    To be honest Im complete beginner with developing however can somebody answer why would Bill use JavaScript instead of C++ as the latter from all the comments Ive read so far seems to be much more powerful tool?
    (1 vote)
    Default Khan Academy avatar avatar for user
  • starky tree style avatar for user Vannessa Serrano Tamayo
    Do you know how to use visual studio 2010? if yes I want to seek for help :(
    (1 vote)
    Default Khan Academy avatar avatar for user
  • leafers seed style avatar for user Utkarsh Srivastava
    Hello sir, I am a 3rd-year b.tech Electronics and communication student. I am a native of India. After devoting 3 years of my life learning engineering I found that there is not much scope for ECE in India so I decided to switch to computer sector. I learned a few programming languages like C, Java, Python etc. I need you to guide me how can I improve and get in this sector as a software developer. please suggest me the programming languages or the skills of software which I need to work and improve on to achieve my goal.
    Hoping a positive response thank you..!
    (1 vote)
    Default Khan Academy avatar avatar for user
  • blobby green style avatar for user cuevasroger9
    I'm contemplating going to a University to complete my education, emphasizing computer science. I'm through my general ed requirements. I'm not certain about what field to pursue yet, and am hesitant to jump into any special field, since I don't want to invest time into something that won't exist by the time I graduate. How would you approach this journey knowing what you know now?
    (1 vote)
    Default Khan Academy avatar avatar for user
    • old spice man green style avatar for user Bob Lyon
      There was a time when formal education was for learning some core fundamentals, and learning how to learn. A university was not just a super-charged (super-expensive?) trade school.

      Note Dr. Mills is trained Physicist, yet a programmer worthy of interviewing.

      So, Computer Science and Computer Engineering will exist at least for the next 100 years. Specific languages, coding platforms, and hardware may not. That shouldn't matter. With a good education, you can change with the times.
      (1 vote)
  • duskpin ultimate style avatar for user Bobba Tea
    How can you ask for user typed input in javascript. What is the syntax
    (1 vote)
    Default Khan Academy avatar avatar for user
  • blobby green style avatar for user kimbowajohn
    https://www.sherwin-williams.com/visualizer/ by visiting that site please tell me what i need to learn to be able to create a similar visualizer. located on that site.
    (1 vote)
    Default Khan Academy avatar avatar for user