Posted on

Daily Update: Wednesday, July 20th

Not much significant happened today, so I’m going to keep this one short. The thing on the top of my mind today has probably been my frustrations with the Python programming language. Python was the first language I learned, and at the time, it seemed so convenient and simple. It was practically English. It’s been interesting, but endlessly frustrating, coming back to Python with two trimesters of Java programming and these last 8 weeks of C++ and C#. The simplicity of Python now seems dangerously unstable. As a complete new programmer, the fact that you could create a list and fill it with any object of any type seemed convenient. Now, though, the idea of an unspecified-type list seems insane. To make matters worse, part of the reason Python is so ubiquitous and popular is because of its extensive library of user-made packages. Python’s “simple” and “easy” language can make using these packages, and making them work with each other, an absolute nightmare of guesswork and errors. Thankfully, I’ve been focusing my efforts on Unity and C#, but I’ve seen firsthand some of the errors my colleagues have been facing, including the inexplicable “Pickling Error: Could Not Pickle Function.”

—Charles Brailovsky

Posted on

Daily Update: Tuesday, July 19th

The highlight of my day so far has been the last few hours of Internet Sleuthing I’ve been doing for our research project.

I’m trying to use Blender to create a virtual environment that replicates a real video dataset. The video looks like this:

The Zara1 Video

I wanted to create a replica that was close to accurate in terms of positioning, scale, and so on. All I have to go on is this angle. I started out by trying to eyeball the camera angle in Blender, using an overlay of the photo as reference, but I quickly realized this wasn’t going to work. There are too many factors involved, given that I don’t know the height of the camera, the distance from any of the objects, the zoom, or the focal length. I needed reference information.

I looked for the original paper that produced the dataset, hoping (against hope) that there might be detailed information about the camera they used. I found the paper, but it contained very little helpful information. The full details of the process were: “Standing on a roof of a building, we shot several crowd videos.”

I did have a few valuable pieces of information, however: the year of the paper (2007), the name of the dataset (“Zara1”) and the authors’ home institutions (University of Tel Aviv, University of Cyprus, and Hebrew University of Jerusalem). I also had been assuming the footage was taken from security cameras, but based on the sentence from the paper, I assumed a focal length in the neighborhood of 35mm, consistent with mid-2000s camcorders. Eventually I also realized the camera seemed to be zoomed in about 50%.

Every Zara in the vicinity of the University of Tel Aviv

My first step was to track down the location in order to see what building they filmed from so I could get an approximate idea of where the camera should be. Operating under the assumption that the store in the video is a Zara outlet (based on the dataset name), I started searching the vicinity of the author’s institutions. Tel Aviv, as it turns out, is full of shopping malls, so checking every plausible Zara in Tel Aviv took around 20 minutes. The video was not in Tel Aviv.

I moved on to Cyprus, and there, I found some luck. Not half a mile away from the University, there was a Zara outlet that looked almost exactly like the one in the video, with some slight differences that are easily explained by construction in the intervening 15 years. What’s more, just across the street was a building that looked exactly the right height for the video.

The Zara in question
The building across the street, from which the video was filmed

This gave me a starting point, at least. I was able to estimate a plausible range of heights for the camera. But it still wasn’t quite precise enough, and I was still having trouble matching the perspective of the photo to a box I had created to represent the building. I needed more reference information. So I started looking at the cars. After some time scrolling through images of mid-2000s black Sedans, I concluded that the centermost of the three cars in the image was likely to be a ~2005 BMW 5 Series or similar model, based on the front grill and the location of two orange blurs that might be part of the headlights.

A black 2005 BMW 5 Series

The information on the exact size of this car was easily available online, so by quickly modeling an approximation of the car and placing it in the scene, I was able to get a much more accurate estimate of the camera’s position and focal length. The end result is still a very rough estimation, and could be off by several meters, but it is good enough for now.

The model seen through the camera, with the reference photo overlay
The model from a different angle. The floor was cut out by hand to match the approximate edges of the camera, so that I could see which parts of the scene would be visible.

—Charles Brailovsky

Posted on

The Weekend from Hell

The past week was busy and rather stressful. We will be presenting research posters at a Symposium in the coming weeks, and put together midway presentations in a pretty short amount of time. Many of us were looking forward to a long, relaxing weekend to de-stress.

Friday, July 15th, 9:30 PM.

I’m in my room, working on a C# script with Netflix on in the background. The fire alarm goes off, and it takes me a moment to realize it’s even happening, and not coming through my headphones.

We all pile out of the building and mill around awkwardly, a familiar experience for anyone who’s lived in a dorm building. Some of us were wide awake, others are groggy. One guy emerges from the building still actively putting on a shirt. As we stand there waiting for the fire department to arrive, we look up and notice several people hanging out in a bedroom with an open window, seemingly nonplussed by the noise. We speculate, half-jokingly, that they may have been responsible.

Eventually, the fire engine arrives, taking a full, leisurely circle around the block (obeying one-way streets). It’s white with a red stripe, rather than solid red, which I have never seen before. Firefighters enter the building, shut off the alarms, and we all go back to whatever it was we were doing. A mildly irritating disruption to otherwise an ordinary night.

Saturday, July 16th, 4:45 AM.

After around 3 hours of sleep, I awake to the sound of klaxons. The fire alarm has gone off for a second time. I stumble out of bed and throw on some sweatpants and a t-shirt as one of my flatmates bangs on my door to make sure I’m up. As we all stumble back out, the mood is decidedly less jovial. Despair, wrath, and dead-eyed exhaustion are the themes of the hour. Thomas takes a photo, which he shows me that afternoon. I have absolutely no memory of this photo being taken, but I appear to have been caught in the middle of some kind of rant.

Saturday night passes without incident.

We think we’re safe.

Sunday, July 17th, 9:40 PM.

Farhan is cooking, and Grace is hanging out with us in the kitchen. Meriem, Thomas, and I are watching Spirited Away. The smoke alarms go off (just in our apartment, not the building), which we find odd given the low amount of smoke in the room. We scramble around trying to shut it off, to no avail, and eventually call the CA. She investigates, and determines that the alarm in my bedroom is actually the culprit. She speculates that perhaps somehow the smoke from the stove drifted into my room through the open door without triggering the kitchen alarm. We go back to watching the movie.

15 minutes later, the alarm goes off again. We evacuate our apartment yet again to avoid the noise. This time, though, it only lasts a few minutes before it puts itself out. We go back to the movie, but Eli stays away just in case. We tell him it’s safe to return, and not 10 seconds after he walks through the door… the alarms begin to scream.

This cycle continues, with only around 15 minutes of off-time between alarms, until 11:00 PM, when a maintenance man finally arrives, investigates, and determines that my alarm is malfunctioning, and needs to be replaced. He does so, and the alarms stop.

I slept light that night, nervously eying the freshly-installed plastic scream disk. Eli and Thomas claimed they could still hear the sirens, echoing in their heads as they tried to sleep. I believe it.

I wonder what the rest of the week will bring.

—Charles Brailovsky

Posted on

Daily Update: Monday, July 18th

Another week gone by without a blog post, and I’m realizing I’m once again allowing perfect to be the enemy of good. I have several large posts I’m working on, but I never have time to sit down and make them right. I’m going to keep working on those when I can, but at this point, for the final three weeks, I’m going to make a point of writing just a small update at least once a day.

Today is the first day of the final stage of our research project. MCAs were finished last Monday, and we gave a presentation last Friday on our progress. We are now entering the final stretch, and it’s so far my favorite part. I have learned so much here, and benefited greatly from the courses, lectures, and other activities, but this part is what I’ve looked forward to the most. From now on, we get to the office in the morning, and spend pretty much the entire day focused on whatever we need to do for our research projects. We’ve made some huge leaps in the past week alone, and I’m looking forward to what comes.

In my free time and my evenings, I’ve started to ramp up work on a personal project. Most of my friends at Lawrence University were seniors, and have now graduated. We’re all fans of D&D, so I decided at the end of the schoolyear that I would run a remote campaign to keep us all together. I’ve been very busy here, and all my friends have been sorting out their new post-graduation lives, but the plan was to start playing in September, and in the past week, character ideas have been steadily flowing in. I plan to spend a lot of time in August putting everything together and getting ready, and I can’t wait to start playing.

—Charles Brailovsky

Posted on

The Iowa State Amateur Drama Society

What do you get when you take a bunch of 19-to-21-year-olds who’ve never met each other, and throw them into a very close environment for 10 weeks, with no guarantee of remotely compatible personalities? Ask anyone who’s ever attended or run a summer camp, and they’ll tell you. Drama.

So, dear reader, allow me to let you in on what the kids these days are calling the “tea”:

There isn’t any.

No, seriously. This is the least dramatic group of teenagers and twenty-somethings I’ve ever been a part of. The complete lack of drama is so noticeable it’s actually throwing off some of the graduate students.

I’ve had a few conversations now with several of the VRAC staff—undergrad assistants, graduate mentors, and so on—and apparently, REU intern drama is something of a highly expected yearly event, though that anticipation ranges from dread to a sort of schadenfreude-laden glee. It’s come as a relief to some, and a severe disappointment to others, that our group just sort of… gets along.

Personally, even I’ve struggled to believe it at times. I definitely feel like, for a lot of the past month, I’ve kind of been waiting for the shoe to drop. But we’re nearly half way through (yikes), and there’s barely been so much as a sock. About the closest we’ve come to drama as a group is when one of the boys (who will remain nameless) left an opened package of raw chicken breasts in our fridge, just sitting right on top of some bottled drinks of mine.

So to all the observers who were fearing this summer’s young adult interpersonal drama, I feel pretty confident you can rest easy.

And for those looking forward to it, you have my deepest apologies. I suppose you’ll have to make do with Reality TV for now.

—Charles Brailovsky

Posted on

Moving On with Unity

I’m a bit of a perfectionist. Sometimes, that can be a good thing. A lot of the time, though, it just interferes with work. I’m trying to get into the habit of just writing every day, straight from my mind, stream-of-consciousness. My natural inclination is to hang on every word, making sure I’m saying exactly what I want it to, for exactly the right reason, in exactly the perfect way. Especially if anyone is going to read it. But that doesn’t really work for blogging on triweekly basis.

So. I guess, let’s talk about Unity for a bit.

Unity is a “game engine”—a software framework primarily designed for building games. The Unity interface lets you create basic elements like cameras and scenes, import components like 3D models and environments, and then write code to control those components, while handling a lot of the complicated behind-the-scenes stuff like physics, lighting, and rendering for you. If you play a lot of computer games, chances are you’ve played something made in Unity at some point. Especially if you play indie games, which frequently use Unity as it is free to download.

Kerbal Space Program, a space-flight simulator that allows you to build and launch rockets around a virtual solar system, was made in Unity, and is also one of my favorite games.

Despite its name, though, Unity is actually about much more than just games. As just one example of the many diverse applications of Unity, it was used to make Adam, an absolutely beautiful and compelling sci-fi animated short film. Even more impressive, it was rendered in real-time.

Adam, written and directed by Veselin Efremov

Another powerful application of Unity is the development of Virtual Reality applications. VR has incredible potential as a tool for learning as well as for entertainment. If you consider a “video game,” at its most basic level, to be essentially just any virtual environment in which the user (“player”) can interact with and affect the environment, and then receive some form of feedback, then practically any VR app becomes a “game.” And that’s what makes Unity so useful. Though it was originally built for game development many years ago, it’s perfectly adapted for developing all kinds of VR software, with applications in (but not limited to) training, education, simulation, and data visualization.

This REU has two main components: research and learning. The learning portion has so far composed of our “boot camp” courses, beginning with C++, advancing through Solidworks and Blender, and now wrapping up with Unity. As the second half of the learning component, we are moving into the “deeper dives.” There are three opportunities, with three students being assigned to each one. Most of us got either our first or second choice.

One group will be learning about machine learning, and will be creating and deploying a machine learning model.

Another group will be learning about 3D Printing, involving a deeper dive into modeling techniques.

The third group, my first choice (which I got!), will be diving into XR (eXtended Reality) app development.

I’m very excited about the Deeper Dives moving forward, as I’ve been interested in Unity development for many years, but have never been able to dive into it on my own. Each time I tried to start, it was so overwhelming that I couldn’t make any progress. This time, though, with our mentors and teachers guidance, I’m confident I’ll finally be able to implement some of the ideas I’ve had over the years, and most of all I’m excited to learn the skills to be able to keep working on my own after I leave.

—Charles Brailovsky

Posted on

Catching Up

I’ve been falling behind on my blogging, so here’s a quick-and-dirty rundown of what’s been happening up until now. We’re allotted blogging time every day, but I keep using it to practice on all the new software we’re learning—I’m just having too much fun!

Week 1

Arrival in Ames, introductions, settling in. We play a lot of card games and watch movies during the evenings, and go through several waves of orientation during the day, meeting with the staff, graduate mentors, and our project leaders. Over the weekend, we go to a local charity that provides bikes to people in need, and also picked out some bikes to fix up and take with us for the rest of the 10 weeks. Grace and I actually got our bikes that day. I wrapped up my last week of school remotely and took my Machine Learning final. Despite the curse, I got an A-, which I’m pretty happy about.

Week 2

“Boot Camp” courses start up, with C++. The syntax is a bit of an adjustment for me, but I am familiar with Object-Oriented Programming through Java, so I take to it fairly quickly. During the week, we take a short trip to a lake and grill some hamburgers and hotdogs for dinner, in defiance of some vaguely threatening storm clouds. We go back to the bike shop over the weekend, and several more interns get their bikes. A few still remain tragically bikeless.

Week 3

The second week of courses focuses on 3D modelling, starting with Solidworks, an engineering CAD program. I absolutely love Solidworks. I’m not sure I’ve ever had more fun with a computer program that wasn’t specifically built as a game. In fact, I’m actually having more fun with Solidworks than at least 15-20% of the games in my Steam library. I’ve been taking every chance I can get to use it here, and even staying late just to play around with it, especially given that it is very expensive, and I will lose access when this program ends.

Later in the week, we transition from Solidworks into Blender, which is a totally different experience. Solidworks is focused on concrete dimensions and generates objects based on the detailed dimensions you provide it. Blender, on the other hand, is lower-level, and focuses on the user creating complex geometry (faces, edges, vertices) manually or using various modifiers and operations. On Tuesday night, we watched The Martian (one of my all-time favorite movies) on a big screen in a lecture hall. When we were tasked with creating environments in blender, I chose to model a scene from that movie, with a Martian habitation module caught in a dense sandstorm.

Scene from The Martian

Week 4

This week has been very interesting. We’re moving from modelling to Unity, a game engine, and everything is coming together. C++ translates almost directly to C#, the scripting language used by Unity, and we can import models from Blender or Solidworks into the game environment. I have been tasked with handling the early stages of the Unity side of our research project, which is finally starting to ramp up. More on that project coming soon.

—Charles Brailovsky

Posted on

The Iowa State Zodiac Curse

Monday, June 6
Day 7

On our second day here, we were given a tour of some of the main campus buildings in the area around the VRAC. One of those buildings features a beautiful mosaic of a zodiac calendar laid out on the floor of the entrance hall. Upon entering the building, Imtiajul, our graduate mentor (and, for the moment, our tour guide), told us to stop, and walked a wide circle around the zodiac to the other side. “There is a legend,” he said, “that anyone who walks across the zodiac, instead of around it, will fail their next exam.”

Now… here’s the thing.

Ever since I was a small child, I’ve been drawn to the idea of research and experimentation. There is nothing that irks me more than an unanswered question. I’ve always been the kind of person who can’t resist pushing an unmarked red button just to see what it does. It’s that urge to push boundaries—to ask questions, to test assumptions—that drove me to pursue a career in STEM. I would be doing a disservice to myself to quit now.

As I mentioned in a previous blog post, my school operates on the trimester system. While Iowa State University and the other interns wrapped up their semesters in early May, I have been finishing my final week of school remotely.

Including one final exam.

So there I stood, with an important exam coming in just 5 days, and a cursed floor that supposedly dooms all who walk across it to failure. A question, and the means at hand to test it.

I mean… What was I supposed to do? Not push the big unmarked red button?

My exam was last night. As far as I can tell, it went smoothly, but I will not see the results for several days. Only then will I know if I’ve disproved the null hypothesis and broken the Iowa State Zodiac Curse.

—Charles Brailovsky

Posted on

The First Three Days

Thursday, June 2
Day 3

Day 0: Monday

The final day for me on the Lawrence University campus. Lawrence uses the trimester system, so I will have to finish my last week of classes and final exams remotely, from Iowa State. Sunday night was a bittersweet final gathering with my closest friends, nearly all of whom are seniors who will graduate in my absence. My room is packed up, my things stored in boxes for next year, and my clothes loosely packed in IKEA bags for easy transport. Early in the morning, my mother and I load up the car, and we get on the road back to Chicago. We arrive in our Chicago apartment by early afternoon, and I start to pack my suitcases.

My phone pings. It’s one of my friends from Lawrence, posting in a group text, asking what time everyone will be going to dinner. I start to respond, and then remember that I’m already 200 miles away.

Day 1: Tuesday

I leave home at 7:00 AM, and arrive at Gate G10, Terminal 3 of O’Hare Airport by 8:20, not 2 minutes before my flight begins to board. Less than 2 hours later, I have landed in Des Moines. I retrieve my bags and meet with Lale, one of our graduate mentors. Soon, two more interns—Farhan and Emma—arrive. We all start to get to know each other on the 40 minute drive from Des Moines to Ames. By early afternoon, we have arrived at our accommodations, Frederiksen Court; a beautiful group of 3-story apartment buildings. We all live on the same floor, in compact but comfortable air-conditioned apartments with 4 single rooms, a shower, bathroom, small living room, and a kitchen. Having lived in a cramped 8′-by-8′ room with no AC for the last year, it feels like a palace. Already, 10 weeks feels like far too short.

DISCLAIMER: The last 3 days have already begun to blur together. Any events described after this point may or may not have occurred in the order they are outlined.

After a few hours settling in, we pile back into our two minivans for dinner at the house of Dr. Eliot Winer (who we are quickly and emphatically told simply to call “Eliot”), the director of the VRAC. He gives us an outline of the weeks to come, and he tells us in no uncertain terms just how exhausted he intends for us to be. I think he wanted us to be scared, but I say: bring it on.

And yes, I know he’s probably going to read this, and yes, I will eat those words later. Probably within a week.

Finally, we’re driven to Walmart to shop for additional room supplies, and things we might need for the next ten weeks. While lunch is generally provided for, we will usually be on our own for breakfast and dinner. I bought a lot of supplies to make my life easier and more comfortable, but it occurs to me now, several days later, that I should probably have also bought food.

Day 2: Wednesday

We all meet together outside of the Frederiksen Court community center, and pile back into the vans for the last time to be driven to finally see the place we’ll be spending most of our time for the next 10 weeks: The Virtual Reality Applications Center in Howe Hall. I feel like a kid in a candy store. I’m stopping every ten seconds to look at all the research posters that coat the walls, particularly the ones involving Psychology: a study of how people learn to navigate new environments; on how feedback affects the way people push buttons in Virtual Reality; on determining the emotional states of smartphone users. We pass by two very high-tech-looking drones, which our mentor (and, for the moment, tour guide) casually mentions were made by students. I turn around and spot a room full of the most advanced 3D printers I’ve ever seen.

I’m going to like it here.

We spend the next several hours taking a general campus tour, ending at the ID office, where we fill out forms for our new Iowa State University ID cards, which will give us access to the lab. During the tour, we stop for lunch at one of the cafeterias, and laugh about what the food is like in our various institutions. Most of us come from very small institutions, with 1500-5000 students. The contrast with the 30,000-student Iowa State is stark. Finally, we return to the VRAC for a more thorough briefing on the structure of the internship, and some introductions to the rest of the faculty and staff.

We wrap things up and take the bus home. I stay behind for an extra hour to finish some homework, which the staff have graciously allowed me to do on the the high-end lab PCs.

Later that night, we play some card games and get to know each other a lot better.

Day 3: Thursday

None of us wanting to be late, we all meet outside our apartment and walk to the bus stop by 8:10. We arrive at work by 8:15, to a mostly empty lab without much to actually do until 9:00, so some of us head to a nearby Dunkin’ Donuts for… well, for coffee and/or donuts.

We have allotted one hour for activating our new Iowa State user IDs and accounts, and getting in to various online services. At 9:00 AM, we get down to business, and immediately come face-to-face with that old adage: “no plan survives first contact with the enemy.” Nothing works. 60 minutes for basic account setup steadily drags out into 90 minutes with absolutely no progress. Eventually, we run out of time, and resign to give various databases and Glen, the resident IT miracle worker, time to figure things out. Our Faculty project leaders arrive, and give presentations on the three exciting projects that our cohort will be working on. In the interest of full disclosure, I was assigned to my last choice project, and originally worried that I’d feel out-of-place or lost. But after the presentation, and spending a few hours chatting and having lunch with the leader, Cody Fleming, I’m incredibly excited, and I wouldn’t switch to my previous first choice even if I could.

More on the projects themselves to come.

I apologize for the length of this blog post, but I did not have the time to write a shorter one.

—Charles Brailovsky