Author Archives: Cameron Lee-Ming

Hey all! I am a student in the Thermofluids specialization of UBC mechanical engineering. Although I hail from the tiny island of Bermuda, my aim is to make the biggest impact possible in sustainable energy and transportation. I have a wide range of hobbies, including piano, hydroponics (a subset of my general obsession with horticulture) and more recently, hiking.

Project Ideas for Curious Students (2020)

I get it. Since COVID hit, many of us have been trapped at home, wondering how to make the best of the excess time not available for socializing, travelling or just generally going outside.Or, maybe you are reading this post-pandemic, still wondering if there is more to engineering than equations and datasheets. Well, my dear reader, I empathize with you and would like to propose some of my own suggestions! 

First, a bit of background. I am a student in the Mechanical Engineering department here at UBC. The program itself is excellent; subjects are often well-integrated, and the faculty is aware of the need to tie theory with practice. Nonetheless, the allure of personal projects remains if you want to venture beyond the fundamentals taught in class, or to have total freedom regarding what you choose to create. 

There is one big challenge with mechanical projects: you may find yourself grappling with the financial burden of doing so or worried about the safety implications of your projectI say this because outside of my design team, I am often constrained by these limitationsThe goal of this blog series will be to highlight some of the resources available to students within the mechanical engineering department, and hopefully to give inspiration to those who are perhaps unsure of exactly what they want to create. 

See below for a list of all the blog posts in this series: 

Passion Projects 

Engineering Design Teams 

CAD and Simulation 


Project Ideas for Curious Students: Passion Projects

I have no shame in admitting that most of the ideas for my projects come into mind while I am bored of assignments. If I see value in a project and can afford to pursue it, I probably will. I do know people who take this to the extreme: a close friend of mine built a PID-controlled oven which can be pressurized or vacated of air, and thus used for manufacturing small, high-quality carbon fibre components.  

Depicted: my hydroponics system, for which I never hesitate to tell everybody about.

I actually think that there is value in pursuing projects in this manner. Ideas that get you excited are the ones that you should pay the most attention to; they are the most likely to keep you engaged, and will typically put you in a position where you learn much faster than if you were forced to do the work. When I started my hydroponics project, I did not expect to learn much more than I already knew about plants. Instead, I found myself learning about the mechanisms of nutrient uptake, and getting started with Arduino. As summarized by Marc Anthony, “if you do what you love, you’ll never work a day in your life.” I think that in some cases where there is a market for your idea or if it is applicable to what you want to do, you may end up opening new opportunities for yourself in the future. Perhaps you found a passion that you never realized you had, or maybe you will find that it was not as exciting as you originally thought.  

Still in need of inspiration? Here is a list of ideas that might help to get your brain moving:  

  • Remote-controlled vehicles  
  • Robotic arms  
  • Drones  
  • CNC machines  
  • Car modifications  
  • Anything that uses a 3D printer

Many of these suggestions are relatively expensive, however the resources necessary to complete them are generally quite accessible. While COVID-19 restrictions confine many of us to our rooms, projects related to robotics, as well as drones often have a plethora of components that “just work” once you assemble them, massively simplifying the design and assembly process.   

Whatever you decide to pursue, be sure to check local regulations, your tenancy agreement and to never skimp on safety research! I remember how one of my projects made use of LiPo batteries, which my friend and I found can carry an explosion risk if overcharged, excessively discharged or punctured. Safe to say that the additional safety equipment, including an explosion-proof case were worth the investment. We also learned that there are licensing regulations around flying drones above a threshold size (250 grams in our case). Similarly, making my own hydroponic nutrient solution meant that I had to be familiar with any of the safety risks related to the chemicals that I had in use. With any project, the importance safety and compliance with restrictions cannot be understated.  

Project Ideas for Curious Students: Engineering Design Teams

This year marks my fourth year on Formula UBC, one of many engineering design teams at UBC. I can unequivocally say that it has been the highlight of my university experience so far. When I joined, I was not sure what to expect. I knew that I wanted to learn more about aerodynamics and CFD, but I never expected that 2 years later, I would be leading the aerodynamics sub-team. Even more so, I never anticipated learning anything about machining, composites or even race cars (shocking, I know). I never imagined myself running track tests or figuring out how to manage people. And I certainly never saw myself driving the car.  

You will often hear that the value of engineering design teams is that they are an opportunity to apply concepts learned in class to a real project. In my experience, there is a stark difference between knowing something, and understanding it well enough to apply the concept to a real system. Moreover, you get to see the result of your design decisions on a working (or failing) system.  

Depicted: formula UBC front wing during test day. Test days are used to verify that the final product behaves as intended in its design.

It also gives you the opportunity to explore far beyond what is taught in class: for example, composites manufacture and fluid dynamics simulation, to the best of my knowledge, are only taught in a very limited capacity. Outside of the Mech 2 curriculum, design teams are also a great way to link concepts from seemingly disparate subjects. On Formula, large projects cannot be completed successfully without adequate communication with members from other subteams, since these systems will have to be able to work together on the car. In some cases, such as with the pneumatics, different subsystems will be competing for the same resources.  

Beyond technical skills, the one experience I feel is often overlooked is interpersonal skills. Learning to manage others, to deal with an occasionally political environment and how to work with sponsors can prove to be a very humbling experience. Interpersonal skills come with experience, and learning them in a fast-paced environment is excellent practice for the “real world.” Your sponsors are real stakeholders, who often want to see a return on their investment of potentially thousands of dollars into your project through representation and promotion of their brand. Over the past year, I have truly begun to appreciate the significance of the proverb “if you want to go fast, go alone…if you want to go far, go together.” What my team has been able to accomplish by creating a healthy, collaborative team environment has been nothing short of amazing.  

If you are considering whether not you should join a design team, my answer to you is an emphatic YES! 

Project Ideas for Curious Students: CAD and Simulation

Fortunately, engineering coursework typically requires a fair amount of CAE (computer-aided engineering) software, which can double as a creative tool whenever you have an idea that you would like to experiment with. I have found that a good combination of CAD, simulation software and some programming is sufficient for a significant portion of the design of low-risk projects.

To those who are not yet aware, UBC Engineering students have free access to several software licenses specific to the engineering department:


Matlab is a programming language built specifically for technical work. Many scripting languages require the addition of libraries for tasks such as data visualization for example, which Matlab excels at. Well-integrated with this is Simulink, which allows you to model relatively complex systems in a more intuitive manner than explicitly writing code.

Your coursework will do a good job at teaching you the basics of Matlab, which you can choose to take further on your own. For all engineering-focussed math courses including linear algebra, ordinary and partial differential equations, vector calculus and multivariable calculus, my coursework has included a heavy Matlab component.

If you are in an engineering design team or have a project that warrants large amounts of computation on a problem for which you cannot find ready-made software, this is always a good option. Matlab is also used commonly in industry. If you have graduated and are looking for a free alternative, Octave is a good potential solution; with that said, depending on the task you may also feel that languages such as R could be of use. My personal pick would be Python. With an explosion of open-sourced libraries, I have found that Python – along with SciPy libraries – is just as capable as Matlab for most tasks. It is also free, very well-documented and extremely popular. Being a general-purpose language makes it a useful transferrable skill to have, and gives you tools to expand your projects far beyond what dedicated tools might allow.


If you are in or entering the Mech department, SolidWorks will need no introduction. CAD (Computer-Aided Design) in general can be an invaluable tool when you want to get a good idea of how components will look when assembled, and to spot problems (such as interference) in the design before it becomes a problem. With inorganic geometry, it can also speed up the process of making technical drawings, if you were to communicate your design to a third party.


I will admit, I am somewhat less familiar with the practical uses for Ansys. If you do have access to a full Ansys license, you will be able to simulate anything ranging from computational fluid dynamics and thermal simulations to load simulations. Ansys has a great graphical workflow for coupled simulations, if you are interested in simulating multiple physical phenomena concurrently.

From personal experience, I would encourage anybody pursuing technical projects to be wary of the computational cost and learning curve associated with simulations. Having used the UBC Star-CCM+ license for fluid simulations (computational fluid dynamics or “CFD”), I can confirm that it is worthwhile to consider the cost vs. benefit of complicated simulations. For simple simulations where rough estimates are acceptable (e.g. “how likely is it that this non-critical component fails?”), SolidWorks often has a perfectly acceptable solution for you.

Finally, I would recommend looking into a free SimScale community license, providing access to 3000 core-hours of cloud compute time (calculated as the product of the number of cores used and the amount of time using them) with up to 16 cores at a time. Their documentation is nothing short of excellent, and they have a great user interface. To the best of my knowledge, SimScale is built using open-source technologies such as OpenFOAM, which provides open-sourced CFD and simulation code.

So…why do I recommend CAD and simulation if it doesn’t involve creating something real? Just as I mentioned previously, mechanical design projects often become prohibitively expensive once manufacture begins. Software allows you to pursue a design project with minimal upfront cost, and pursue its manufacture at a later date when it is more feasible. This is exactly what I have been planning to do for one of my more ambitious projects, which is a small-scale axial flow turbojet engine. Chances are that it will fail miserably when I am done, and I’m looking forward to it.

Project Ideas for Curious Students: Software

If you have ever been in a position where you were thinking “I wish my computer could do this task for me” or “why isn’t there a calculator for this,” well, it probably can, and there is probably a library for it. With a bit of programming knowledge and some coffee, you might just have a solution to your problem. Maybe. 

Make no mistake: I am by no means a programming guru, but I still have a few suggestions for you to be able to pursue applicable projects with software. For those of us in mechanical engineering, software is typically a tool rather than the product itself. One suggestion that I like making to people who are mechanically inclined with an interest in software is simulation development. Simulations require interdisciplinary knowledge to implement, since they are nothing more than a mathematical model of some real-world phenomenon. As a tool, I have seen this used on numerous occasions: my engineering design team, for example, uses a student-builtMatlab vehicle dynamics simulator to estimate lap times for our car. If we change different aspects of our vehicle’s performance (for example, downforce), we can get an estimate for how our competition score will change. As I have mentioned, these can also be a product, meant to be used as a tool by engineers. These tools (products such as Star-CCM+) typically take a huge amount of resources and developers to create, although if making a contribution to open-sourced software is more your speed, there are always packages such as OpenFOAM.  

Don’t forget that there is always room for passion projects! Yet another one of my perpetually incomplete, overly ambitious projects has been to make a simple computational fluid dynamics (fluid dynamics simulation software, known as “CFD”) program from scratch using Python. I admit that it has no true practical application other than to help me to better understand the inner workings of CFD code. 

Although I acknowledge that I may not be the best person to speak about software development, a question that I often get is “how do I start”? My personal recommendation is to choose an application, then to just dive in. I promise you that there is no shortage of information on almost anything when it comes to programming. Just as with mechanical projects, you typically learn exactly what you need in the most efficient manner possible when you have something to apply your knowledge to. Failure will occur and iteration is a necessity, but this is all part of the learning process. Fairly recently I started to make a personal website and a web app, and I can safely say that I knew basically zero HTML when I started, let alone JavaScript or some of the common development libraries.