Summer Reflection Project

Menu
First Week at Kaptur
Space Shuttle Enterprise
FFmpeg
PHP
NY Historical Society
Company Culture
YouTube API
jQuery
So Long...

First Week at Kaptur

May 25th, 2012

Kaptur (pronounced Capture) is a website that allows a user to easily collect all of their facebook photos from a specific date or event. Kaptur uses an unique algorithm to find all of your photos. It's a useful and powerful tool. My personal favorite is their Surprise Me feature. It's lovely to get a recommendation of one of my facebook photos that I haven't seen in a long time.

The first couple of days I worked on familiarizing myself with the product. This includes exploring different features. A Kaptur can be created by selecting the data of the event, selecting the photo to start with or through Surprise Me. Once you are directed to the main page of your Kaptur, you see several piles of photo, this includes an All Photos pile, Photos of Me, Photos of Friends and Albums. Each Kaptur can contain multiple Facebook Albums which makes it convenient for the user to have all relevant albums in one place.

Our office is located on 31st Street near 10th Avenue. We are within walking distance of the Highline and Penn Station.



My day starts at 7AM to hop onto the train towards New York. I arrive at Penn Station at 9AM and head over to our office. Normally, I'm not a big fan of coffee but since a 9-5pm work day means no time for naps, I have come to appreciate caffeine much more.

Our team utilizes the agile development methodology, which means we make changes and roll to production very frequently. Every day we have morning calls to report our progress and discuss future tasks. Each Tuesday morning we have a sprint call for development tasks.

Space Shuttle Enterprise

June 6th, 2012

Today, the Kaptur team took a surprise field trip to chase down the Space Shuttle Enterprise as it heads up the Hudson River to its permanent home at the Intrepid.

We headed down to the harbor to Kaptur the moment!




See full collection of photos here: CLICK FOR PHOTOS

Following the field trip, we had pizza for team lunch. Team bonding is so fun!

FFmpeg

June 20th, 2012

I am working on creating a program to convert multiple images into a video. For my project, I have to use FFmpeg, which is a software that allows manipulation and conversion for videos. It's a command line program and is used by many other projects such as Facebook, Google Chrome and YouTube.

It took me a while to properly install FFmpeg on my own machine. Still, I'm very glad that I’m on Ubuntu since there were very clear instructions as to how to install it.

FFmpeg is fairly user friendly and very well documented. It makes it very easy to convert between different types of video.

Unfortunately, in order for images to be converted to video, they have to be named sequentially. For example, image1.jpg, image2.jpg, image3.jpg etc. FFmpeg is unable to take in multiple inputs. This means that the images have to be downloaded and renamed before they can be processed. This will increase processing time.

PHP

June 26th, 2012

I'm learning PHP in order to build my project. PHP is a server-side script and is very much new to me. However, I really enjoy PHP since it is object-oriented and I'm very much familiar with object-oriented programming. I like consistently had issues with getting my server to work properly on my localhost. Originally, I was using the built-in server that comes with php5 but that was very inefficient. I have installed Apache 2 when I installed LAMP. However, it took me a whole day to become familiarized with Apache. Basically it was fairly simple to deal with and very user friendly. The two main commands I need to know are 1) tail -f /var/log/apache2/error.log for viewing the error log 2) $ sudo /etc/init.d/apache2 restart for restarting the server

Specifically, my project involves converting a slideshow into a video. There are many ways to do this and it's exciting to be doing research as to find the best way to make it happen.

Basically, I finally understand why programmers are considered engineers, even though real engineers don't necessarily consider programmers to be engineers. You have to really think about the solution. You have a problem and you have to come up with a solution that's not too hacky or inconvenient and be able to solve the problem without breaking everything else. Every time I get one thing to work, I encounter a new problem. There really is no end to this because you can always make something better.

NY Historical Society

July 13th, 2012

I have come to truly appreciate Fridays now that it is no longer the first day of the weekend but rather the last day of the work week. Usually, Friday evenings meant I would hop on an Express Train and go home to watch TV with my sister but I have finally decided to take advantage of CUArts and having free access to museums. While having free access to museums is one of things I love most about Columbia, I don't usually take out the time to enjoy this perk. So, I've decided to go to New York Historical Society Museum and Library after work.

Located between 77th and 76th Street on Central Park West, the New York Historical Society was a quaint museum and not very crowded. It felt like a hidden treasure. Access to the museum included a ticket to a brief movie about the history of New York. The film described New York’s beginnings as New Amsterdam, the role of New York City as the first capital of the United States, the Civil War draft riots, the great depression and September 11. But what really amused and impressed me the most was the presentation. Instead of a single projection screen, the movie was projected onto multiple banners. These banners together formed the projection screen. When scenes were changed, some of these banners would roll up or down to create a much more dynamic showing.

One of the first things that I saw was the Declaration of Independence



I also really enjoyed the History Under Your Feet Exhibit since it carried a sense of discovery when you see the displays in unexpected places as you are walking.



There was a lot to see at the Luce Center, I will definitely need to go back



Train



The Inside of a Plane



Greeting guests at the front doors is President Lincoln



I look forward to coming back to the New York Historical Society sometime during the school year. And, I have much more places to explore.

Company Culture

July 19th, 2012

What I truly love about working at a start-up is the vibrant culture. We have toy helicopters, nerf guns, plastic lizards, model airplanes, and crayon gum in our office.

At the office, we use skype to communicate with each other. It's efficient to leave each other messages on skype and keep everyone in the loop. But, it's not all business. Skype has a whimsical side.

Our CTO has devised a new system to make testing our product more efficient and more fun. We would assign a task master each day who would lead everyone through the testing flow. The task master would also wield control of the nerf guns and have authority to shoot anyone who deviates from the instructions.

We are also less than fond of Internet Explorer. I can only run Internet Explorer on Windows 7. I usually work on Linux when I am programming but I still have a functioning Windows 7 OS on my computer. Unfortunately, Internet Explorer would sometimes crash on its own. This happens to more than one of us in the office. However, it's very important to test on Internet Explorer since most bugs and errors seem to occur while using Internet Explorer.

IE Joke

YouTube API

Aug 10th, 2012

It's time to integrate my program with YouTube. YouTube's Data API allows an outside program to perform YouTube operations such as uploading or updating a video. My program had to be able to upload a video onto YouTube automatically. There are two ways for this to happen. YouTube allows for Direct Uploading and Browser-Based Uploading. Browser-Based Uploading allows a user to directly upload a video from their files onto YouTube. However, since my video is being processed and stored on the server, Direct Upload was more suitable.

Once the video uploaded, I had to be able to get the upload status from YouTube. In order to do this, I had to check the tag in the API response

The <yt:state> tag only exists for videos that are not playable. This means that once the video is ready to be played, the <yt:state> tag disappears. In order to continually update the upload status, I used a javascipt function to continuously call on the server-side function used to check the <yt:state> tag. Every fifteen seconds, the status is checked and the output is displayed on the browser. Once the <yt:state> tag no longer exists, we know that YouTube has finished processing the video and the embedded YouTube player is displayed on the browser.

jQuery

Aug 13th, 2012

I must admit that I have little to zero experience with Javascript and there are probably much more efficient ways to approach my problem than my present solution. It is indeed true what they say, that Java is to Javascript as Ham is to Hamster.

I needed to use AJAX to update the information on the web page without having to refresh the page each time. As such, I needed to use Javascript to send requests to the server and process the returned data.

Fortunately for me, there exists jQuery, a Javascript library that simplifies writing ajax interactions. Pretty much every web search I've conducted on how best to utilize ajax resulted in the suggestion to use jQuery. I had a lot of fun learning how to use jQuery and putting it into action. It's concise, powerful and efficient for creating a dynamic web page. Not only did jQuery solve my AJAX issues but it also has a lot of other cool features.

By using the fadeIn() method, I can animate text into the page.

Put your Mouse over the Photo

So Long, and Thanks for All the Fish

Aug 17th, 2012

Well, I had a fantastic time working at Kaptur this summer. It's been great learning new programming languages and learning more about web development.

Many Thanks to the Kaptur Team!

And, here is a video I made out of the Olympic Kaptur, with a little help from YouTube's editing features