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!

Hello world!

I’ll continue to update and contribute more to my blog by writing more tutorials and other goodies in the next few weeks, stay tuned!

Also. I want and need a job. I’m thinking about becoming a free lance web designer on the side, but that won’t be consistent money. I’ll also definitely need a full time job after graduating from USF in May. Any suggestions on small start-ups/companies that I can contact? Any of them looking for web developers or programmers? I’d love to get in touch with them!

HTML5 and CSS3 Tutorial #3: Drop-Down Navigation Bar with “:hover” Pseudo Class, and Unordered Lists

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

The following notable HTML5/CSS3 topics will be covered in this tutorial:

1. “:hover” pseudo-class
2. “white-space” CSS3 property
3. “position: absolute” CSS3 property
4. “display” CSS3 property


This is probably one of the more frustrating features to code for your own site when you’re a beginner. A drop down navigation bar could be one of the most essential features on your website believe it or not. If you have a lot of content and links, and need help on coding a navigation bar that handles drop-down menus, then this solution is for you. There could be better solutions out there, using different HTML elements, but this is the solution that I was able to come up with.

I’ll post the screenshots of the original navigation bar, and the navigation bar after it was hovered over, to show that the dropdown menu actually works. I know there’s a better way to do this, such as having you test the navigation bar yourself on my blog, but unfortunately I can’t handle that feature. Sorry for any inconveniences, but the code does work!

Original Navigation Bar:
initial_navigation_bar

Navigation Bar Displaying Drop Down Menu, After Hovering Over “Profile” Tab:
dropdown_menu

Questions? Feedback? Please leave a comment!

HTML Code:

[sourcecode language=”html” collapse=”false” wraplines=”false”]

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Dropdown Menu Demo</title>
<link rel="stylesheet" href="styles.css">
</head>

<body>
<div id="navigation"> <!– Navigation id not used as selector in CSS file. –>
<ul>
<li><a href="#">Home</a>
<ul class="dropdown">
<li><a href="#">Games</a></li>
<li><a href="#">Anime</a></li>
</ul>
</li> <!– END: Home –>

<li><a href="#">Profile</a>
<ul class="dropdown">
<li><a href="#">Edit Profile</a></li>
<li><a href="#">Settings</a></li>
<li><a href="#">Log Out</a></li>
</ul>
</li> <!– END: Profile –>

<li><a href="#">About</a>
<ul class="dropdown">
<li><a href="#">About Us</a></li>
<li><a href="#">Executive Team</a></li>
</ul>
</li> <!– END: About –>

<li><a href="#">Support</a>
<ul class="dropdown">
<li><a href="#">Contact Us</a></li>
<li><a href="#">Feedback</a></li>
</ul>
</li> <!– END: Support –>

</ul>
</div>
</body>
</html>

[/sourcecode]

CSS Code:

[sourcecode language=”css” collapse=”false” wraplines=”false”]
ul {
list-style:none;
margin:0; /* Demonstration purposes to keep navigation menu in top left corner. */
padding:0;
}

ul li {
float:left; /* Puts tabs on same line */
}

ul li a {
display:block; /* Displays links on separate lines. */
color:#000000;
padding:5px 15px 5px 15px; /* 5px top, 15px right, 5px bottom, 15px left */
margin-top:1px; /* Separates dropdown links by whitespace */
margin-left:1px; /* Separates tabs by whitespace */
background-color:#CCCCCC;
white-space:nowrap; /* Doesn’t wrap words across separate lines if line is too long for parent’s li width. This is for the dropdown menu. */
}

li:hover ul { /* Displays dropdown menu for specific li element, once mouse hovers over li element */
position:absolute; /* Positions directly under the correct tab */
display:block;
}

li:hover li { /* Keeps li elements same width in dropdown menu, since it’s originally floating left, as specified in "ul li" selector */
float:none;
}

li:hover a {
background-color:#252525; /* Changes background color of tab and dropdown links to shade of black when tab is hovered over */
color:#FFFFFF; /* Changes text color of tab and dropdown links to white when tab is hovered over. */
}

a {
text-decoration:none; /* So that links aren’t underlined */
}

.dropdown {
display:none; /* Anything in dropdown class doesn’t appear initially when page loads */
}

.dropdown li:hover a {
text-decoration:underline; /* Underlines link if li element in dropdown menu is hovered over */
}

.dropdown li a:hover {
background-color:#CCCCCC; /* Changes background color of link in dropdown menu to grey when we hover over link */
color:#000000; /* Changes text color of link in dropdown menu to black when we hover over link */
}
[/sourcecode]

P.S:

You’re probably a motivated web developer who wants to freelance, blog, and/or be the best developer you can be. I feel many developers suffer from lack of clarity on their career/life, and poor time management and productivity practices. Without clarity and without the commitment to maximize your time, you don’t give yourself the ability to even work on your website projects and hone your coding skills with maximum efficiency.
To be the best coder, blogger, or freelancer you can be, it helps to master the non-technical aspects of entrepreneurship and personal growth. To begin building a solid foundation, I highly recommend that you consider getting my mentor’s free entrepreneurship book and training right now, where he shares his top 30+ tips that he followed in order to become a multi-million dollar entrepreneur in his 20s. I’ve read it, and as a blogger and web developer, it’s made a huge difference in my career outlook and my productivity! In addition, you may also find his productivity and time management master class useful to sign up for!
Remember that the book is free, so be sure to get it here now because I’m not sure if he’s planning to remove the book off the website! Obviously you have the choice, but I truly believe that you will learn some valuable lessons from it, like I have as a fellow blogger and developer. Please let me know if you have any questions, and I’d love to hear what you learn from the book!

teb-fb

Writer’s Block

Lol, writer’s block? Seriously?

No but seriously, it’s been about a month since I updated my blog. Maybe I’m just occupied by the website I’ve been developing this summer. Maybe it’s because I’ve been occupied by some of my other interests as well. Or, it’s probably both reasons. Or, maybe I just don’t know what to write about.

My blog does have different types of content after all. Which areas do I contribute content into first?

Anyways, that’s not the point. I’m here again, and I’m here to talk about what’s been going on the past 30 days, since I actually have the time to :D.

Hyakki's Corner
Hyakki’s Corner – Buying Games So You Don’t Have To

Aside from seeing my lovely friends everyday, it’s been a very productive month. Hyakki’s Corner (the gaming website I’ve dedicated 90% of my summer to) is making A LOT of progress. I’ll talk about the website more some time in the future, but I’m pretty proud of being able to see my own work out there on the web that the entire public can see. Though it’s not even close to being done, it’s really satisfying to be able to display my work to the entire world, and have another reason to play my video games: not only for my pure satisfaction and enjoyment, but because I can apply my writing abilities (I enjoy writing, by the way, which is why I have my own blog lol) by flushing out guides and reviews on Hyakki’s Corner for whatever games I enjoy.

Hyakki’s Corner and video games wasn’t all I wanted to talk about though. My laptop sucks. Like, really sucks, by my standards. I can do a whole lot on this laptop, and it’s probably more powerful than a lot of laptops out there, but it’s so frustrating to deal with. Blue screen of death. Screen locks. Slow performance. Constant disconnections from Wi-Fi. Actually I take that back, this laptop isn’t that powerful anymore. With 4 GB of RAM, and only 2.67 usable, and an lol-i3 processor, what the hell can you do at all? There’s so much I have to worry about with this laptop. Sure I can run skype, and do my programming on it, and browse the web, but I am so frustrating with how slow the laptop runs, especially when I have several applications and tabs open. I have to close several things when I wanna run a new application, and I always have to keep track of my Physical Memory and CPU Usage through the Windows Task Manager. It’s just, ugh. Which brings me to this bad boy:

new computer
AMD Eight-Core Processor @ 4 GHz, 16GB RAM, 2TB HDD, NVIDIA GTX 660 Ti

Okay, the image means nothing without some details on the specs, but I’m not sure who’s reading this so I’m not sure if talking about the details would be a complete waste of your time. You just basically need to know that I got this for $1100 (which isn’t bad honestly for its specs), and that it’s literally 1000x more powerful than my laptop. And with this computer, I get to play FFXIV 2.0 when it comes out baby! High settings too! And of course, I can do my usual computer programming, web browsing, photoshop, etc etc with no inconveniences (at least, less inconveniences). Overall, I’m happy with my purchase, even though it’s the most expensive purchase I have ever made in my entire life. But, since it’s not portable, I’ll probably buy a new laptop too at a bargain price, and leave my PC for use when I’m at my dorm at USF. Which I’m okay with.

And with that, I’m signing off for now. I wanted to talk about some job and internship inquiries that professionals have contacted me about this summer, but I’ll save that for another time. This post is getting too long anyways up to the point that you probably didn’t even read everything as you’re reading this last paragraph. On a final note, I’ll be uploading personal solutions to coding various sorting algorithms in programming, so look out for that if you’re a programmer!