Vincent Romo

Give me something interesting to work on.

Amazon WriteOn

10/05/2014

Image 15

Last year I wrote about participating in a hackathon while interning at Amazon Lab126. A couple of other interns and I ended up winning one of the prizes -- and we were contacted by some higher ups within Amazon that wanted to productize our project. Because of this, we weren't allowed to speak much about it and were only allowed to essentially say that we won a hackathon.

I'm excited to announce today that the product is now public. Amazon WriteOn is a community where writers and readers come together and drive the creative process to make good stories better, and great stories even greater. By allowing writers to get feedback easily, as well as instituting feedback systems, Amazon WriteOn will allow authors to reach new heights previously out of reach.

In addition, for those who love to read -- the community will offer a potentially endless supply of entertainment. Readers can become part of the creative process, explore new genres, and really drive the community.

I'm pleased the product has gotten a good reception; it is currently featured on TechCrunch and Wall Street Journal's Digits Blog. If you're interested, here are the URLs:

http://techcrunch.com/2014/10/03/amazon-launches-writeon-to-compete-against-crowd-writing-sites-like-wattpad/

http://blogs.wsj.com/digits/2014/10/03/aspiring-author-amazon-offers-a-crowdsourced-critique/

Stuq? We can help with that.

05/01/2014

Image 14

I’ve been tutoring for over two years now, and I’ve witnessed first-hand the amount of stress that has been put on the Computer Science and Engineering Department due to the increase in the amount of students they're admitting into program. When I started tutoring, courses had 120-150 students (estimating, I don’t have the actual numbers). This quarter, the Systems Programming course that I tutor for has 322 students enrolled in it.

It was rather easy to be a tutor before. You'd have a student to help every 20 minutes or so, so you'd have a break in between students until another needed help. The only time this wasn't true were the days the projects were due -- students have a habit of waiting until the last minute to get their projects done. But it was relatively easy.

When a student needed help with one of the CSE courses, they would go to the designated lab and write their name on the white-board along with the terminal number of where they were sitting. This system worked fine for years. However, with the massive number of new students, this system was breaking down. The lists were growing to the point where you had n different lists (for one class), with arrows drawn pointing to where one ended to where the next began. We were even running out of white-board space during peak hours because of the sheer number of students who needed help.

One day (Fall quarter), a few other tutors and I were walking into the labs to start helping people, and were shocked by how confusing the lists were. We had to have other tutors and students help us figure out what was what. It was bad. Really bad. It became apparent we absolutely needed a new system for this, and being software developers, we decided to propose a new system to take its place; a web application.

There were a few things that were essential. We wanted it to be as simple and intuitive as having a physical white-board, while allowing us to keep statistics on the types of problems students have. With the additional information, we could alter the discussions/lectures to improve learning process; by either spending more time on concepts students found hard to understand, or changing the way we taught the concepts. It would become a learning process for us as well.

We started working on it during the Winter quarter, and were able to release its first stable version at the beginning of this quarter, and several courses are currently using it at UCSD as it’s help system. Using the actual application requires you to be enrolled in one of the participating courses, but you can check it out for more information at: stuq.ucsd.edu

U.C. Problems

4/21/2014

Image thirteen

Back when I first started going to UC San Diego, I attended an event to celebrate UC San Diego’s 50th anniversary. The speaker, UCSD alumni Dileep Rao, who is known for his roles in the movies “Avatar” and “Inception”, delivered an insightful speech. There was one particular point he made while speaking; to take classes outside your major. He explained this would likely be your only chance to attend university classes as much as you want, so that if you were interested in any other subjects, to explore them while you can.

I took his advice and took classes that I didn’t need. Being a transfer student, all but one college requirement was completed upon transferring in. So the classes I took were completely unnecessary. As such, I took them as P/NP as to not hurt my GPA as my main focus would be on my major courses. I took courses in a wide range of subjects; African American History, Cognitive Science, Political Science, as well as additional CSE courses that weren’t required. I enjoyed learning about the different subjects and gaining new perspectives. I never shied away from taking “too many classes”; I saw it as a challenge. Every bit more I learned made going to a university even more valuable.

I was done with my Computer Science major requirements this past Winter quarter. Because of the relatively light course load, I enrolled in extra courses yet again. One of the courses was an “independent studies” project within the Computer Science department, which I’ll speak about in a different post. Independent Studies courses are pass/no-pass and are generally used to count as an elective for your major. I didn’t need any more electives, I just wanted to work on something interesting.

Fast forward to Spring quarter, I went to talk to my college advising counselors to make sure I was okay to graduate and was delivered the bad news. Because I had taken EXTRA courses, I would not be able to graduate. There is a university wide policy of only allowing a student to take a 25% class ratio of ‘classes taken for grades’ to ‘classes taken for pass/no pass’. I was at 26%. Those extra classes I took, even though I didn’t actually need them, were going to hold me back from graduating. I was dumbfounded. How could a university with so many intelligent people working for it, have such a ridiculously stupid policy?

I talked with my college counselor and pleaded with her; the University could remove those courses from my record completely and I’d still be fine to graduate, they could change the courses from P to the lowest possible grade (C-) and I’d be okay to graduate, they could include my community college courses into the ratio and I’d be fine to graduate. Nothing. They did not care very much about my situation. They told me I could try to petition it, but that they were 99% sure I would not even get passed the initial review. The only other option they gave me was to take additional classes during the summer sessions for the sole purpose of satisfying this 25% ratio rule.

Frustrated, I went to talk to the Computer Science & Engineering Department. The counselors there were always good, and I knew there was a small chance that they may be able to help me. Right away; they started emailing professors, explaining my situation them, and getting me added into additional courses even though the add deadline had passed the previous week. I was still in a pretty laughable situation; I had to add 3 additional courses to get back under the 25% ratio. But the classes were easy ones, like CSE 3. Yes, I was enrolled into an introductory to computers course after completing all of the CSE major requirements. But I was happy; I would be able to graduate, albeit with some annoying juggling around of more course work.

After talking to friends about my situation, one of them brought up the possibility of getting the professor I did the independent studies with to change my grade from Passing to Not-Passing, so as to remove those units from the ratio. I went and talked to my professor, and he was immediately onboard. After some back and forth with my CSE advising counselor to make sure this would solve the issue, he changed my grade to a NP. This immediately fixed the ratio issue, and put me back on track for graduating.

So in the end, I had to have my professor essentially retroactively fail me in one my classes in order to graduate. A class I did in order to build a product to help make UCSD better. My transcripts are a little tarnished from this whole ordeal, but I’m extremely grateful to the CSE Department for having my back throughout this whole ordeal. Seems a bit ridiculous that anyone could ever be in a situation like this, especially at a university like UCSD.

TLDR: Had to have my professor change my grade from Passing to Not-Passing in order to graduate, due to an archaic policy at UCSD.

Amazon Lab126

9/26/2013

Image twelve

I spent the summer interning at Amazon Lab126, and had a challenging project developing a proof of concept application dealing with a new emerging technology - WebRTC. For those who don't know - WebRTC is a new technology being developed over at Google that enables (and vastly simplifies) real time communication at the browser level. With just a few hundred lines of code, you can have a full-blown video-conferencing application in a browser. If you combine the capabilities of WebRTC with an Android application, the results can be pretty amazing.

Some of what WebRTC is capable of can be seen in the newly announced Kindle Fire - specifically, the new Mayday feature that enables live, real-time device support at the click of a button. TechCrunch has a video demoing the feature which you can watch HERE.

What WebRTC is capable of is still pretty limited, and developing for it can be annoying as the API isn't fully finalized yet. But that is generally the case with web development; things are constantly changing so there is much more overhead in keeping things running. The capabilities of what WebRTC can do is only growing. Each major release of Chrome has been steadily fixing bugs and expanding its capabilities.

If you're interested enough to learn more about WebRTC, CLICK HERE.

Counsyl

8/12/2013

Image eleven

I was invited to have dinner at Counsyl this past week and had the opportunity to talk to some of the leadership of the company. For those who don’t know, Counsyl is company working to discover useful information from the human genome. This information could be used to prevent the passing on of genetic diseases. Currently, they are able to test for over 100 genetic diseases by analyzing your DNA.

During the dinner, we were able to interact with both the leadership and some of the engineers over at Counsyl, and I was fascinated by just how much they've accomplished, as well as their focus on achieving their goals. They allowed us to ask any questions we had about the company, the technology, and company direction. It was apparent how passionate they are about what they're doing.

I was also given a tour of their labs, and was authentically impressed by their will and ingenuity to get things done. A good portion of their lab equipment is custom built, and they even have some 3D printers to build parts they can’t currently buy. They’re constantly looking for new ways to improve their processes, and you can easily see this with the amount of old equipment still laying around – replaced by new equipment to enhance the process. To give you an idea of how much they've improved their process, it used to take them several months to get the process done. As of last week they are able to do it within a week. They are really leveraging the advancements of technology, computer science, and the talent they have within the company. It is really impressive!

Find out more about Counsyl here!

Google Scholar

8/1/2013

Image ten

I was lucky enough to be selected as a Google Scholar this year and was flown out to Google’s New York campus for a retreat. There was around 70 scholars chosen this year, and people from around the world were brought together for an amazing set of events put on by Google.

I was able to meet other scholars from all over the world while I was there, and made quite a few friends in the process. Meeting with people, discussing different topics in computer science, and just hanging out with other scholars was a really rewarding experience. I was able to learn so much in the short time I was there - thanks to the awesome agenda and networking events Google had planned out for us. I had the opportunity to listen to Alfred Spector (Google’s VP of Research) give a really inspiring and mind-opening talk about the direction of Computer Science and Technology, to coding and joking around with Googlers at 4 AM during a hackathon. It was a pretty amazing experience.

Not only was I able to see New York for the first time, but Google put together an awesome agenda for us. It was truly an amazing experience. Thank you Google!

P.S.

Central Park is absolutely beautiful.

Amazon Social Hackday

7/25/2013

Image nine

I participated in an Amazon hackathon this past week – themed Amazon Social Hackday, and it was the first hackathon I was able to take part in. Hackathons always seemed to be scheduled during a quarter when I was taking too many classes and had no time to spare, so I was pretty excited to finally find out what I could manage to accomplish in a short period of time.

I got together with a few Amazon interns and we started to brainstorm different ideas that could be useful to Amazon. The major theme of the hackathon was social – and thinking of a social idea that could be useful to Amazon, given its current products, wasn’t the easiest of tasks. We did end up with two great ideas, and I would have liked to develop both, but time permitted us to only pick one (we went with the idea with the most votes in our group of 5).

It was a challenge doing the hackathon remotely – not being in Seattle made things much harder. We had to find a proxy to present our idea for us, and eventually, submit a video recording of our demo for the judges. It’s much harder to convey your enthusiasm about your idea when you’re recording a video and following along via conference calls.

We were lucky enough to have won one of the awards at the hackathon – the People’s Choice Award. I was pretty happy to have won this, as we were up against mostly full-time employees and had the added challenge of working from a remote location. It was a rewarding experience. While I have coded for long continuous hours on school projects; coding something new and different, and with a group of people you don’t know too well, is much more challenging. It’s always good to know what your limits are, and I think I learned some of mine from this hackathon.

Hopefully everyone will get to see what our hackathon project was in the near future!

A Google World

6/25/2013

Image eight

Google recently announced “Google Loon”, a new way to bring the internet to those who live in areas that now lack connectivity. It is truly remarkable how Google continues to innovate, even after years and years of success. Sure, not all of Google’s products were completely innovative. But it is clear Google isn’t afraid of trying something new.

Many companies get comfortable with their dominance, market share, and profits. They get lazy, and stop being innovative, but Google just doesn’t seem to fit into that category. They don’t seem “out” to just earn a profit. That just seems to come as a result of them making new and better products.

Their newest announced project, Google Loon, aims to truly connect the world to the internet. They’ve come up with an interesting way of doing it – by using large balloons and mesh style networks in order to reach places in the world many thought to be unreachable due to cost. There are (probably) many more obstacles for them to overcome in order to get the system out and rolling, many of them are probably non-technical, but I hope the world will get to see the fruits of their labor soon enough!

I strongly urge everyone to go over to the Google Loon project page and really check it out, it is a really inspiring project. I really hope the project becomes a success for them, as it could better the lives of many people in the world.

Source Control is Awesome.

5/10/2013

I didn’t REALLY learn how to use source control tools (i.e. Git) until my junior year of college. Admittedly, I am still no expert in any particular source control tool, but I know enough to get the job done.

After learning how to use Git more thoroughly, I immediately began to ask myself: “Why wasn’t this taught in our classes?” The benefits you gain from using source control tools are huge, and I feel like it should be better integrated into the Computer Science curriculum. One of my elective Professors made using BitBucket mandatory, and made each group share their repositories with him so he could track everyone’s progress. It was a pretty good idea, I thought.

But why didn’t I learn how to use a source control tool sooner? I could have benefited so much from learning it earlier. Source control tools have been around for quite a long time now, so why is it not better ingrained into our curriculum over at UCSD? I wonder if other schools are better off in this area.

If you don’t know how to use at least one source control tool, go and learn one now. Seriously, there are some awesome tutorials out there that give you a basic idea of how to use git (and in a short period of time!). If you’re rusty, go brush up, and make using it a habit. Even if you don’t plan on collaborating on it with anyone.

Click on the octocat to start learning git!

Debugging

3/6/2013

Image six

I've been refactoring my code for one of my class projects these past few days. I wanted to make the code cleaner, use better designs (and design patterns) because the code had gotten pretty bad in the past few weeks. During refactoring, I ran into a bug that took me hours to fix. I moved code dealing with sending and receiving internet traffic to its own class, and aimed to make it run in a background service. Upon making these changes, I ran into the problem of the service retrieving a null connection. It didn't make sense to me at the time. I clearly had done the connection set up before starting the service, and the service was not null right before starting the service -- but as soon as it hit the service's code, it was "magically" null.

I stared at it for hours, tried debugging in different ways, but nothing seemed to work. I then asked a friend to take a look at the code. I felt like I needed a fresh pair of eyes. While walking him through the whole process - it dawned on me. The service I was starting was running in its own process and couldn't access the memory of the main process in the way I was attempting to do so. After figuring that out, it took me a whole 30 seconds to fix the code.

I should have caught that much sooner, but for some reason, it completely slipped my mind. Oh well, it was a learning experience.

Convene Website Up

2/21/2013

Image five

We finally have a website up, and our application is now on Google Play. This is just a small push to see how our application fares when our friends are using the app. Hopefully it all goes smoothly. UI updates will be coming soon.

I am not sure how much formatting and customization I can do to the Google Play panel, so I apologize if the site looks buggy at times. We'll be updating it over the next few days. If you have any questions, notice any bugs, or anything -- let me know. You can email me at vince@vincentromo.net

Check out Convene here!

Doin' Too Much

2/12/2013

Image four

This might be a first. I was told by one of my professors to stop doing so much work on one of my projects for the course. He asked me to let the other team members do some of the work, almost as if I was not letting them do work. I was at a loss for words, though I did find it a bit entertaining.

I was a little disappointed when he told me this. I was really interested in the project I was working on, and hoped to take it much further than what was required. I seen so many different possibilities, and so many features that I could implement. It takes so much self restraint to sit back and watch your team build and create awesome things.

Convene

1/15/2013

Image three

I’ve been working on a new Android application - on a type of application I have not done before. It’s a social application aimed at solving the problem of finding people to do stuff with - such as finding a friend to go eat lunch with. As a college student, it can be sometimes annoying trying to find a friend to eat with occasionally. I am using Facebook’s Android SDK in order to provide a seamless user experience, and hope it can make the the lives of its users more convenient -- once released.

I plan on making the application based on both time and geographic location, to ensure that all the content displayed is relevant to all users. Activities that are posted will expire after a set amount of time, as I plan on keeping this application strictly for real-time use.

There are numerous challenges in successfully launching an application like this. It is only useful if there is a large user base. It would require a unique marketing strategy.

Cisco Systems Internship

9/10/2012

Image two

Over the summer, I had the opportunity to intern at Cisco Systems. I really looked forward to the internship; I had chosen Cisco because computer networks were my initial interest in computers. I was always interested in the ways computers communicated, and was eager to work on a Cisco product.

I was able to add features to an internal benchmarking tool with the specific goal of identifying possible bottlenecks and displaying statistics for product comparisons. I worked directly with Citrix XenServer as well Cisco's ISR G2 routers. I also worked on a tool to automate firmware upgrades of servers with the mission of making the life of the customer less troublesome. The tools were written in a variety of languages/scripts (Python, Bash, JavaScript, C, CSS, and HTML) so it was initially a challenge to work in a number of languages I had never used before, but I found it extremely fun and interesting.

TCP Fast Open

8/15/2012

Image one

I recently read an article over at lwn.net and was pretty intrigued. TCP Fast Open (TFO), a new protocol Google is developing, is seeking to optimize the way the internet connects in a fundamental way. The whole purpose of the protocol is to cut down on the number of round-trips TCP needs to make in order to establish a connection (known as a handshake). While this may sound insignificant at first, handshakes contribute a large amount of latency to web requests. Currently, when you visit a website, your connection to the site terminates if you do not actively interact with it, and a new connection is established when you click a link to the next page.

This new optimization in TCP works by sending a cookie in the initial SYN packet to reestablish a connection to a previously connected client. If the cookie authentication is successful, a full round-trip is no longer needed to start sending data.

TCP fast open was recently added into the current Linux kernel so hopefully we will see the effects of its optimization soon enough. If you're interested in the full extent of TCP Fast Open, you should read the following links:

Google Research
LWN TCP Fast Open