This was a web app that I created for my first ever internship this summer at Flow Video, an awesome video-production startup!
What it does
Customers of Flow Video can log in to this Rails web app and view all the videos they have that were made by Flow Video. They can see individual statistics for each video, as well as a page that is a collection of all their videos' statistics to date. It helps customers quantify each videos' success and the statistics can help people understand what kind of videos perform better. It is basically a customer portal!
How I built it
I built this using Rails with Heroku as the server. I taught myself Rails (I had never heard of Rails before this internship) and created a fully-functioning web app (front-end and back-end) within 2 months. I used bootstrap and CSS to style the pages.
Challenges I ran into
Honestly, I ran into a lot of challenges. But it was to be expected! This is my first internship and I was the sole IT employee at my startup. :) The important thing is that even though sometimes I felt like a lost duck at sea, I paddled my little feet and DID IT!!!
So, challenges. A big one was being able to accurately plan and project manage myself. This wasn't like a college class project, where I am provided a road map (the spec) and a deadline and I know that it is possible to complete within that time frame. Or have Instructional Aides who have Office Hours that I can attend. Nope. I didn't have a road map - I was all by myself and had to figure it out. I also had never created something like a web app with a technology I have 0 experience with: Rails.
In the beginning, I was giving myself 20-50% padding of time since I did not have previous Rails web app experience, API experience, PostgreSQL experience, to use as a baseline. I was going in blind. But as I gradually accumulated more experience, running into various Rails errors and debugging how to use APIs, I learned enough to where I was able to provide much more accurate estimates of how long it would take for me to accomplish X to tell my supervisor. So, that was the biggest challenge, trying to constantly give accurate time estimates so that I could complete this within my 2 months and keep my supervisor up to date. But I DID IT :D
The next challenge was that I had to learn what was good UI design and what was not (to be honest, I still do not know what is good UI design, since I only know a little!). Excellent example: I created a really cool design within my first week at my internship using React. The concept was a landing page that had an awesome, Nat Geo-looking landscape video playing. The logo for the company was floating at the bottom left. The inspiration for this? It was a video-production company, so it made sense to me initially to make the landing page an awe-inspiring beautiful video. However, I learned after talking to one of the founders that the idea of a video as a background for a website seems cool, but there are many cons with doing so.
For example, a video is a bit annoying up front if it's just playing automatically (especially if it has audio! Which my concept did. I admits, I admits OwO.) Next, the person visiting the website for the first time will not actually know what the website does. They just see a video. And it's important for people who are visiting your website for, what, all of 6 seconds, to be able to quickly find out what your website is about. A customer isn't going to spend a lot of time to figure out exactly what it does and how they should use it. Also, you're loading a video and that's not very good for the speed or loading of the website, especially if internet is bad. So, that was thrown out! But it was still awesome, because I got the freedom to create a fun little concept idea and present it to the team. Even if it wasn't the one we ultimately decided to implement. This also taught me, "So anyone can do UI design. The real question is, can you do good UI design?"
My third challenge would probably be having no technical guidance whatsoever since I was the sole IT employee. This was not a very big issue, as I enjoy challenges and being thrown in the mud and having to flounder around for a bit to get my bearings and figure out what to do. Struggle is fun (to a certain degree). I also knew this before I joined the company. But because I was the entire tech department, I found myself having a lot of questions that I couldn't ask the company.
What do I do? I go to StackOverflow! I discover the wonderful Rails community in Gitter! And I make nerd friends in a freaking IRC (internet relay chat) chat! I even created my own Discord channel for my internet tech nerds! :D I joined a bunch of other communities with passionate nerdy people. What I am saying is that I learned to find resources and leverage them while creating internet friendships! I am still speaking to a few of the internet friends I have made, and it is wonderful. They helped me when I had questions on Rails (which they have extensive experience with). In turn, I offered my eagerness to learn and help them with their personal projects, like AI and development of robots. All in all, I turned a YiKeS situation (not having anyone physically in real life that I can go to when I need help) into one that worked out. I made friends and found a way to get the answers I needed thanks to the beautiful thing that is the internet.
In short, I had a lot of challenges, but those are the main ones that I can think of.
Accomplishments that I'm proud of
I'm proud of myself for pushing through and doing it all, creating the app, waking up at 7am every freaking day and driving to work for 1 hour, getting there at 8:30am, and working. I am proud of myself for showing up for myself even when some days I didn't feel like it, and I'm proud for putting my whole being into the project. Before my Hacker Fellows cohort flew off to our respective internships, we attended a boot camp.
We did an exercise there, where we all went around to say what our goals were for this internship. Mine? I said that I wanted to "own the project and experience." It's not enough in my opinion to just sorta' do it and half-ass it. (Oh, here's a funny quote by the way: "Never half-ass two things. Always whole-ass one thing.") And I wanted to whole-ass the crap out of this internship. Taking 100% responsibility and accountability. And I did.
What I learned
Personally, I learned that I am a very driven person and I can do anything I put my mind to (as cocky as that sounds). Because if you believe you can, you've already started on your way to actually making it real life. Now just YEET IT!
I also learned that I really love start-up life. I love how it is flexible and the people working there are super passionate about what they are doing. Because while you can work at a larger company (and this is not saying anything bad about large companies), there is something about a group of people who come together and say, "Hey, I have X idea and I want to do it. Are you guys in?" and the other people join in and slap their hands together and they DO IT. Basically, I like passionate people and energy is contagious, the same way laughter is. If you're around people who inspire you and have positive, go-getter energy, you can actually accomplish more.
The next thing I learned is that I love working remotely. I enjoy being able to set my own hours and show up to work at a coffee shop (yes, you can find me at Starbucks) and get what needs to be done done. It's a certain level of freedom and autonomy to be in an environment that motivates me. For me, that's sometimes being completely alone in my room at 3AM staring at my dual monitors, and sometimes that's being in a busy Starbucks surrounded by the busy ambience noise that is people going about their lives. I love being able to switch up every day. It makes me happy. I am the type of person that loves freedom. In the age-old saying... clears throat WORK HARD PLAY HARD!!!
What's next for Rails Web App
Right now, my internship is over and I am working on other personal projects.