Main content
Computer programming
Course: Computer programming > Unit 8
Lesson 1: Meet the professional- Welcome to "Meet the professional"!
- Maya Bello, Software engineer and YouTuber
- Sarah Northway, Game Maker and Nomad
- Brenda Jin, Mobile Prototyper and DJ
- Tom Heinan, Mobile Developer, Pilot, and Zombie
- Amy Quispe, Data Liberator and Developer Relater
- Bill Mills, Physicist and Interdisciplinary Programmer
- Carrie Cai, Researcher and Dancer
- Lauren Haynes, Product Manager and Lindy Hopper
- Marcos Ojeda, Designer, DJ, and Dog Owner
- Allyson Lubimir, Support Engineer and Cat Lover
© 2023 Khan AcademyTerms of usePrivacy PolicyCookie Notice
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.
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:
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?
- 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)
- 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)
- 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)- No, that's not the intention. We just want to show the diversity of products that get made with engineering. These were all people that I reached out to, and asked to give that information. Sorry if they seem ad-like!(43 votes)
- How much does this guy make in money?(1 vote)
- 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.(5 votes)
- what the way to contact you?
Im PhD candidate need a help in programming(2 votes)- Maybe you missed it, but these links might be helpful.
http://software-carpentry.org/
http://interdisciplinaryprogramming.com/(2 votes)
- 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)
- Saying that language X is more <adjective> than language Y is bound to start a flame war. The choice of a language follows a long series of requirements.(1 vote)
- Do you know how to use visual studio 2010? if yes I want to seek for help :((1 vote)
- 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)- Learning HTML and JS would be useful, since they are two languages that are used in many games, websites, applications, etc.(1 vote)
- 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)
- 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)
- How can you ask for user typed input in javascript. What is the syntax(1 vote)
keyTyped = function(){//your code here};
will do it, but there is no perfect syntax that exists without you creating it.(1 vote)
- 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)