Author Archives: Nikhil Khandelwal

Blog Post 2.0

Well, I am naming this as Blog Post 2.0, as there has been a serious revamping in terms of my project goals. Firstly, the work on 3D-modelling software is done. I will no longer be talking more about that. My whole focus will be on the data collection software, i.e. Suma. Oh wait, that’s off the table as well.

Will (my advisor) and I have come to a conclusion that after numerous failed attempts at implementing Suma, we will work on our own platform for data collection, which will be molded according to the needs of the Science and Engineering Library, and would be scalable enough, so that other libraries can, with some amount of work, implement this platform there as well.

Currently, the work that has been done is that I have created an array of 6 Library computers, and the librarians can just click on each computer to indicate that it is being used, or double click to indicate that the seat is occupied, but the PC is not being used and a personal Laptop is being used instead.

The next things that I am working on is to add the possibility of indicating that a certain PC is non-functional, and storing that information through different sessions of data collection.

The website is up and running (alpha-version) on

Lastly, let me introduce you to an amazing website that I used for the initial development of this website. It’s called, and it allows you to type in code for HTML5, CSS, and JS on the same portal, and it incorporates the code as soon as you complete typing. So, for the sake of testing, it is quite good a platform.

Hoping to complete a lot more by Blog Post 2.1

OpenSCAD & SUMA updates (DCIP Blog Post 1.1)

As promised in the last blog post, here is a writeup about the “coding” based (amazing) 3D modelling software. OpenSCAD is a 3D modeling program based on constructive solid geometry (CSG), i.e. a complex surface or object can be created using Boolean operators to combine objects. There are some basic commands that one should know the usage of, before working on the software, and if they do, 3D modelling will be a “relative” piece of cake!

These 10 commands are in three different categories: shapes (cube, sphere, cylinder), transforms (translate, scale, rotate, mirror), and CSG (Boolean) operations (union, difference, intersection). Most of the operations that you need to do can be done with these 10 commands. So, to summarize, 3D modelling in OpenSCAD is as simple as mastering the usage of 10 commands, and then converting your problem (3d-model) into a combination of the shapes using CSG.

A use of the above commands is shown below for seeing just how powerful these commands can be — click to enlarge!

power of OpenSCAD commands

The other project that I mentioned in my last post is SUMA. There are two possible ways to go about it. A trial version can be developed using Vagrant and Virtual Box (they have put a version on their machine, and it can be accessed (theoretically) from your own PC).  I have been in constant touch with the group at NCSU Libraries, who developed this system, and they have been helping me with trying to debug the system, but there has been only limited success in this direction. I am able to run the client part of the system, but there are issues with the Ansible (automation platform) file, and I am waiting for them to release the 2.0 version of the same. It has been quite an informative interaction with them, and they have been quite helpful in this regard.

The other way is to go in full-fledged, and develop a complete system, coding all the server and client pages, and have everything on the same machine (instead of logging onto the virtual machine as in the case of the trial version). I have done a fair bit of coding, along with SQL integration for creating necessary databases for the program, managing correct permissions for admin and user. I am still working on the server part of things here, and since this is the first time I am working on something like that, there is a lot of reading involved as well. The plan is to first develop the framework on a PC, and then repeat it on a more restricted mobile/tablet platform, after the required system works seamlessly on the PC.


Digital Science Internship : Blog Post 1.0

As any 1.0 blog post expects, here’s my intro!
I am Nikhil Khandelwal, pursuing MS in Financial Engineering from the IEOR department. I started working as an intern for the Digital Science Center this fall, with William Vanti (Will) as my advisor.

I have been working on two projects:
1. Implementation of SUMA, a smart librarian assistant for easy collection of data and maintenance of important statistics related to the library, and
2. Examining various 3-D modelling software present in the library systems and figuring out which one is good for what purpose.

The first project needs some software which were not present in the library system, so that is a bit on the standstill. I will be trying to implement the trial version of the same, to see if the systems work fine, and are useful for the library (which I expect them to be, but just to get a feedback). Once it is given an “OK”, I plan to develop an app for Ipad, which should revolutionize (yes, I used the magic-word!) the process of data collection in libraries.

For the second project, I have been getting quite a lot of input from Will, as to which software to select (from the plethora that the Digital Science Center supports), based on the requirements of the students, and their feedback. I have already looked at two software and working on the third one (SolidWorks… this one’s a biggie!!)

1. Tinkercad : This is more of a web-app than a software. It can be accessed on, needs no installation, and moreover, for all practical purposes, it is FREE. From what I have seen till now during the project, that is usually not the case for such a user-friendly application. It does have a paid account, but for us hobbyists, the free account is more than sufficient.

Designing in Tinkercad is based on two core concepts:
-> You can add shapes to your design either as solids or holes, using drag-and-drop interface
-> You can combine a number of shapes together, forming a new shape.

Using these two simple concepts you can build your own almost arbitrarily complex tools to create very interesting designs.

Some pointers about Tinkercad:

  • Very Easy to use
  • Tutorials are a little childish, but are a good way to explore Tinkercad’s functionalities
  • Learning is fast and easy; you can start working on it, and be done with a decent design in a couple of hours
  • Curves are a bit difficult to develop. Since there is only addition and subtraction of solid figures, making complicated curved figures take way more effort than just plugging in an equation and getting the curve (read: OpenSCAD is awesome)

2. Blender :  For the introduction of this software (and to boggle your minds), I will post the following line I picked up online :

It can be used for modeling, UV unwrapping, texturing, rigging, water simulations, skinning, animating, rendering, particle and other simulations, non-linear editing, compositing, and creating interactive 3D applications, rigid body, fluid, cloth and softbody dynamics, modifier based modeling tools, powerful character animation tools, a node based material and compositing system and Python for embedded scripting.

Clearly, this software can do it all (or almost all), and it supports various file formats. Moreover, this is FREE as well.
(You might be wondering that I keep mentioning the same about all the software, but that’s because I initially decided to work only on the open source ones, so that people can continue using them even when they are not at Columbia. So, I decided to work on this instead of Autodesk Maya, which can be described by the price tag below:

Maya® Entertainment Creation Suite Standard – 3D Animation Production
(Autodesk Official Store)

Haha. Better get back to Blender. So, everything looks great, right? Free software, supports various formats, can do it all. What’s the catch?

Well, here it is. It is sort of user-unfriendly, especially for those who like to use mouse for most of their work on PCs. For those of you who think keyboard should be used just for typing, and who prefer using their mouse to click on the Save button instead of using Ctrl+S, well, walk away, because this isn’t a software for you.

The software is quite troublesome to work on using the mouse, but for those who like coding or gaming (yes, your gaming skills imply that you use keyboard shortcuts, and more importantly, can remember them), this might be quite useful. You have to remember a lot of commands to do each-little thing, and yes, in the end, it indeed can do it all. E.g. if you hit the “Scale” button with your mouse pointer to modify your selected item, you will find it near impossible to scale it with any precision. Use the shortcut S and you now have meticulous control.

There is an amazing feature in the software I want to talk about. It has a beautiful system of version control. All you need to do is press the + key on the number pad while in the save dialog (yes, yet another keyboard shortcut!). If your filename includes a number (e.g. draft1), this shortcut will auto-increment to the next number, and automatically create a timeline of file saves (as draft1, draft2, draft3) and so forth. Great, right? I hope that in the future, many other software start implementing such simple, elegant and yet extremely useful feature.

I have only started working a little bit on SolidWorks, so I will talk more about that in my next post.