The Power of Side Projects

Do you want to become a better developer? Do you have a side project in mind? Are you trying to figure out if programming is for you? Do you need to spice your resume up?

I challenge you to grab a buddy and build something.

It was the end of my junior year at USF. No software engineering positions lined up. No internships. Nothing. Another summer of video games and anime, hurray!

Then I met a gamer on Facebook, who was looking for a web designer to build a video game blog.

At the time, I was just a web designer. A really inexperienced one. I knew zero about building websites besides basic HTML/CSS. I commented on his Facebook post because I wanted to build this website. I love video games, and if I really wanted a job as a developer after graduation, I needed something to put on my resume. So, why not?

After going back-and-forth with him, I realized that it was going to take a lot more than just HTML/CSS to build this website. He wanted every single feature that any other user-driven website had: forums, private messaging, article comments, Google ads, and a content management system for him to write articles without digging into the code. We set a deadline for mid-August, so I had only three months to not only design, but to build an entire website from scratch.

By the August deadline, I was able to flesh out a fully-functional web application, where we both wrote reviews and guides for video games like Saint’s Row IV and Final Fantasy XIV.

While working on this web application, I was able to:

  1. Evolve into a knowledgable full stack web developer
  2. Discover my passion in programming
  3. Teach myself how to develop in PHP/JavaScript/jQuery
  4. Teach myself basic SQL and how to use databases
  5. Hone my skills in HTML/CSS, and coding overall
  6. Practice reading other code and modifying them to suit my website’s needs
  7. Research search engine optimization techniques
  8. Research techniques and statistics on social media marketing
  9. Practice project management skills
  10. Learn how to manage my time and priorities
  11. Add a significant project to my resume and LinkedIn profile

As you can see, there’s definitely a lot to learn and improve on when working on side projects. Although our website stopped being maintained because of school priorities (and thus, eventually vanished off the face of the earth), I’m proud to say that I built a large-scale project and learned various skills that helped me land interviews with countless start-ups, and finally a full-time job offer as a software developer. If you have any side projects in mind, I encourage you to invest some free time in figuring out how you can make them happen, especially if you are a young and inexperienced.

Any general advice or stories that you’d like to share with fellow developers? Any questions about the work I did while building my web app?

What’s Your Career Plan?

I’m currently reading Gayle Laakmann’s “Cracking the Coding Interview” so I could perform better in technical interviews (and also increase my knowledge in a lot of Computer Science related topics), and one of the things that she suggests is to make a career plan. She makes an obvious (or maybe not obvious?) point that what we want to achieve in our professional lives should depend on the career plan we made for ourselves.

Here’s the snippet of what Laakmann said in her book:

Career Path: Make a plan for your career. What do you want to do 5, 10, and 15 years from now? What skills do you need to develop? Which company or position will help you get there?

Before starting at a company, devise a career plan. What would you like your career to look like? What will it take to get there?

However, if you want to run a company one day, or move up into management, you should stop and check your career plan. Is another year at your job going to help you get there? Or is it time to move? You, and only you, can decide.

That being said, here’s my current career plan. It’ll probably go through a few iterations but, I think it covers much of what I really want to do with my career.

Now
– Get an entry-level web development job, video game development job or a mobile application development job.
– Continue developing in Android, and learn Swift/Objective-C in order to develop for iOS.
– Improve in all the languages/technologies I am currently experienced in.
– Learn Ruby/Ruby on Rails, PostgreSQL, and Django.

In 5 years
– Continue improving in all the languages/technologies I’m currently experienced in.
– Continue gaining valuable experience at the job I have.
– Ship at least 1 Android application to Google Play.
– Ship at least 1 iOS application to the App Store.
– Ship at least 1 Wix application to the Wix App Store.
– Become a LinkedIn influencer.
– Generate a larger following on my blog in order to establish my web presence.

In 10 years
– Hold a Chief Technical Officer or Project Manager title at my full-time job.
– Begin serving as a mentor for fellow Computer Science majors in college.
– Ship at least 1 more Android application to Google Play.
– Ship at least 1 more iOS application to the App Store.
– Ship at least 1 more Wix applicaction to the Wix App Store.

In 15 years
– Explore through my Entrepreneurial ideas, and start a company.
– Ship an indie video game.
– Begin giving business/technical talks at Universities.

What’s your career plan? Feel free to post it on your own blog! Please reference my blog post (or whatever WordPressers do when referencing other people in their blog) if you do decide to do so!

“Swift” – Apple’s New Programming Language for iOS and OS X

Has anyone read up on what Apple unveiled at the World Wide Developer’s Conference earlier today?

The thing I was most excited about was the new “Swift” programming language. Hmmm, maybe it’s a good thing I haven’t learned Objective-C yet? I am definitely picking up on Swift right away and I’m gonna dive straight into Apple’s iBook and other documentation. I’m really excited because I want to learn how to develop iOS apps, and I could possibly get started with a start-up who is looking to jump into Swift right away. The only thing is… I’ll need a Mac to program on. Can’t really practice developing iOS apps if I don’t have one…

What do you guys think about Swift?

Article here:

http://techcrunch.com/events/wwdc-2014/

Why You’re Not Hearing Back From Start-ups on AngelList

I’ve been very active in my job search over the past few months and one of my main resources for jobs has been AngelList (www.angel.co). It’s an absolutely great resource to use when looking for start-up jobs, and I only have great things to say about it. While there’s a lot I could (and want to) say about AngelList, I’m going to focus on one topic for now: why you’re not hearing back from start-ups you expressed interest in. This will be the first in a series of articles I’d like to write about AngelList and my experience in using it. If you’d be interested in reading more later on, be sure to follow my website!

I’ve used AngelList enough to explain what I think makes a great application. In fact, I applied to 8 start-ups over the past 2 weeks using AngelList, and despite all the competition and not having a lot of work experience under my belt, I heard back from 3 of them so far. In my opinion, that’s pretty good. While I know what it’s like on the job seeker’s end to express interest in a start-up, I have seen for myself exactly what it looks like on the company’s end. Consequently, I learned how I could improve my chances at hearing back from a start-up. I compiled a list of possible reasons as to why a start-up didn’t contact you back after you expressed interest in them on AngelList. If you haven’t heard back from a start-up after 2 weeks of expressing interest, it could be for any of the following reasons:

1. They’re not hiring or using AngelList.
Plain and simple. And this could be for a few reasons: they already filled the positions they were hiring for, or they just don’t have enough funding at the moment to bring more workers aboard their ship.

2. You weren’t qualified for their job openings.
Not everyone is a perfect fit with a company, whether that be culturally or professionally. If you applied for a start-up who needs Ruby on Rails developers, but you’re lacking in Ruby on Rails (and have no work to show for it), you probably won’t be getting an e-mail or message back. The best you can do is learn and improve.

3. You didn’t explain why you’re interested in working for them.
There’s feature on AngelList where you can leave a note for the start-up, explaining when you’re interested in working for them. This feature is there for a reason. From the start-up’s point of view, the person who is in charge of their AngelList account receives an e-mail that shows a list of applicants who were interested in working for them. On that list, he/she can see who left a note for them. Most start-ups won’t waste their time (and for good reason) looking at your profile to see how you might fit in with their team. In other words, they might rely on your note to do some of their work for them. Do yourself a favor and make sure that you explain to the company why you’re interested in working for them. If you don’t explain why you’re interested in working for them, they may pass on you even if you have a fantastic resume and professional profile. And the main reason: they don’t have the time to look at your profile.

4. You didn’t follow up your interest with a resume and cover letter.
When you express interest in working for a start-up, think of that as your application. Will you ever, in your entire life, apply for a job without sending in your resume and cover letter? While a lot of start-ups will contact you even if you didn’t send in a resume/cover letter (heck, it happened to me), it’s not the ideal approach to take. You increase your chances of getting the start-up to contact you back if you send in a resume/cover letter. Many start-ups value their time and if you can spare them the time it takes to ask you for your resume/cover letter, you’re doing the start-up, as well as yourself, a ton of favors. If you don’t know where to send your resume and cover letter, check out their Careers/Jobs/Contact Us section on their website.

In summary: express interest in a start-up, explain why you’re interested, and send them your resume and cover letter.

Have you used AngelList in your job search? How many start-ups have you applied to, and how many have you heard back from! I’d love to hear any stories!

Advice For Inexperienced Programmers and Computer Scientists

There are so many companies out there looking for computer scientists. Over the last three months, I’ve spoken with a lot of recruiters and other companies for Software Engineering positions, Full Stack Web Developer positions, and the like. But, I haven’t accepted a job yet. However, the job opportunities have been right there in front of me; and because of that, I think I am a credible source for advice in this field. I’ve learned a lot since I began hunting for jobs, and my advice will come from experience, online research, career counseling, professors and professional connections.

Here’s where reality sets in: if you’re an inexperienced programmer and you don’t have any professional connections, it’ll be tough to find a job. Some quick advice for inexperienced programmers:

  1. Look for internships/opportunities at start-up companies (for experience).
  2. Use your available resources (books, internet, etc) to learn some new programming languages on your own.
  3. Think of fun side projects (maybe a personal website?), work on them, and finish them.
  4. Network. Network. Network!
  5. Get a LinkedIn and GitHub account, and use them.

I know you’ve probably heard much of this same advice before, but it’s true. I cannot stress how important these points are.

#1. Start-ups, in my opinion, are one of the best ways to get experience. This is because you typically work with a smaller team, and you are typically assigned a variable amount of tasks (as opposed to working on one specific task at a large company) throughout your tenure. Also, many start-ups are willing to take in all levels of programmers as interns, and they could potentially offer you a full-time job if they like you and your hard work. There are many resources out there for finding opportunities at start-ups. These include AngelList (www.angel.co), WhiteTruffle (www.whitetruffle.com), your school’s career services department, and other sources. My favorite in particular is AngelList. On AngelList, you’ll find information on a lot of start-ups such as their size, their mission, how much funding they have, and what job opportunities (and range of salary) they currently have (Note: this could be different from what job openings are on their website). There have been a few start-ups who reached out to me through AngelList, so not only would you be looking for start-ups, start-ups would be looking for you, too. If you’re currently hunting for job opportunities, I highly suggest that you check out AngelList now and create an account.

#2. This is very important (and also fun!) because many jobs out there require candidates to have a wide range of knowledge in programming languages. For example, when you apply for a full stack web developer position, you’ll probably need to know something along the lines of HTML5/CSS3, JavaScript, jQuery, AJAX, PHP, and MySQL. Or, maybe there’s another full stack web developer job that requires HTML5/CSS3, Python/Django, and PostgreSQL. If you want to market yourself to a lot of employers, I highly suggest picking up new languages. Not only will you be able to put these skills on your resume, but you’ll also show employers that you are capable and motivated to learn. For resources on learning new languages, Codecademy (www.codecademy.com) is a good resource for learning web technologies like HTML5/CSS3, JavaScript, jQuery, PHP, Ruby/Ruby on Rails, and Python. Also, Lynda (lynda.com) is a fantastic resource (assuming you have an account) which contains video courses on countless subjects. I taught myself PHP, JavaScript, jQuery and AJAX through lynda.com.

#3. Honestly, this is really fun if you love computer science. If there are any program ideas that you have right now, then write them down right now (or in Notepad), and get to work. Not only will you be practicing, you’ll also have programs to show to employers (that you can post on GitHub or on your own website!). Remember the cliche: “show, don’t tell”. Showing your work to employers will give you a leg up over someone who “tells” employers about their work. Be sure to write your code as professionally as possible. Some jobs out there will pass on you if they skim through code that isn’t up-to-par with their expectations, even if you wrote your code a few years ago. This has already happened to me. So: write your code professionally, and if necessary, refactor old code that you wrote.

#4. You’ve heard this a million times before, but it’s one of the best pieces of advice that any fellow computer scientist can give, and it’s one that can’t be emphasized enough. Networking is important because it connects you with other job opportunities that you otherwise might not have found on your own. Not only that, but your network can vouch for you and give you recommendations. One of your professional connections could potentially help you land your first (or next) job. Also, your connections will be able to pass on a whole lot of knowledge to you if you ask.

#5. As a computer scientist, having a LinkedIn and GitHub account is absolutely crucial. Not only will you be able to keep in touch with your professional connections on LinkedIn, but you’ll also be able to find job postings and get in touch with other people in your field. Showcase your professional portfolio on LinkedIn, and showcase your projects (professionally written!) on GitHub. I can’t count how many job inquiries I’ve received through LinkedIn. I just know that LinkedIn is the reason for much of my success in finding job opportunities so far.

 

Any questions? Inquiries? Comments? I’ll be happy to get in touch with you!

Wix Hackathon 2014 #WixHackathonSF

Blog entry to be updated later. For now, I’d just like to post this short entry here to chronicle my first real experience at a hackathon 😀 (the Facebook hackathon didn’t count because I did homework… sucks).

Prototype of ‘Twitter Says…’ app:
– Widget: http://cs.usfca.edu/~jpbullalayao/WixApps/TwitterSays/Widget.php
– Settings: http://cs.usfca.edu/~jpbullalayao/WixApps/TwitterSays/Settings.php

To be published on Wix Market App soon!

Java Tutorial #1 – How to Write to a Text File (Part 1)

Courtesy Note: If you found this tutorial helpful, please take a few moments to comment below!

The following notable Java built-in classes are used in this tutorial:

1. “BufferedWriter”
2. “FileWriter”


Java Tutorial #1 – How to Write to a Text File

This will be a very simple code example on writing content to a file. This example writes a simple integer to a text file. It creates a file named “numBlinks.txt”, and outputs “100” to the text file.

// Author: Jourdan Bul-lalayao
// Purpose: Small program that logs generated data into a text file

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class DataLog {

  private int numBlinks;

  public DataLog() {
    numBlinks = 0;
  }

  // Function: gen()
  // Purpose: Generate data to be logged
  public void gen() {
    numBlinks++;
  }

  // Function: log()
  // Purpose: Log data into a .txt file
  public void log() {

    // Make file for # of blinks
    File blinkLog = new File("numBlinks.txt");

    // Try/catch statement necessary for FileWriter
    try {
      BufferedWriter writer = new BufferedWriter(new FileWriter(blinkLog));

      // If we don't use String.valueOf, it will output string equivalent of numBlinks.
      writer.write(String.valueOf(numBlinks));

      // ALWAYS CLOSE THE WRITER, file will be empty if you don't close it
      writer.close();
    } catch (IOException e) {
      System.out.println("Unable to write to file!");
      e.printStackTrace();
    }
  }

  public static void main(String[] args) {

    DataLog log = new DataLog();

    // Generate data
    for (int i = 0; i < 100; i++) {
      log.gen();
    }

    // Log data into txt file
    log.log();
  }
}

Questions? Feedback? Please leave a comment below!

Inside the Computer Hardware

I just wrote my first few programs in the assembly language. It’s really interesting to see how computers execute instructions under-the-hood. I recommend to you computer programmers that you try out a few of your own programs in assembly. It can be a pain, but you’ll understand the basics of what computers are doing behind the scenes! You can download MARS here, which is a MIPS Assembly Language IDE: http://courses.missouristate.edu/KenVollmar/MARS/

Having said that, I probably won’t write assembly again after I graduate. But, who knows.

I’ll post my assembly programs in my “Code” section soon!

How to Prevent Skype from Lowering Your Sound

Courtesy Note: If you found this tutorial useful, please take a few moments to comment below!

The dreaded inconvenience of Skype (or your operating system, actually). Ever had that problem where if someone calls you on skype, it almost mutes the rest of the sound on your PC? If someone decides to call you while you’re listening to your music, you’re probably … yeah, let’s not go there. But it’s annoying right? Have you also tried to figure out how to stop Skype from automatically lowering the rest of the sound on your PC, but couldn’t figure out how? There’s absolutely no signs of it anywhere in the Skype configuration, and only god knows why I couldn’t find the answer on Google.

But alas, if you’re reading this, you did Google for the answer, and the answer is right here in this post for you (at least, for Windows 8 users. But I’m pretty sure it works for other Windows users as well, and the same concept might be the same for Macs.

I’ll be speaking in a Windows perspective here. So if you’re a Mac user, you can follow along but the directions won’t be the same. And I’m pretty sure if you follow along the same concept, you’ll be able to find the solution. I happened to stumble upon the solution while messing around with my new Windows 8 PC. But anyways.

Recording Devices
Click “Do Nothing” to stop Skype lowering your sound!

Basically, if you’re a windows user, go to your Taskbar (usually the bar on the bottom that holds your important application tabs) and look for your Speaker icon. Right click on it and select “Recording devices.” In this menu, go to the tab called “Communications” and WA-BAM, click on “Do Nothing.” This essentially stops Windows from lowering your music when it detects a communications application that’s gonna be in use (in this case, Skype). And walah, you’re done!