*ngFor=”let option of options”

I learned something (imagine that!) while working on an Angular 2 project for Epicodus. The issue required little bit of research (what doesn’t?), but I figured you might enjoy this tidbit later down the line:

*ngFor around a Select Box:

My project involved utilizing Firebase data, specifically an array of objects, which were instances of a Typescript class I called “Player,” and the first property of the Player object was “name.” Elsewhere in my web-app, I was able to list out the names of all players in the database by using <div *ngFor=”let player of players”> around <p> tags that displayed player data (i.e. {{player.name}}).

However, I also wanted to create a message board where players could write to each other. Instead of writing in their names, I thought it’d be cooler if they could choose their name from a drop-down that lists all current players in the database. When I tried to place my handy <div *ngFor=”let player of players”> inbetween the <select> tag and the first <option value=”{{player.name}}”>{{player.name}}</option> tag… I got one empty option… the drop down was there, but it was blank.

I have since discovered that HTML5 will not allow any <div>s inside of the <select> tags. Instead, I had to put my *ngFor within the opening <option> tag, and then everything turned out great!

Huzzah!

import { ApologyComponent } from ‘./apology.component’;

Dear Reader,

My apologies for the absence of content. I’ve been preoccupied with learning a few new JavaScript frameworks, furthering my understanding of MVCs, and — last but not least — officiating my sister’s wedding. It’s been a hectic month or so.

While I don’t have a ton ready to share at this moment, I did have a realization I wanted to dispense… while working on JS projects in Angular 2 and moving away from PHP, I’ve had to reorient my understanding of MVC architecture and the roles of a controller.

In PHP, it was obvious that our router (app.php) was the C of our MVC, controlling all routes and the flow of basically all information. One of the primary differences with angular.js, outside of it being a client-side application instead of server-side, has been the Model-View-Controller layout… since angular.js (much like ember.js) utilizes components instead of knighting the router file as the controller of information, angular’s router (app.routing.ts) plays a very different role. If someone were to ask you, “is our router the controller In angular?” I think you could make an argument both ways… it is and it isn’t, really. While it catalogs all the routes, it does not co-opt the flow information like a PHP based app’s router. 

This might not be relevant to you, but once it is, it may help you understand how MVC evolves depending on the architecture (and/or) language of your project.

function Juggle($career, $family, $self_care)

One of the more difficult things any of us have to do as adults is manage a multitude of responsibilities. Embarking on this new career path in web development has only highlighted how difficult that really is. 

At a younger age, it was easy to simply bury myself in work in order to achieve results, and I would get a lot done! “Wow, Max… How did you manage to do that on top of everything else in your life?” While I might have responded with a half-hearted “hard work,” truth is I wasn’t managing anything else in my life — I made work my life, and while that may have been an effective strategy for a single guy in his early 20s, life looks a little bit different now one decade later. I’m a father, a husband, and a student…

Of course, everyone has different responsibilities, different personalities, and that can make for a wide array of time-management strategies. You might be in a coding bootcamp part time or remotely while you work during the day.  You might have one or two side hustles that you’re juggling while you learn to code.  Maybe you’re responsible for caring for a baby, a elderly family member or friend while you try to debug your SQL statements..  Everyone’s got something, even if it’s just taking care of yourself physically and emotionally, and that can be difficult when you’re struggling to gain your footing in a new field.

It may not be the best strategy and it may not work for everyone, but I’ve found a few steps helpful to managing my time while I juggle learning code with fathering, husbanding, and personal caring.

  1. Determine what’s important to you, where you want to have spent your time at the end of the day. I don’t mean remembering to do chores like taking out the garbage, I mean tiny steps toward existential goals… Complete this sentence: “When I go to sleep tonight, I want to have spent time ________.”  For me the high priorities (outside of the 8-5pm bootcamp) are playing with my daughter, spending time with my wife, and accomplishing at least one tiny coding goal (it could be as small as get two automated tests to pass).
  2. Once you’ve defined those goals, map out the time in a calendar and set alerts on your phone and computer. Oftentimes, I won’t get up from my stupid laptop unless the laptop itself tells me to leave. Those alerts remind this forgetful blogger what’s important and to spend his time accordingly.
  3. Follow Through: It matters in my baseball swing and it matters in my life. Plans don’t mean anything if you don’t follow them.

My grandpa used to say, “a bad plan is better than no plan at all.” Always better to be hiking a trail than lost in the woods. I had a boss that used to tell me “plan your work, work your plan.” Easier said than done, but it resonates more and more for me as a I move through life. What about you? How do you manage your time effectively while learning to code?

php_error.log

Frustration. That’s the name of the game, right? That’s what we get paid for? …er, hope to get paid for?

Whether it’s a syntactically rebellious semi-colon in your MVC’s controller or a misnomer in your MySQL query, you might spend hours trying to find it. I certainly have.

But apparently, I didnt have to. In the past, I’d be working locally, setting up a local development environment with PHP directly from the terminal… that meant that all my errors would print directly to the DOM.  The last few weeks, I’ve been setting up an Apache server through MAMP, and Apache doesn’t print errors to the DOM.

I’ve been at a loss, digging through Code line by line… until now! You can get right to the problem by opening the error_php.log file. I’ve been using Atom as my text editor so I entered the following into the terminal command line, first to enter the right folder, then to open the log with my text editor (currently using Atom).

$ cd /Applications/MAMP/logs/

$ atom php_error.log

I know this post is incredibly specific, but I hope it helps should you find yourself stuck for hours on a PHP project utilizing MAMP.

function maximizeGitHub() { $codeoregon->attend(); }

I attended a Meetup last night, put on by Code Oregon Careers @ The Tech Academy here in Portland, that focused on empowering junior developers to improve their job search strategies by leveraging GitHub as a self-marketing tool. The event was led by Michael Allen, Outreach Director for The Tech Academy. He was extremely generous with his time and offered some really neat insights. For those of you unable to attend, here’s a brief recap of my notes.

GitHub Profile Info

Include a decent, professional picture of yourself smiling. If you’re reluctant to post a photo of yourself, know that a photo of your pet dog, Ollie, is better than the stock avatar that GitHub provides. It should be personalized at the very least.

  • Add your full name, so it appears above your username. Nothing wrong with having a weird username (e.g. maxobaxo), but you should also have your real full name there as well.
  • Include a location. This helps potential employers know you love in the same place where they’re hiring. If you’re about to move and look for a job in a new place, go ahead and list that soon-to-be-home place as your location.
  • Add your LinkedIn URL, github gives you a spot to add one URL address.

Featured Repositories

GitHub allows you to feature up to 6 specific repositories on your profile page, and you should take advantage of that; here’s where I found Michael’s guidance really helpful and unique. Instead of using those 4-6 featured repo slots to highlight your best repos, create 4 new repos with README files that point the reader to specific projects for specific reasons. I’ll explain in a little bit more detail below, but feel free to check out Michael Allen’s GitHub profile as an example.

Screenshot of Michael Allen's GitHub Profile

Create the following four repos that will contain only a README file. In each of those README files add descriptions of your work and links to respective project repos. The whole idea of these README files is to curate your content for potential employers — so make sure to document each project really well and make them easy to navigate (e.g. a link back to your main README in all project READMEs). You should basically structure each of these READMEs to include an objective (your target accomplishment), the steps you took to build it (overview of how you accomplished it… high-level, please), and the result.

  • Portfolio-for-(Your_Name_Here)
  • Projects in Progress
  • Course-Work-Epicodus
  • (GitHub_username).github.io

Portfolio: Here is where your README should discuss and link to all of your best work, personal and/or team projects you’ve done, hackathon work, volunteer work, etc.

In Progress: Here you can do the same as your portfolio but for works in Progress, it helps provide the caveat that these projects are far from perfect, but they reflect what you’re currently focused on.

Coursework: Now do the same thing, but for projects you’ve created in Bootcamp or online tutorials or whatever. The idea is it’s from an educational environment, to show you’re always learning.

GitHub.io: And again but these are specifically projects being displayed at your github.io. For more info on how to use this: GitHub Pages.

He gave us examples of other profiles to checkout that may not follow these guidelines to a tee, but will be helpful nonetheless: Sylvia Maguina / Jerry Wardlow

If ($clear_workflow) { echo “awesome” } else { echo “WTF_FML” }

This week we’ve been learning how to manage databases using MySQL within our PHP-based Silex Web Apps. It’s a lot to juggle simultaneously in my brain, both syntactically and conceptually… but I’m hanging in there, largely thanks to this one webpage on Epicodus‘s curriculum via learnhowtoprogram.com.
Thankfully, they provide a summary of the basic workflow of using MySQL in a PHP Silex web app, in step by step format…. HERE.
I strongly recommend that anyone using all of these tools (TwigSilexPHPUnit) to check out this workflow summary.

Push it real good.

Today at Epicodus, my pair and I spent the better half of the day building a web app that creates and maintains a store inventory using PHP databases and silex. After creating automated tests, failing them, passing them, and committing (practicing our Red, Green, Refactor workflow), one of the intro students accidentally trips a power cord under the shared table, and four computers lose power instantaneously (ours included).

The computers at Epicodus are programmed to delete all files when they shut down. While we all had been diligently committing our changes to the project, none of us had pushed our updated code to GitHub that day. Not a single one of us. We had to start from scratch… It’d be one thing if this were a college essay whose main arguments I could retype relatively quickly, but we had stumbled through a multitude of errors and missteps all morning, and a second pass at the same exercise would not necessarily come easily.

Nevertheless, I decided that the poor, poor intro student who tripped the wire, was actually an angel, sent to teach us that pushing your code to GitHub often would be wise… repeat after me, “never again will I lose an entire project in an instant. Never again will I risk a devastating loss of progress. Never again. Moving forward, I vow to push, to GitHub. I vow to push it real good.”

if ($sleep < 5) { $sleep++; return $sleep }

I’m finding the urge to stay up late, working on a problem or further exploring a concept, far more enticing than I did prior to coding.

I’m also finding that when I do stay up later, the work I do is far less productive or substantive, and I’m that much less alert and clear-headed the next day thanks to fewer hours of sleep. The challenge seems to be finding the right balance between pushing myself to always be learning, while also giving my mind and body the rest it needs to remain teachable.

Last night, I stayed up trying to figure out why my silex web app wasn’t working, cross-referencing the naming conventions in my database with those in my PHP with those in HTML Twig templates… alas, I found nothing; my brain had largely closed up shop for the night despite my attempts to force a few light bulbs, all while periodically nodding off.

I’m sure my line of thinking on self-care likely goes against the common practices of hardcore, balls-to-the-wall coders who pride themselves on accomplishing highly-caffeinated, 48-hour debugging marathons like it ain’t no thang.  I also imagine that there are many that have successfully launched from a bootcamp into a new development career who credit their success to those sleepless nights of perseverance and stubborn tenacity.  While I appreciate that throwing self-care out the window might work wonders for some, I remain stubbornly committed to taking care of myself for the benefit of my code

Note to self: When you’re tired, GO TO SLEEP…. Your code (and your brain) will thank you tomorrow.

$ mkdir hello-world

Hi, my name is Max. I am a new dad, former salesman, and budding web developer, currently residing in Portland, Oregon.

 

After spending nearly a decade building a sales career, largely by accident, I decided to make a sharp career pivot into web development.  While I found many aspects of my experience in sales rewarding, particularly the long-term relationships, the day-to-day grind of exceeding quotas and cold-calling slowly but surely provoked my desire to pursue a more rewarding career path.  Additionally, my wife and I welcomed our first child into the world last October, which put things in perspective…

 

Over the years, I had dabbled in free/online coding tutorials, and really enjoyed myself.  That said, coding was a hobby at best, and I had major doubts about trying to transform it into a lucrative career; would I like it enough to make it my job… would I even be any good at it??  I committed myself to Hack Reactor‘s free/online Bootcamp Prep to get a better feel for my interest and abilities in web development, and I was pleased to discover that I was savvier than I thought!  Not only that, I really loved it.

 

In May of this year, with just a few months of fatherhood under my belt, I left sales in my rear-view mirror, determined to build myself a new career in web development… no matter what it took.  I enrolled in the PHP/React track at Epicodus, a Portland-based coding bootcamp, and after nearly six weeks, I’m pleased to say that I couldn’t be happier.  This was absolutely the right decision for me and my professional future.

 

Needless to say, I’m still basking in the daunting glow of uncertainty… The statistics and reported numbers on coding bootcamp graduates finding gainable employment quickly and/or easily upon program completion are less than encouraging.  While the demand for talented professionals with coding abilities is high, I’m aware that a bootcamp certificate is no guarantee of job placement.

 

Nevertheless, I am determined to move forward with positivity, courage, and an unceasing openness to learn.  By sharing my experience in and around this new life/career transition, I hope to encourage and support others who are (considering) taking like-minded action in their own lives.  When all is said and done, life’s too short to avoid taking risks like this one. I’m excited for what comes next, and I’m eager to embrace every challenge as an opportunity.