Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Options

Introduction: Calvin Lau

Hi, like all the other introductions, I'm here to introduce myself on John Baez's suggestion after my account approval.

My name is Calvin Lau, and I'm currently a second year (or, soon-to-be) physics PhD student. I guess I'll tell you a bit about myself.

How I got here:
When I was in high school, I actually thought I'd be changing the world with a combination of journalism and historical writing, but after my first physics class, my plans were diverted this way. From what I knew from history and current events, I concluded that energy was going to be the big pivotal point from which I could find my most useful role, and from that, I decided to work toward a career of fusion energy research for all of its potential benefits. (Plus, what is cooler than trying to create an "artificial sun" as it were?)

I ended up at UCLA for my undergrad in physics, and getting some research experience in plasma and condensed matter physics along the way. After that, I spent most of my first year of grad school taking classes, applying for fellowships, and studying for the qualifying exams (which thankfully, I no longer have to worry about). Now, I'm at UC Irvine with the plasma theory group where I'm currently learning the skills of my trade (which mostly involve PIC simulations of low-frequency plasma waves) while lightly treading around with a project on drift waves.

I can't remember exactly what I was searching for, but I ended up on John's webpages probably looking at the question whose answer is 42 and other tilings stuff. From there, it was just a matter of curiosity and clicks before I got to the Azimuth Project. As you might be able to tell from how I wound up in physics, I am quite interested in saving the planet from its inhabitants as well so I've decided to join.

What I can contribute:
I've had a couple years' of experience using MatLab and IDL for analysis, but I've recently been introduced to (and subsequently a preacher of) Python. In addition, I also have to use Fortran frequently (although I've mostly been reading and modifying an existing code so I wouldn't classify this as a strength) and I will be learning CUDA within the next couple of weeks. While I hope to contribute to the coding aspects of the Azimuth Project, I will probably be less available this following year because most of my group's graduate students will be graduating within the year (with some newer students to be arriving) so I must squeeze as much knowledge out of them as possible before they are no longer available to me as resources. So, my intention is to keep myself updated on the coding projects for now, and to begin contributing when my own research involves more learning about the phenomena than learning about the tool.

Some other interests:
I also maintain a healthy interest in lots of other topics in addition to nuclear fusion: nonlinear and chaotic dynamics, fluid mechanics, self-organized criticality, programming, social physics (like psychohistory from the Asimovian universe), and so on.

So that pretty much sums up me in a nutshell. Thanks for reading, and I'm sure I'll be learning much from everyone here!

• Options
1.

Hi! Sounds like you've made some good choices - good luck on the fusion! What's CUDA?

If you're interested in the coding project, it's good to read this thread... and take a look at Gerald North's book here... and the programs we've done here.

My activities last week have been:

and goofing off by

• starting a paper with Jamie Vicary on wormholes and quantum entanglement,

• writing a blog article about my favorite polytope in 8 dimensions, which led me to think about some bizarre properties of the number 30.

Next I have to prepare a talk called 'Learning to live on a finite planet' which I'll give at a residential college at the National University of Singapore next Tuesday, which is a warmup for a TED talk in Italy on October 4.

Lots of fun stuff to do!

Comment Source:Hi! Sounds like you've made some good choices - good luck on the fusion! What's CUDA? If you're interested in the coding project, it's good to read [this thread](http://forum.azimuthproject.org/discussion/856/4/can-you-help-us-write-software-for-simple-climate-models/)... and take a look at Gerald North's book [here](http://forum.azimuthproject.org/discussion/1225/gerald-norths-simple-models-of-global-climate-book/)... and the programs we've done [here](http://www.azimuthproject.org/azimuth/show/Azimuth+Code+Project#Online_models). My activities last week have been: * writing a proposal for a workshop on entropy and information theory in biology, [here](http://math.ucr.edu/home/baez/nimbios.pdf), * editing a paper I'm writing with fellow Azimuther David Tweed, on [Monte Carlo methods in climate science](http://math.ucr.edu/home/baez/horizons.pdf), and goofing off by * starting a paper with Jamie Vicary on wormholes and quantum entanglement, * writing a blog article about my [favorite polytope in 8 dimensions](http://golem.ph.utexas.edu/category/2013/09/integral_octonions_part_5_1.html), which led me to think about some bizarre properties of the number 30. Next I have to prepare a talk called 'Learning to live on a finite planet' which I'll give at a residential college at the National University of Singapore next Tuesday, which is a warmup for a TED talk in Italy on October 4. Lots of fun stuff to do!
• Options
2.
Thanks! CUDA is a parallel processing model that is implemented on Nvidia GPU's. Since it looks like GPU computing will probably be the direction the next generation of supercomputers will be built toward, learning how to abuse them will be necessary for large scale computations. There's also the competing OpenCL, but I've heard that CUDA is easier to pick up so that's where I'll start.

I've got to play catch-up with the thread on the coding project though, but I definitely like the idea of small models that can be poked at. The best way to learn and visualize is to be able to make changes and see what happens! I've actually been meaning to learn java for that reason so I may get around to doing that, especially since it turns out that I won't have any formal classes to take this coming quarter.
Comment Source:Thanks! CUDA is a parallel processing model that is implemented on Nvidia GPU's. Since it looks like GPU computing will probably be the direction the next generation of supercomputers will be built toward, learning how to abuse them will be necessary for large scale computations. There's also the competing OpenCL, but I've heard that CUDA is easier to pick up so that's where I'll start. I've got to play catch-up with the thread on the coding project though, but I definitely like the idea of small models that can be poked at. The best way to learn and visualize is to be able to make changes and see what happens! I've actually been meaning to learn java for that reason so I may get around to doing that, especially since it turns out that I won't have any formal classes to take this coming quarter.
• Options
3.
edited September 2013

Hi Calvin,

To program software which is "correct by construction" we need pure languages as explained in:

John Hughes, Why functional programming matters (1984)

For subsequently well-documented reasons pure FP, and not imperative languages like Java etc., are the only practical choice for multicore processing.

You might like to look at the Haskell CUDA package and related papers.

Best wishes

Comment Source:Hi Calvin, To program software which is "correct by construction" we need pure languages as explained in: John Hughes, [Why functional programming matters (1984)](http://www.cse.chalmers.se/~rjmh/Papers/whyfp.html) For subsequently well-documented reasons pure FP, and not imperative languages like Java etc., are the only practical choice for multicore processing. You might like to look at the [Haskell CUDA package](http://hackage.haskell.org/package/cuda) and related papers. Best wishes
• Options
4.
edited September 2013

Hi Jim,

Thanks for the advice! I've actually been looking at the bistable temperature toy model and I made a little baby simulation in python to test how well I have it down before learning how to code it in Haskell. This is what I have from python at the moment, but it's not the most elegant or efficient code.. In any case, I'll be learning Haskell as I learn CUDA starting with this baby model.

--Calvin

Comment Source:Hi Jim, Thanks for the advice! I've actually been looking at the bistable temperature toy model and I made a little baby simulation in python to test how well I have it down before learning how to code it in Haskell. This is what I have from python at the moment, but it's not the most elegant or efficient code.. In any case, I'll be learning Haskell as I learn CUDA starting with this baby model. [http://www.youtube.com/watch?v=Hxba3O7RoPg](http://www.youtube.com/watch?v=Hxba3O7RoPg) [http://www.youtube.com/watch?v=5PQp7kU6Be8](http://www.youtube.com/watch?v=5PQp7kU6Be8) [http://www.youtube.com/watch?v=4Hob6x8Tjd4](http://www.youtube.com/watch?v=4Hob6x8Tjd4) --Calvin
• Options
5.
edited September 2013

Thanks for the video links! I'll check 'em out.

Comment Source:Thanks for the video links! I'll check 'em out. Note: I made your links clickable by editing your post. If you choose "Markdown+Itex" you can do lots more stuff in your comments here, and if you choose it once and allow cookies that choice will be remembered.
• Options
6.
edited September 2013

Hi Calvin,

I like the animations. How did you make them?

There is an azimuthproject repo on github.

It would be good to see your code as there are different approaches to coding these models. Perhaps you'd like to post your code on the github repo; in which case I think I can create an account for you if I look up the instructions, otherwise you could just post it here or on whichever forum discussion about bistability seems most appropriate.

I've changed the url of the Hughes paper to one that works.

Comment Source:Hi Calvin, I like the animations. How did you make them? There is an [azimuthproject repo](https://github.com/azimuth-project) on github. It would be good to see your code as there are different approaches to coding these models. Perhaps you'd like to post your code on the github repo; in which case I think I can create an account for you if I look up the instructions, otherwise you could just post it here or on whichever forum discussion about bistability seems most appropriate. I've changed the url of the Hughes paper to one that works.
• Options
7.
edited September 2013

Hi Jim,

I just wrote a simple Python code to generate the images, then stitched them together using ImageJ. It's pretty simple to write up a script in Python, but I was just using this as a base to compare to Haskell.. although I've got to say that learning Haskell is learning a new way of thinking. It's a bit weird to not have loops, but I think it'll be very useful once I get over this initial hump..

So here is my raw code, but since I only intended to use this for comparison to help with the Haskell process, I didn't write in any comments (and it's not particularly well-written). The first cell defines the main step of solving for temperature per time, while the second cell is the loop that uses the definitions from the first cell to solve for the temperature per time for different values of gamma.

I think I'd like to have an account on the github repo eventually, but I don't need to have one immediately if you're busy.

Also, thanks John! I didn't notice the Markdown+Itex the first time because I was just entering url's and was too pampered by auto-linking. :D

Comment Source:Hi Jim, I just wrote a simple Python code to generate the images, then stitched them together using ImageJ. It's pretty simple to write up a script in Python, but I was just using this as a base to compare to Haskell.. although I've got to say that learning Haskell is learning a new way of thinking. It's a bit weird to not have loops, but I think it'll be very useful once I get over this initial hump.. So here is my [raw code](http://phoenix.ps.uci.edu/clau/Notebooks/Side%20Projects/Climate%20Model%20-%20Bistable%20Temperature%20Dynamics.html), but since I only intended to use this for comparison to help with the Haskell process, I didn't write in any comments (and it's not particularly well-written). The first cell defines the main step of solving for temperature per time, while the second cell is the loop that uses the definitions from the first cell to solve for the temperature per time for different values of gamma. I think I'd like to have an account on the github repo eventually, but I don't need to have one immediately if you're busy. Also, thanks John! I didn't notice the Markdown+Itex the first time because I was just entering url's and was too pampered by auto-linking. :D