Welcome to my homepage! It's currently under (perpetual) construction. If you
find anything useful or interesting (or wrong) on the site please get in touch and
let me know.
Warning
This site contains links to programs and code I've written, they are provided as is.
Run them at your own risk, don't blame me if they cause you any damage in any way.
Cookies are currently disabled. The site only uses cookies to remember the
current theme of the site (and whether cookies are enabled), no other information
is stored. Click the link to enable cookies.
Cookies are currently enabled. The site only uses cookies to remember the
current theme of the site (and whether cookies are enabled), no other information
is stored. Click the link to delete and disable cookies.
This is my first attempt at a proper website so I've been experimenting with some stuff
for fun. One such experiment is seeing if I can use css files to create simple themes
for the site. So far I've only made three (slightly awful) themes which can be tried out
by clicking the links below.
Semidefinite programming (SDP) is a form of convex optimization and is a generalization of linear programming.
Which means it's fast and gives (significantly) better results than linear programming.
Consequently it is increasing in popularity and is being applied in a lot of areas. I've personally used it
in several maths papers on graph theory, and independently it was the core topic of my brother's master thesis
in aeronautical engineering. As a result I decided to write my own solver.
RSDP (Rahil's SemiDefinite Program solver)
is a cross-platform multithreaded multiprecision semidefinite program solver written in C++.
It uses OpenMP to multithread the computation, and GMP or Boost to handle multiprecision calculations.
I'm not quite ready to release the source code just yet as I'm still in the process of optimizing and
testing things out. However, you can download a cutdown precompiled version of the program for Windows
(multithreading is disabled, and the multiprecision data type has a fixed accuracy of 50 significant figures).
Rigid Body Simulation deals with trying to model real world physical situations computationally by
applying Newton's laws of motion and the laws of conservation to perfectly rigid bodies.
It turns out that this is significantly trickier than you might expect.
I got interested in the area from a game programming perspective,
and wrote some stuff on the subject which can be found below.
A correction to Brian Mirtich's Thesis (PDF 334 KB) -
I noticed a mistake in Brian Mirtich's excellent thesis (that can be currently found
here) so I wrote up a correction.
It describes how to handle collisions with friction in both 3D and 2D.
Although it's pretty informally written it should be easy to follow.
To demonstrate the 2D version of the algorithm described
in the paper I wrote an OpenGL program in C (source code 22 KB)
and then later, for fun, an Html5 version of the same demo.
I wanted to keep the source code as simple as possible, so they're not interactive and don't really do much.
(I'd like to take the opportunity to thank Martin Baker of EuclideanSpace
for hosting the paper on his site.)
Rigid Body Simulation (PDF 2.8 MB) -
My University of Warwick MSc thesis
(see e-thesis).
It seems to get cited every now and then, so I thought I'd better put it online.
It covers some of the basic principles and formulas of the area.
To go with the thesis there is some source code
(zip 4.2 MB, warning the zip contains exe files)
and 15 videos (available under 3 different codecs, hopefully one will work on your system):
XviD (zip 8.0 MB),
DivX (zip 13.0 MB),
Microsoft MPEG-4 Video Codec V3 (zip 24.1 MB).
Maths
This section is probably of no interest to you unless you're a researcher in combinatorics. It contains
a bunch of technical papers I've written over the years, mostly in collaboration with my PhD supervisor
John Talbot. Some of the material has been published, some
hasn't. I also have a bunch of other unpublished results scattered across my hard drives, when I stumble upon
them I'll try to put a copy of them here.
Some Results In Extremal Combinatorics (PDF 832 KB)
- My PhD thesis (2011). It contains a few unpublished results. There is also a CD-ROM
(zip 1.12 MB) that accompanies it, containing source code, and data files.
I was mentioned on the youtube channel "C++ Weekly With Jason Turner". I pointed out a "gotcha" with std::pmr::vector<std::pmr::string> and how to catch it by creating a custom default allocator. Check it out here.
Because knowledge of smart pointers in C++ is such a common interview question, check out my custom implementation of std::shared_ptr which I call stoppable_ptr. It behaves like a std::shared_ptr but it has a member function called stop() which disables further copies being made.
About Me
You can probably get all the information you want from my CV (I am currently looking for a new job). Feel free to contact me at rahilbaber@outlook.com.