Hello World!

We’re a bunch of recent graduates of a Web Development Boot Camp in New York City. We come from all different backgrounds: electrical engineering, television, environmental science, etc.

We embark on a journey to improve ourselves in life, but most importantly, in code and technology. We hope that you will watch us grow into talented and experienced programmers and that you’ll share your own input along the way.

In this blog, we will talk about technologies; new, old, emerging, ones we’ve tried and ones we are curious about. We’ll also talk about our experiences as we start our careers in web development.

With this, we make our initial commit.

Advertisements

Embrace Being Uncomfortable

“Without a struggle, there can be no progress.” Frederick Douglass

So it has been about a month of writing cover letters, tuning up projects, creating new projects, learning new skills, going to meet-ups, and of course applying to jobs. There is a level of uncertainty entering a new industry with new skills and with high hopes.

We all have been working hard to create something that we can be proud and want to show off. However, what we must embrace is that most of the best applications have come from place of discomfort where someone questions the norms. The need to problem solve and create better ways to accomplish your goals is the essence of web development. Being uncomfortable has to become our norm so we can continue to improve upon our projects and ourselves.

For myself, I often get lost in the process. I lose track of time accomplishing my goals to get that high feeling of finding a solution to a problem. It is what drives me to continue to push myself to accomplish what I didn’t think I could six months ago.

So here is to the next chapter in our lives and pushing the limits of being uncomfortable!

What is Big ‘O’ Notation? Why should you care?

If you are just beginning your journey into the magical world of code, chances are you have never heard of the term “Big O Notation”. Maybe you have heard of it but thought you needed a computer science degree to understand it. Well, I’m here to show you that it’s not that scary after all!

I’m not scared! C’mon tell me what it is!

Well alright then, since you are so pushy I’ll assume you already know a programming language. For this post, I will use JavaScript.

Big O Notation is simply used to measure how well a programming algorithm scales as the amount of data involved increases. Big O Notation is represented in this format: O(1)

Where the ‘O’ symbolizes that we are talking about Big O Notation and the ‘1’ represents the scaling factor of the algorithm. I know that seems vague for now but just stick with me it should clear up as you see some examples.

Let’s start with the same example I gave above. O(1).

Say I need a function that adds 10 to any number given as an argument.

o1_snip

This function has an O factor of O(1) because no matter how large the input becomes the program will run in the same amount of time. Simple right?

Do you want more? Well alright champ, since you are so smart O(n²) is next!

Now say I have an array of Google stock prices (googleStocksToday) where the index of each element is the hours past 9:00AM and the last element represents 4:00PM.

google_example

I need a function that will return the highest profit possible during that day of trading.

google_stocks_on2

This function has an O factor of O(n²). This means that this algorithm has to take n² steps to completely run (where n is equal to the size of googleStocksToday). If you look back at the code, it’s not too hard to see where we get the n². Each time the outer loop runs the inner group iterates through the entire array. In this case, since the stock market is open for eight hours so our O factor works out to be 8² =  64. Hm, sixty-four steps seem manageable for today’s computers but, what if we wanted to keep track of Google prices every minute? Let’s do the math. Our new array will have 480 elements, so our new O factor will be 480² = 230,400. Yuck! Generally, if your goal is to write efficient code, you want to avoid O(n²) when possible.

Do you think we can improve the O factor?

Of course, we can!

The next best O factor we can aim for is O(n). Hm, is there some way we can solve this with just one iteration of the array? Let’s give it a try!

google_on_code

Can you see why this algorithm has a factor of O(n)? Yes, that is right! This function only has to loop the array once to find our answer. If we look back at our previous test, we can see how many steps we are saving.

Array in hours:

O(n²) = 64 vs O(n) = 8

Array in minutes:

O(n²) = 230,400 vs O(n) = 430

Jolly optimization!

There are others I haven’t covered (O(log n) and O(2­^n)) but I don’t want to ramble and I’m sure your curiosity will lead you to the answer. If you like the way I break it down, let me know in the comments and I will be happy to make another post!

Why should I care? I got the solution anyway!

Good question! While you did get a solution, it does not mean it is always the most efficient one. With mobile devices sweeping the market, writing efficient code is becoming the industry standard. You also become a much more attractive developer if you write efficient code since you can save your company the cost of maintaining more servers than they have to. So why not start now?! Look back at your own code and see if you can determine the O factor! Then take it to the next level and improve!

 

 

 

Back to coding

I am terribly embarrassed to admit this, but I have not written a single line of code in over a month (I know, the horror…). As much as I’ve tried, it proved very difficult to sit down and focus on the things one needs to focus on when in the process of career transitioning, while also being in the process of up rooting one’s life (for the second time in less than 12 months).

I don’t mean to sound bitter, I’m not, this past month has been truly incredible. Between traveling, visiting my family for the first time this year and moving from Philadelphia to Miami, this month has been emotional and full of excitements.

Although I’ve only just arrived in Miami and have not yet settled in (tbh, I feel like I’m stuck inside GTA vice city… just a first impression, you know ;)), it is definitely time to get back in the game!

4dsv0jh

I started with deploying my latest project: “PantryChef” – a recipe search that finds only the recipes you can cook immediately,  using the ingredients you already have in your house. Before deploying it to heroku I needed to make sure I upload the content of my database (specifically all the recipes I have on there). Luckily, a simple solution was available: seed_dump.

seed_dump is a Rails plugin that takes all the rows in your database tables and creates a seed file automatically. The process was quick and easy and now my seed file looks like this:

lzux9v8ek4(and it goes on, and on, and on…)

So when I:

$ heroku run rake db:seed

my newly created seed file is run!
Pretty simple ha? well… there were obviously some complications, mostly with seeding join tables, but I quickly realized I don’t need them in my seed file in the first place, all I really wanted were the recipes. So… You are more than welcome to check it out: pantry-chef.herokuapp.com  :). In the future I hope to add more recipes and enrich the UX, but as a proof of concept I’m very happy with how it turned out.

Notes from Get to Google’s First Page (Intro to SEO)

On Monday, jpol0191 and I got to sit in on an SEO class presented by Edward Sturm. He started off the lesson by asking the audience if they knew what SEO was or if anyone had considered SEO “black magic”. I was partially in the latter half, given my frustration of getting my first blog featured with relevant links on a Google search of “kimpenguin”.

The class was informative and generous in resources that would help us promote our site on a Google Search. Let’s go through the key points of the class:

What is SEO?

SEO is short for Search Engine Optimization. If you own a website, SEO is important in helping your audience find you on the web. Your website’s ranking on a Google search is reliant on your site’s makeup, authority, and relevance. Learn more.

What is authority?

When Google scans your site, it looks for trustworthiness and authority. This includes quite a few things:

  • How long your site has been live
  • Direct traffic to your site
  • Click through rate – whether or not it fulfilled the user’s query
  • Bounce rate/pogo sticking – users sticking around or leaving to continue their search
  • Backlinks – links on other sites that reference to you

Useful tools:

  • Alexa Chrome extension – shows you the number of backlinks a site contains
  • Mozbar extension – shows you page and domain authority

 

What is relevance?

Relevance is broken down into two categories: Onsite and Offsite.

Onsite

Onsite is dependent on the structure of your site with relevant keywords that the Google Search Engine can crawl through.

Keywords are strings that you can search, and there are two different kinds:

  • Head – broad, exploratory
  • Long Tail – more specific, often yielding less traffic with the intent of making the user sign up or purchase something

Keywords should be placed in your site’s <title> or <meta> tags and it is important to bold and italicize keywords for semantic detection. Basically, keywords help Google determine what kind of site you have so that it can deliver the best results to the user.

Useful tools:

NAP

You should also include NAP Citations! NAP citations fall under both onsite and offsite SEO. NAP is short for Name, Address, Phone. When you include this information in this site, make sure that you maintain the information throughout other sites like Google My Business, Yelp, Bing, etc. There’s nothing more off-putting than inconsistent information.

Poor UX = high bounce rate

Keep in mind that the user-friendliness of your site is very important. Things to be conscious of:

  • Poor mobile optimization
  • Slow loading speed

Useful tools:

SEO Problems

If you’ve struggled with SEO, there are likely a few things that you haven’t taken into account. One of those things is duplicate content.

Duplicate content can be interpreted as a Blackhat threat and therefore deemed untrustworthy by Google. This diminishes your site’s ranking in a search which is not ideal. A remedy for WordPress web developers is the plugin, YOAST SEO.

The other remedy is to utilize Fetch as Google in the Google Search Console. If you have information hidden with JavaScript features, the Fetch as Google functionality will make sure that the hidden content will be revealed to the Google crawler. Handy indeed!

Offsite

If you don’t have offsite SEO, your onsite SEO is irrelevant. Offsite SEO is when an external site references your site. It can be invaluable in increasing visibility and your site’s overall ranking in a Google search. Reach out to journalists looking for references and information and make sure your site is structured properly.

Useful tools:

  • HARO
    • send a journalist 5-8 sentences
    • make it a quick response
    • give them a link, number, and a headshot
  • SEMRUSH
    • Copy and paste your URL. This will populate a listing of journalists looking into your industry.
  • Google Search Console
    • Submit your sitemap
    • Make sure that your “submitted” is as close to your “indexed”
    • You can manually submit new pages as they’re produced

Hopefully these SEO notes I took in Edward Sturm’s class will help improve your website’s visibility. It certainly opened my eyes to the plethora of tools that can be used to improve my site’s feature rate on the first page and the planning needed to ensure my site’s are up to par.

Gotta Catch ‘Em All: A discussion of Pokemon Go

There’s no denying it: Pokemon Go is just crushing it! In just these past few weeks, the game has increased Nintendo’s worth, attracted customers to local businesses, and gotten lazy children on their feet! It’s gotten some negative publicity too with increased accidents and server outages, but the fact that this app has become a viral craze in such a short period of time is really quite amazing.

matthewsolarski brought up some great questions as I was catching pokemon a couple days after the game’s release. What makes this game so great? How does it work? How are pokemon showing up as you walk?

Let’s see if we can answer a few of these.

Why is the game great?
1. Childhood
The game draws on nostalgia. If you were a kid growing up in the 90s and early 2000s, chances are that you grew up watching Pokemon. It was a light-hearted anime about a young boy on a journey to become a pokemon master. He would go from town-to-town with his pokemon friends and challenge gyms to earn badges. (You can read more here)

Pokemon Go allows its users to embark on that same journey to pokemon masterhood.

2. Easy to use
The game is simple to navigate and visually easy on the eyes. The goal of the game is up to the user. The player can do a number of things like catch pokemon to build their pokedex (or handheld encyclopedia for pokemon), evolve pokemon with stardust to unlock different stages of pokemon, battle gym leaders to earn experience points and increase their team’s strength, etc…

3. Gets people moving
The game is a fun way to get children and adults on their feet. Because the game highlights the number of steps needed to capture a specific pokemon in the area, it encourages people to move.

How does it work?
Pokemon Go draws heavily on Ingress, an augmented-reality MMOG in which players must capture portals to control a mysterious energy before it controls the population. In Ingress’s early stages, players helped to determine portals of cultural importance which have now been used as pokestops in Pokemon Go. Pokestops are “rest areas”, if you will, where the user can refill on items like pokeballs, potions, and treats.

The pokemon that show up on a player’s location are based on the location’s geographic makeup in Google Earth. For example, if a player is by a water body, water-type pokemon appear more frequently. The number of pokemon seen nearby is unclear, but most likely due to the popularity of the location.

The game is supported by a NoSQL database and was built using Unity. As the game looks to add more functionality, I’ll be updating its makeup.

What are its flaws?
Pokemon Go is no-where near a perfect application. There are a number of server outbreaks and most recently, potential hacker threats. The server outages are most likely due to the game’s popularity and the server’s inability to keep up with demand.

While the game is still gaining momentum, without a social aspect, it will eventually dwindle. As it is now, players only have the ability to battle their pokemon at gyms, but not between friends. Additionally, players are unable to trade their pokemon, leaving them with the dilemma of which pokemon to transfer forever. Niantic is working on these functions, but time is of the essence!