Create your Own Company as a means to gain experience

Here’s an excerpt I found very interesting from John Sonmez’s newly released book, ‘the Complete Software Developer’s Career Guide’. It is a good read and I recommend it.

I think I might try this option, and I think you guys might want to give this some thought too.


Many people laugh when I tell them this idea of gaining experience when you don’t have any, but it’s perfectly legitimate.

Way more companies than you probably realize are actually run by a single person or a skeleton staff of part-time workers or contractors.

There is absolutely no reason why you cannot create your own software development company, develop an application, sell or distribute that app, and call yourself a software developer working for that company.

You can do this at the same time you are building your portfolio and learning to code.

If I were starting out today, I’d form a small company by filing for an LLC, or even just a DBA (Doing Business As) form (you don’t even need a legal entity), and I’d build an app or two that would be part of my portfolio. Then, I’d publish that app or apps in an app store or sell it online in some way.

I’d set up a small website for my software development company to make it look even more legit.

Then, on my resume, I’d list the company and I’d put my role as software developer.

I want to stress to you that this is in no way lying and it is perfectly legitimate. Too many people think too narrowly and don’t realize how viable and perfectly reasonable of an option this is.

I would not advocate lying in any way.

If you build an application and create your own software development company, there is no reason why you can’t call yourself a software developerfor that company and put that experience on your resume—I don’t care what anyone says.

Now, if you are asked about the company in an interview, you do need to be honest and say it is your own company and that you formed it yourself.

However, you do not need to volunteer this information.

I don’t think being the sole developer of your own software company is a detriment either.

I’d much rather hire a self-starter who formed their own software company, built an app, and put it up for sale than someone who just worked for someone else in their career.

I realize not all employers will think this way, but many will. You’d probably be surprised how many.

Copyright Notice:

“Copyright Disclaimer Under Section 107 of the Copyright Act 1976, allowance is made for “fair use” for purposes such as criticism, comment, news reporting, teaching, scholarship, and research. Fair use is a use permitted by copyright statute that might otherwise be infringing. Non-profit, educational or personal use tips the balance in favor of fair use.”

Build Java experience by volunteering: location could be anywhere (Work from home)

Hello all

I would like to share something with you all. A platform has been created whereby companies looking for volunteers to work on their Java based projects can post and select applicants.

Code for Social Good is a nonprofit organization in the U.S. We have recently launched a global volunteering platform that provides nonprofit organizations and open source projects with free technical resources. We  hope this specialized technical volunteer network could better assist nonprofits and open sources identify potential volunteers, at the same time assist volunteers identify technical projects that fit their interest and skills. It is a good opportunity for Java developers to build real project experience. Please consider register on Code for Social Good! The web site is:

Resume format for the Novice

Hi everybody

I would like to share this resume which I cut out from the book ‘Java/J2EE Resume Companion’. This book teaches how to write a resume for the novice, the intermediate, and the advanced professional.

I’m sharing the novice resume. I think that it is particularly challenging for a novice to write a resume because he or she do not know what to include. The author Arulkumaran Kumaraswamipillai has laid out exactly what to include and in what order, and he claims it to be the most effective format.

Futhermore, I think almost all WSU CS students can fill the various sections of this format, because such is the design and layout of the curriculum.  I am going to try this format and see how it goes.


Also please don’t take offense at my posting of this copyrighted material. Copyrights were broken for educational purposes only, but if you think otherwise let me know and I’ll proceed accordingly.
“Copyright Disclaimer Under Section 107 of the Copyright Act 1976, allowance is made for “fair use” for purposes such as criticism, comment, news reporting, teaching, scholarship, and research. Fair use is a use permitted by copyright statute that might otherwise be infringing. Non-profit, educational or personal use tips the balance in favor of fair use.”


Hi everybody

Just wanted to share something with you all. So I came across this java learning road map, which I think is typical of the skills required for a Java developer. I like that it proceeds on a step-by-step basis, and thus, guides those who don't know where to start. However, I'm still trying to figure out what the colors indicate. Not sure why some blocks are colored the way they are.

While looking at the various job postings you would soon come to the realization that everybody and their mama require that you know these building blocks at a minimum — haha :). courtesy of


Here's another one, presumably more in-depth.


Book Suggestions for Learning Design Patterns

Hi everybody, good morning

I thought I’d share my thoughts before I go about my day.

If you are looking to learn Design Patterns, here are my suggestions. Not that I’m an expert, but you know, this is what worked for me 🙂

I’ve looked at so many books to grasp design patterns and the book that worked for me is, Programming in the Large with Design Patterns Kindle Edition by Eddie Burris. It’s only a couple bucks, and I believe it is so worth it! Trust me, you will not be disappointed. I’ve looked into so many books on this topic, and nobody is more succinct and on the point as Burris is.

Here’s an excerpt from Burris’s book:

Design patterns are NOT distinguished by their static structure alone.
Can you tell me which represents state pattern and which represents strategy pattern?


It is of course impossible. What makes a design pattern unique is its intent? The intent of a pattern is the problem solved or reason for using it. The intent of State pattern is to allow an object to alter its behavior when its internal state changes. The intent of the Strategy pattern is to encapsulate different algorithms or behaviors and make them interchangeable from the client’s perspective. The structure is the same for both solutions.

In addition, I recommend the Design Patterns course on The course is based on ‘Head First Design Patterns’ book, thus, I recommend reading the book first and watching the videos second. Like, read the chapter first, then watch the instructor on explain it.

Lastly, I recommend using IntelliJ ide. It has a feature that shows the UML relationship of your classes. No eclipse plugin beats this feature. Trust me, I’ve tried them all. You will need the higher edition of IntelliJ which they provide for free for a couple years for college students and professors.

Also look into my previous blogs on design patterns. It is under ‘software development’ tab, under ‘software construction’. They are my notes based on the above mentioned books. It will help a lot too.

Also, if you are a Massachusetts resident, you can access at no additional cost, free. Go here to register for an e card:

Then, go here, find, enter your ID and password:

Also with a subscription for safari-books-online, they provide all the Head First series books.

After much time spent experimenting with so many books, these resources helped me the most. And I promise, it’s going to help you too and you’re going to love it.

Let me know in the comments below if this helps. Thanks!

How to start EMR on AWS



by Rick Morrow

Starting EMR on AWS


In this lab, you’ll use Amazon Web Services to set up a 3 node Elastic MapReduce (EMR) cluster which you can then use for any/all of the class exercises. NOTE: This lab just really covers how to set the cluster up. To manage costs, you must shut down the cluster at the end of the class day. If you want to run the labs in the cluster, you’ll need to re-run these set up steps at the start of every day (should only take 5 mins once you get the hang of it).


Log into the EMR console at AWS. You will have needed to create an account first and for that you will need to provide:

  • A Credit Card
  • A valid email address

Use the instructions provided by AWS to start up your cluster. Use the following values in place of the AWS ones:

  • Cluster Name: Use your “sign-in” name (eg: “lab cluster” all lowercase)
  • Logging: Enable
  • S3 Folder: s3://aws-logs-YOUR-ACCT-YOUR-REGION/elasticmapreduce/
  • Launch Mode: Cluster
  • Vendor: Amazon
  • Release: emr-4.4.0 (or whatever is latest)
  • Applications: All applications (including Hive, Pig, Hue, Spark, etc)
  • Instance Type: xlarge
  • Number of instances: 3
  • EC2 keypair: you will need to create another keypair if you wish to log in
  • Permissions: default
  • EMR role: EMR_DefaultRole
  • EC2 instance profile: EMR_EC2_DefaultRole

After pressing “Create Cluster” button, your cluster will go into “Starting” mode (as per the following screenshot):


It can take up to 5-15 mins for the cluster to start (if you chose all applications, it will take up to 15). Might be a good time to get up & grab a coffee


Verify that your cluster has gone into “Waiting” mode (as per the screenshot below):


Continue ONLY when your screen looks like above “Waiting” status for cluster

Smoke test the cluster

In the EMR running a job is done with “steps”. Because of the special setup involved with EMR, you cannot easily just SSH into the master node and run “hadoop jar” commands. You have to run “steps”.

First, select “Steps / Add Step” from the EMR interface:


In the dialog that pops up, copy and paste the following into the appropriate fields (“Step Type: Custom Jar”) is selected by default:

Jar Location: s3://learn-hadoop/exercises/code/wordcount/WordCount.jar

Arguments: WordCountDriver s3n://learn-hadoop/exercises/data/shakespeare/ s3n://YOUR-BUCKET/NONEXISTENT-FOLDER/


  1. The “Jar Location” is a path to the Jarfile that has already been compiled for you
  2. In “Arguments”, the first Argument (WordCountDriver) is the name of the class that contains the main method where hadoop is to start processing
  3. The second argument (s3n://learn-hadoop/exercises/data/shakespeare/) is the path to the INPUT data file in S3 (this is a public data set accessible to everyone)
  4. The third argument (s3n://YOUR-BUCKET/NONEXISTENT-FOLDER/) is the OUTPUT path (bucket AND folder that will be created) in your own AWS account. EMR will drop the output to that directory when it’s done. MAKE ABSOLUTELY SURE YOU HAVE THE TRAILING “SLASH” IN THAT OUTPUT DIRECTORY.

All filled out, the “Steps” should look something like this:


Go ahead & click “Add”, then watch for the job to complete. “Job Status” will go from “Pending” to “Running” to “Completed” and interface will look like:


Keep hitting the “in page” refresh icon until the “Log files” populates (may take 3-5 minutes). Once you see “Log files”, you can select each, to see the actual logs, and when you now browse to OUTPUT-BUCKET/FOLDER, you’ll see several “part-r-0000x” files along with a “_SUCCESS” zero byte file (indicating the job ran OK). These are individual reducer outputs. You can click each to download and review the contents.

Terminate the cluster

You’re done with the “required” part of this lab. You may just choose “Terminate” for your cluster right now as per the screenshot below.


Optional Exercise: Enabling Web Connections

To get full use of the cluster, you’ll want to establish a “tunnel” (secure channel) to the web front-ends like HUE, Spark history, etc. click “Enable Web Connection”


This will pop a set of instructions to establish a tunnel. You’ll need to understand Putty (and how to convert the “spark-class.pem” key to a PPK which Putty can use) to enable on windows, but the process is much more simple for Mac/Linux


the tunnel command should look something like:

ssh -i ~/spark-class.pem –ND 8157 hadoop@[master-node-dns]


ssh -i ~/spark-class.pem –ND 8157

Note: The “8157” port is just an open, unused port… you can use any open, unused port for this purpose, but we know that 8157 is free.

Once the tunnel is established, you can access the following web GUIs as though they were local:

HUE interface: http://<your-master-dns>:8888/

Namenode UI: http://<your-master-dns>:50070/

Resource Manager UI: http://<your-master-dns>:8088/

Spark History UI: http://<your-master-dns>:18080/

So, for example, if your Master DNS is “”,your connection to HUE would be

If you like, you can play with the HUE interface, and explore sections like Pig, File Browser, Sqoop, etc. Please note if you plan on running any of the following labs on the EMR cluster, you will need to run them as either “steps” (for standard MapReduce) or you will need to log into the MASTER node and run them from there (for Hive, Pig, Spark labs).

Again, you have the option of just using the HUE interface to submit jobs of various types.

At the very end of every day, please make 100% sure you terminate your clusters on AWS.



Using Spark in the Hadoop Ecosystem by Rich Morrow Published by Infinite Skills, 2016,