Matt Trifilo JavaScript is eating the world.

First Blog Post!

I thought I'd christen this shiny new blog with a reflection of how I got to this point. This post will be long (okay, it's a novel), but this will be a good chance for me to reflect on the past few years that have been a roller coaster to say the least.

Changing careers full stop can be a terrifying undertaking, but it can be the most liberating thing you can do with your life when the path you're on turns into a canyon getting deeper and narrower all the time.

If something isn't working, just let it go.

The many costs of drawing out a career that is hollow and unfulfilling, plus the lost returns of what's waiting for you on the other side, far outweigh the costs of leaving the sinking ship behind. There's a massive, vibrant, fragile world out there waiting to be explored and helped, and it's happy to have you.

The sunk costs of all the time, money, training, and experience that go into a skilled occupation you're leaving behind are hard to just brush off. Ego and insecurity pressure you into just staying the course until a better oppurtunity falls into your lap, but that's not how life works. You'll more likely find yourself allowing external influences to shape how you live your life and spend your time until you don't even know what you're doing or why anymore. That is the opposite of freedom.

If you don't take command of your life and your time, someone else will.

Too many people spend most of their lives taking the easy, comfortable opportunities just because they're right there in front of them--not because those opportunities are what they actually want or what's best for them (or more importantly, society). Boredom is the death of creativity.

How do you shape your life into what you want it to be? How do you start? It's actually pretty simple.

Just start. Today. Right now.

If you put it off until tomorrow, those tomorrows have a way of adding up to years before you know what happened.

I've been there.

It took me a long time summon the courage to leave behind a career I'd been working towards since high school, but it's been in favor of something much larger and far more exciting than I ever imagined. The ecosystem of the Web has been going through a renaissance period for a decade, and it's still heating up. We've only seen the beginning. As new technologies continue to be developed and released at a quickening pace, nearly unimaginable new products and apps will not only be possible, but eventually be the norm.

Web Assembly alone is poised to rock the foundations of every web browser in just a few years. It will give JavaScript the shot of adrenaline it's been missing by allowing developers to access low-level operations (threads!, parallel processing pipelines!, hype!) by allowing developers to import performance-critical code as Web Assembly modules the same way they'd import a normal JavaScript module. Web Assembly will also offer a compile target for many other languages, allowing them to finally run on the web platform at the binary level. Mozilla has already built a working toolchain called Binaryen for compiling C and C++ to Web Assembly, just don't expect it to work in your browser anytime soon. Using JavaScript, we'll probably have to use a different language to get down and dirty with low-level primitives before compiling to Web Assembly that could be imported into a JavaScript program. We'll see what happens as the standard matures. Who knows? A new JavaScript flavored language similar to CoffeeScript or Elm may emerge specifically for web developers writing semantic low-level operations optimized for Web Assembly compilation, which could then be imported into a normal ES2015(ES2016?!) program. I'm still trying to wrap my head around how all this will work, but we'll soon be able to run much more powerful software in the browser than ever before.

On the VR front, the Oculus Rift hasn't even hit the market yet for consumers, but it's already been helping to treat solders with PTSD.

For the past year and a half, I've been learning to code.

Why?

Let's take a step back.

For most of my life, I've been immersed in music and computers. Both have been an ocean of inspiration for me in more ways than I'm conscious of. Soon after I hooked up my family's first Gateway computer in middle school, I was playing Starcraft online with other human beings from all over the world. In real time. 4v4 maps against people scattered over thousands of miles of planet. In. Real. Time. Back in 2000, that was just too crazy for words. But even more amazing than that, to me at least, was being able to download songs directly from AOL's search engine. Any song. By any artist. Holy shit! Once AOL took that feature down, it didn't take me long to find Napster.

napster

From there, I knew the world was about to change very quickly, and forever.

Fast forward a few years

In high school, I shot a number of film projects cut on Sony Vegas for a media class, and hacked together some ugly early-aughts era websites in Dreamweaver for the band department and my Cisco Networking teacher who had a side business. That project alone paid over 10x more per hour than what I'd end up making at my first part-time job, but I never thought of web development as a career option. "Web Development" wasn't even a job title at the time.

Ahh... Geocities C'mon, admit it. If you're an internet-savvy Millennial, you built a Geocities page for the ages. GIF's!

CSS was quickly spreading all over the web and ES3 JavaScript was being experimented with, but I was clueless. I ended up taking the one "web design" class the school offered which unsurprisingly, only taught HTML. We learned to change text colors and fonts, and build tables, but CSS wasn't even mentioned. Some classmates and I spent most of that class playing pool and chess against each other on Yahoo Games. Each simple in-class assignment took about 15 minutes and we found out that we could bypass the school's internet censor by opening IE's help page and getting at the Internet Options from there to enter a proxy server address. I would love to know what hacks high school kids are using these days to get around network security. (EDIT: It's even easier in 2016.)

I never really thought about it, but I knew deep down that building HTML layouts was not how I wanted to spend my career. Interestingly, John Morgridge, former CEO of Cisco, helped Wauwatosa East set up a CCNA certification class as a donation to his alma-mater. I took it for a semester to try it out. We learned about networking infrastructure and protocols as well as how to build computers and network them. We networked our graveyard of used computer parts in the lab into a huge Counter Strike LAN. We learned a lot about how the Internet works, but I didn't enjoy the dry CCNA modules or the idea of maintaining data centers for a living.

The Incredible Jazz Guitar

Music became more interesting. I played jazz guitar for every level of the school's jazz ensembles and I had the pleasure of performing Four on Six by Wes Montgomery with Jazz I at a few recitals. Four on Six was the greatest musical challenge I ever took on and I'm grateful to Mr. Engl for offering me the chance to perform it. Even though most of it is improvised, it still took many months of practice.

Soon enough, it came time at 17 to choose a career-for-life and plan for college.

No pressure.

I looked at a number of schools, but Columbia College Chicago offered the best chance to pursue career that I could pour my passions and work ethic into and be successful. I didn't have the grades to get into an Ivy League school, and I had no clue what I would major in at a UW-system school. I never even considered Computer Science at the time. C++ scared the hell out of me, and my only impression of professional programmers came from The Matrix and Office Space. A very childish generalization, but I was only a teenager.

I didn't want to waste my one chance at college on a generic degree that I may never use. Columbia was very inexpensive compared to the other private colleges I looked at, and they offered majors in audio, music, and film with professors who were well-respected and still very active in their fields. Many of the gen-ed classes were even taught by adjuncts from Loyola, and DuPaul at a much lower cost than either school. Plus, I love Chicago. It was an easy choice. There were plenty of production jobs all over the city, and Columbia has a great network of alumni doing amazing things in Chicago, LA, and New York.

By sophomore year, I declared a major in Audio Arts & Acoustics. I eventually met a group of very talented filmmakers who started their own production company, Rubbish LLC, while they were still in school. They were in pre-production for their next short after a number of others that were some of the best I'd seen by any film majors at Columbia, and they needed a sound designer. My home studio was getting pretty formidable, so I jumped at the chance to mix some films. Fish Food ended turning out pretty well for most of the crew being very green. For many of their shorts and commercial projects, I handled most aspects of the audio mixing, sound design, audio post-production, and even some production recording. We had a lot of fun, and some of their films went on to win some awards at the Chicago International Film Festival. My freelancing reel was looking formidable long before graduation, and I was very optimistic. Except for the elephant in the room...

Down, down, down she goes...

You could downhill ski on that decending channel.

The repeal of the Glass-Steagall act finally caught up to us in a big way in 2008. Recessions are inevitable, but this one was different. Suddenly, post-production studios all over Chicago closed up shop as their biggest ad agency clients went bankrupt. Eventually, my hours were cut almost in half at my job at Starbucks, compounded by my rent being raised $100 a month unexpectedly. 2010 was not an ideal year to finish college. Soon after graduation, I moved back home to Wisconsin.

I found a new job at a coffee shop in a small town called Oconomowoc, and serendipitously met a filmmaker working on his first feature film with a director who was financing the film himself. He was all in. Long story short, I somehow patched together a decent-sounding mix for my first feature film project from some terrible quality set recordings and it ended up passing QC for the one company you need the green light from to be approved for all the major streaming services like Netflix, Hulu, and cable On-Demand--all from my custom-built PC driving Nuendo, a UR824, and Yamaha reference monitors. Something like that would have been nearly impossible without help from a post-production house (plus more than a few grand) just five years prior.

Thanks to countless hours of hard work and hustle by director Andy Gillies and many others, Oconomowoc the Film ended up getting a modest distribution deal with Cable On-Demand nationwide, along with limited screenings across the USA from LA to New York. The New York Times even reviewed it. It got torn to shreds, but that didn't matter. None of us imagined it would ever get enough attention for the New York Times to actually send a film critic to a screening in Brooklyn to review the film and publish it. That was quite a feat. Many hundreds of independent films are released every year, but comparatively few are even considered for reviews by major newspapers. It helped a lot that Oconomowoc was screening in so many cities for at least a week at a time, New York included, but that doesn't guarantee that any papers will write it up with so many other films screening at any given time. We all knew the critics would probably pan it hard. Many important scenes had to be cut prior to production since their wasn't enough time, crew, money, or viable locations to shoot the entire script faithfully, so everyone had to make some tough sacrifices to make the film the best it could possibly be with very limited resources and time.

Worst case scenario, at least everyone would be able to prove their salt by producing a feature film to completion with no studio or investor support. Investors would feel more confident in financing Andy's next film knowing what he could produce on a shoe-string budget and a skeleton crew. The fact that Oconomowoc got as far as it did despite being made with a two to three person production crew, a Cannon 5D, and my scrappy audio post-production rig still inspires me to no end. The actors and actresses deserve a lot of the credit for pulling that off as well. They put more soul into their characters than a lot of big budget films I've seen.

With enough grit, drive, and inspiration, a small group of deleriously hopeful people can accomplish huge things in life. That was an important lesson.

Before Oconomowoc the Film, I also performed sound design and post-production for one of my favorite freelance commercial projects yet with Rubbish to help Intel promote their solid-state hard drives.

When I was an Elephant | Intel SSD (Branded Film) from STRANGE LOOP on Vimeo.

Everything came together for that one. We needed music and thankfully, a friend's band A Lull were able to license their music affordably through their label and it worked out incredibly well. The film followed personified memories (files) within a corrupted hard drive rushing to escape to a Mac before their damaged hard drive fried itself. I was able to mess around with bit-crushing effects and a few other audio destruction plugins I rarely get the chance to play with. The final cut was haunting and beautiful. It got a very mixed response on Youtube, but it was more of an art film than a commercial spot. Some commenters were a bit freaked out and couldn't understand what the film had to do with solid-state hard drives, and plus "ASUS's SSDS are SOO much better than Intel's brah!!1" I don't know what Intel thought of the project, but they were trying all sorts of out-of-the-box marketing trials at the time and Youtube is pretty low risk.

Hey Chicago, Whadaya Say?

In 2013, I finally moved back to Chicago with some friends in beautiful Edgewater. I continued to freelance in post-production audio while working at a neighborhood specialty coffee shop called Metropolis. We make some pretty great coffee. Rubbish later disbanded and became Strange Loop which is continuing to grow quickly and do some very exciting things in Chicago's film and production community and beyond. Check them out if you're looking for some of Chicago's most talented filmmakers to produce your next commercial or passion project. I freelanced on many spots and another feature that was initally shot in the 90's but was finally bootstrapped through Kickstarter for a release, but around this time I started to burn out.

By 2014, I knew my work process and tools inside-out, backwards. Whether I was handed a 30-second YouTube spot, or a 90-minute feature film, I had an efficient workflow for it. The process and tools needed to take in raw production recordings with video and put out a polished, professional mix rarely changed. The only variables were the amount of audio sources, their quality, and the specific requirements of the project and director. I was fortunate to work with professionals who consistently delivered high-quality set recordings, freeing me up to focus on making the project sound as clear and beautiful as possible, rather than cleaning up noisy or distorted sound to make it less noticeable. Nothing can remove clipping/distortion (the waveforms themselves are corrupted), and noise filters color the dialog frequencies terribly as they nuke the offending noise frequencies. As the recording industry adage goes, "Garbage in, garbage out."

I had reached a bottleneck. With every new project I took on, I found myself making fewer and fewer creative decisions, because I had made them before on other projects. Creating a soundscape for a town is exciting at first, but after the fourth or fifth time, you know what works and what the shot and the story need, so you act from experience, not creative inspiration. There's nothing wrong with that, but if I go too long without being challenged with something new and hard, I lose passion.

Don't get me wrong, having the role of Supervising Sound Editor gives you a lot of creative freedom to shape the emotional core of a film and to help present the story in ways that a camera alone can't capture. In recent years, Pro Tools and Nuendo have allowed mixers to use surround sound in ways that used to be prohibitively expensive and time consuming to even attempt with analog tape. The best directors have taken notice. Many recent films have even put the audio credits near the top of the role which is a huge step forward for the film industry. Many directors underestimate just how essential having great sound is for any film, but the directors who make the films worth seeing devote a lot of their time and resources into making sure the sound transports the audience to another reality. A recent example is Star Wars The Force Awakens. The sound was brilliantly done, and I bet J. J. Abrams personally made sure the sound department got the credit they deserved by putting their names near the top of the scroll. The Martian will be some serious competition for the Oscars for best sound editing and best mixing, but I'm willing to bet Star Wars will be on the short-list this year.

Besides new technologies and plugins replacing analog gear, the process itself rarely changes. I realized that even if I moved to LA where most of the studio jobs are centered, I'd be doing the exact same mechanical tasks with more limited scope and very fast turnarounds. Mixing for reality TV is grueling and that's what most of the non-union job ads were asking for. I dreaded the idea of spending 60 hours a week in a studio cleaning up dialog for Here Comes Honey Boo Boo without health insurance, while desperately hustling for a better job doing the same repetitive tasks for better films and shows against thousands of other engineers, many with higher-profile credits and personal connections with producers, all competing for jobs which are rarely advertised. You have to pay your dues and prove yourself for years (plus get in with the right influencers, and have a lot of luck to boot) to get calls for the passion-filled, life-fulfilling projects in Los Angeles. The vast majority of audio post-production projects I'd devote countless of hours to would be the sort of films I'd never want to see even for free as a moviegoer. That's no way to spend the most productive years of your life. I realized I'd never be happy doing post-production full-time.

I'm very thankful to the many filmmakers and friends who have given me incredible opportunities over the years, but the audio industry is very limiting in a lot of ways. There's no way to work on personal projects without shooting your own film, which would not allow much time to mix sound on top of that anyway. Being a sound editor, sound designer, or re-recording mixer leaves you dependent on others creating projects in order to do anything at all. I lived for the soulful, inspiring projects with directors who trusted me with creative decisions that would benefit the story in ways they couldn't accomplish alone, and who could push me beyond my perceived limits to produce the kind of soundscapes I could never build alone.

While freelancing, I learned a whole lot about project management, time management, negotiating terms respectfully but fairly with clients, explaining complex concepts to non-technical project members over e-mail, and interpreting vague notes or requirements from clients and asking the right questions to ensure everyone is on same page always. Productive communication is a cornerstone.

I've made a lot of mistakes over the years, but I've always used those small failures as opportunities to find the important lesson which is sometimes only obvious after you've stumbled. Over time, that adds up to a lot of knowledge.

Hello, World!

I started coding almost by accident. One day I was casually browsing Reddit and a post about Harvard's CS50 online courseware was getting a lot of hype. I took a look and ended up digging into the problem sets. Problem Set 0 lets you make a simple program with Scratch, but by PS1, your task is to build a command line C program that prints a Mario-style half pyramid based on a number that a user enters. I spent many hours trying to wrap my head around the nested for-loops needed to solve the problem. By the time I finally saw those hashes rise up in the command prompt and pass all of the unit tests, I was hooked.

For the first time in years, I was forced to find creative ways to solve problems that felt almost impossible when I began. The computer began to turn into a self-contained cosmos with its own set of rules and limitations, within which, anything is possible.

Instead of operating within one piece of software and conforming to it, you can create your own software and make the computer(s) conform to you.

I spent a few more weeks on CS50's courseware before I discovered Free Code Camp. That was a huge turning point.

Free Code Camp

By this time, I knew I wanted to learn how to program but CS50 was not going to cut it if I truly wanted a to be qualified for a job in software development. Enter Free Code Camp. I honestly can't remember where I found it, but its premise is simple. FCC is a free online coding bootcamp that offers a guided curriculum and vibrant community of peers for learning the skills needed to become employable as a Jr. Web Developer. Many bootcamps promise to turn you into an employable software developer after just three months of intensive practice. Boom! Just pay a few grand, work through the app projects with your peers and you're hired!

As it turns out, what many bootcamps are selling is a lot of snake oil.

FCC couldn't be more different. Quincy Larson offers no illusions that Free Code Camp will be a fast track to becoming a web developer that companies will compete over. It's drilled into campers early on that not only will the process be very, very hard, it will take hundreds of hours to get through each of the advanced sections. Guaranteed. It's very JavaScript heavy, offering many algorithm challenges, front end projects using CodePen, and advancing to building full-stack applications with Node.js, Express, MongoDB, and either Angular or React depending on the project.

Free Code Camp doesn't just teach you to use libraries and frameworks, the challenges are intended to get you thinking like a programmer.

You start with a series of hand-holding exercises to learn the basic syntax and best practices of HTML5, CSS3, JavaScript, and jQuery. After that, you're given projects to build and JavaScript algorithm challenges to solve. What libraries should you use? How should you go about it? It's all up to you. As long as you satisfy each user story, you can build any project any way you want. That's where it gets hard. For every bug that emerges, it's on you to figure out how to fix it--just like in the real world. The community at FCC is very helpful and you're encouraged to pair program, but the real learning comes from hitting brick wall after gaping chasm that you can't begin to know even how to approach at first, let alone solve. But soon as you break the problem apart into a step-by-step process, you can research whatever you need to solve the specific piece of the problem--whether it's converting a UNIX timestamp to a formatted date, or using ES2015 promises to keep callbacks under control.

Learning to search for very specific cases on Stack Overflow, and to Google issues in general is an important skill to learn in itself. By breaking problems apart, you can leverage the collective unconsciousness of the broader development community that has likely solved your specific problem hundreds of times over, with plenty of documentation about the best way to solve it for many situations. This also allows you to find gaps or murkiness in that knowledge that you can fill with your own answers on Stack Overflow, blog posts, and even open source software that will help hundreds of developers after you. This positive feedback loop has allowed software in general to get faster, smarter, and more useful for many products that we know take for granted. It's amazing to think of how much time and money humanity has saved as these technologies improve exponentially.

The goal within Free Code Camp is to complete each certification towards the Full-Stack certification which will allow you to be assigned to a real-world web development project for a non-profit organization. Not only do campers have a very well designed and defined curriculum to work though, they will have the privilege of building full-stack web applications for non-profit organizations which will help the work of thousands of people trying to do some real good all over the world.

This may seem like over-kill to get a junior web development job, but that's the point. At the end of the long journey through Free Code Camp's curriculum, campers will have enough project apps and real-world projects completed to represent enough experience to possibly skip the junior role entirely.

What's Next?

At this moment, I'm working through the last few advanced front end development projects to finish my Front End certification after a full year of working through FCC and learning JavaScript as thoroughly as I can. I still have a hell of lot to learn and practice. I've taken some breaks along the way to learn React and Webpack, and to build a site for a friend's personal training business, but my goal is to finish each certification in the coming months.

I hope to find a job as a front end developer as soon as I can while I continue working through Free Code Camp and learn how to build RESTful API's on the back end, full MEAN stack applications, and Isomorphic React applications with Flux or Dan Abramoth's Redux.

Many companies in Chicago use Ruby on Rails on the back end, so I plan on learning enough Ruby to be productive as well.

2016 is going to be an exciting year on many levels. Coding has given me the creative outlet I've needed for years, and it's only going to keep getting better. I'll never run out of new things to learn and experience, and the freedom of being able to take an idea and turn it into a real, tangible application is almost too exciting for words. As new technologies get launched, countless opportunities are going to emerge to build new, amazing products, solve hard problems, make people's lives easier, and more importantly, save their precious time on this Earth. As I get deeper into these technologies, things are only going to get harder before they get easier, but that's what makes the journey worthwhile.

I'll be sharing a lot of insights on this blog that I've gathered so far, mostly to document my own progress, but hopefully to inspire others who are taking on the hard, ever-changing task of programming bravely and passionately.