Mandelbrot set zoom in

Abhijit Joshi


This is a fun place to gather stories, anecdotes and other interesting nuggets from the last decade or so of playing around with engineering, programming and perhaps art.

I am a researcher in Computational Fluid Dynamics (CFD) and have been a computer programmer for quite some time. My dad used to write programs for business applications (in the era of punch cards) and introduced me to QBASIC in the early to mid-1990s. It was so terribly easy to create simple graphics and animation in QBASIC that this quickly became a hobby of sorts.

Another hobby of sorts was physics and mathematics, especially coordinate geometry. I was fascinated by classical mechanics and the idea of using computers to simulate physics problems. Mechanical Engineering is all of these things and more. I was dangerously close to pursuing theoretical physics after high school, but decided to stick with mechanical engineering in the end.

CFD was an excellent way to combine my love of engineering, programming and computer graphics with the real world. My professors soon realized that I was writing CFD codes in QBASIC and nudged me towards the proper language for writing scientific code: FORTRAN. With parallel programming models like MPI, nothing seemed impossible as fas as developing high-performance computing code was concerned.

driven cavity flow driven cavity flow driven cavity flow

Moving to C and C++ was more a question of it being helpful for software development in general. It has been a richly rewarding experience, especially as I moved towards GPU computing using CUDA and OpenCL. Moreover, I was reunited with my love for graphics in the form of OpenGL. The chart below is a rough chronological history of my adventures with computer programming in general.

programming history

A significant portion of my career has been spent in doing research, mainly using FORTRAN with MPI. The brief blip in QBASIC in late 2005 was the last time I ever used it - to code a simple version of the lattice Boltzmann method (LBM) for multiple fluid phases. The future looks very exciting, with a lot of new languages and associated technologies to master.


joshi1974 AT gmail DOT com


Added tutorials about:

Happy programming!

What is QBASIC?

Microsoft QBASIC was one of the best programming languages on the planet. It included a complete IDE, with great tools for graphics and structured code development.

The closest one can get to this kind of simplicity today is to use JavaScript and HTML5 canvas, which is almost as much fun!


Since the 1950s, FORTRAN is the most widely used language for scientific computing.

But speaking from personal experience, C and C++ are almost as fast and offer several advantages over developing in FORTRAN.

Web Applications

Browsers (Chrome, Safari et al.) have a lot more to them these days than meets the eye. In particular, they can be used to run full-fledged, interactive applications.

While the heavy lifting in scientific computing will continue to be done using FORTRAN, C/C++, MPI and CUDA/OpenCL, web applications have a lot of potential in introducing scientific computing concepts and running simple examples for demonstration purposes.

I've included some examples for CFD, fractals and cellular automata in these pages to give you a flavor of what one can do using JavaScript and HTML5 canvas. Web developers call these front-end applications because they run on the client.