Summer with Android
This last summer I was hired as a intern programmer to work on an app called ReallyMake. It is an app that lets you throw, sculpt, and paint pottery on your phone as though you were at a potters wheel. It also has some cool features like viewing the pot in augmented reality and sending the the model to be 3D printed.
I was hired on sort of halfway through the project as I understand it. It had a lot of the core functionality out of the way, but they wanted someone to help with the graphical side of things in OpenGL, namely shaders. It was interesting working with graphics in the restrictions of mobile devices. It became even more interesting when I was asked to find the reasons for the different outputs with different devices. It was an issue rendering the texture on some older devices and the only thing I could surmise to be the problem was that some devices had a significantly smaller amount of memory on the GPU. I can’t imagine how big companies handle this sort of thing. There are hundreds of different android devices with different internals, so the possible problems are endless. The company I worked for was rather small, and almost all the code was written in-house for this project, so no large libraries to handle the funny things with android. The only thing we did use was something called the Nasa Worldwind API, which was used to build and render the meshes for the pots in OpenGL. Though from what I understand it is primarily targeted at non-mobile systems.
So beyond android, the other major thing I got to learn while working there was SVN. I am primarily a GIT user, and have enjoyed every feature I’ve learned about it, but going from GIT to SVN was more troubling than I thought. The trouble didn’t come from using it. Using it was mostly the same. A single upstream with branches (though the team I worked with didn’t use them). The only big difference that I really had any conflicts with was that SVN stores all commits on the central server. It meant that I couldn’t rewind or research any old commits without connecting to the server via VPN (which was a lengthy process in itself for security reasons). Perhaps this was a security thing, my boss is really heavy in protecting code and information so anyone getting access to the whole history of the project might be an issue to him, and I can respect that. It wasn’t really a hassle, just something that rubbed me the wrong way