Meet our InternTejas Rao, Worcester Polytechnic Institute. Tejas sat down with us to talk about his experiences interning for conDati. He discusses what he learned and his favorite memories.
What was the technical highlight or accomplishment you're most proud of from this internship?
Answering this question depends on whom I’m talking to, because I worked on two projects that I’m really proud of. To a job interviewer, or in an academic context, I would discuss building conDati’s Analytics Hub, a ground-up project to deliver dashboards and periodic reports to end users. Among friends or in a more informal setting, I would describe the authenticator that I built into the conDati Workbench in order to allow reporting to work, because there are fewer technical details involved, and the story is more fun to tell.
While working at conDati, I was the guy who wanted to learn as much about everything as he possibly could. In addition to my own projects, I worked tangentially with others on their projects, providing assistance when needed, and a sounding board when I could. Both came into play when my co-worker was working on a method to generate formatted PDF reports from Jupyter notebooks in the Workbench. In order to access these notebooks, it is necessary to log in to the Workbench as the user who owns the notebook, which, at the time, required a username and password. However, it is not possible to recover a plaintext password using any security system worth its salt.
Taking inspiration from a favorite game from my middle-school days, I decided to implement a challenge-based authentication system. In the game, the player identifies friendly soldiers by those that respond to the challenge “Star” with the countersign “Texas”. While better than nothing, it would still be insecure, as an enemy eavesdropper could pretend that he’s a friendly soldier by responding correctly to the challenge. My new authentication system works on a similar principle, but issues a unique challenge for each agent trying to log in (implying a unique countersign), which eliminates the aforementioned issue. The countersign is calculated using a private key, and verified using the corresponding public key. By solving the challenge, the authenticator verifies that the agent owns the required private key, which means one of two things: that the agent should be granted access (if it represents a sysadmin or the reporting script), or that the conDati Workbench is already at an outsider’s mercy. For now, only the reporting script and individual conDati employees have access to the private key, as they are the only agents that should be allowed that sort of access.
What was the biggest technical lesson learned this summer?
The steep learning curve is mostly due to the way that D3 works: Being data-driven, it doesn’t concern itself (or the programmer) with individual elements in the Web page; rather, it binds a data set to some element, and builds the visualization from that binding. Once I understood how that worked, I was able to understand how many of D3’s flagship examples worked, and how to effectively and efficiently build almost anything using the library - whether it was a proper data visualization for conDati, a Smith chart for an electrical engineering class I took the following semester, or an impressive, vectorized graphical scene for side projects!
What's your favorite memory?
At the beginning of July, we were tasked to build a dashboard system. Development began from the user interface down. Four days from our deadline of July 13, we had a good-looking dashboard interface but nothing to drive it. In order to show off our capabilities, we needed a backend.
I was working on another project at the time, but building a web backend is something I had prior experience with, so I chose to jump in. I designed a Web page that requested dashboard widgets on-demand so they could be shuffled in and out without needing to reload the page; encapsulated those widgets in a self-contained structure; and added a widget that could update itself based on data pushed from the server. By the deadline, we had an impressive little demo that forms the basis of the current conDati Analytics site.
All the interns had been involved in creating the dashboard system, and we were proud of our work. Nevertheless, we spent the entire afternoon wondering what our prospective customers thought of it, and whether they would jump on board after seeing our technical prowess. Unfortunately, their goals were not completely aligned with our product, but they seemed to be very impressed with the technology we had shown them.
The next morning, we were greeted by two dozen donuts waiting for us: partly as a reward for completing the project, and partly because Krispy Kreme was offering a deal where if someone bought a dozen donuts, they could get a second dozen of glazed donuts for eighty cents. Being a hungry young man, I ate three in the morning. For lunch, the interns went to the nearby Whole Foods to pick up lunch. I bought a carton of freshly squeezed orange juice and some bananas. I ate all of that and four more donuts.
Our VP of Product Design told us that one normally gets to five donuts before regret begins to set in. That may be the case, but seven donuts is an express train to, well, feeling run over by that train. By three o’clock, I was almost comatose, staring eyes glazed at my computer screen, and doing nothing else. Eighty minutes later, I found myself hanging off the chair. It was the mother of all sugar crashes. But despite the discomfort of that situation, my only regret is that I didn’t try the VP’s other suggestion: to use two donuts as hamburger buns. Maybe some other day.