New Beginnings

A new beginning can inspire a fresh perspective. Many new beginnings can inspire many fresh perspectives. I’m grateful for the new epiphanies, lessons, and perspectives that I have received in the short amount of time since moving to San Francisco in June.

I realized that the past 5 years of my life has been a handful of ideologies stuck in a comfortable box. Actually, I’d say even longer than that; but for the sake of self awareness, I’ll keep it at 5 years.

I pledge to never get comfortable again. Comfort for me may be different than comfort for you. I don’t want to offend anyone with their idea of comfort and what they enjoy. However, for me, comfort is a road to stagnation. In order for me to thrive with happiness I need to consistently improve and discover. Comfort is counter-productive to those ideas; at least for me.

I’ve reset a lot of things in the past month:

I can’t say it enough: I’m so grateful that something clicked in my head to try new things.

I encourage you to step out of your box. Try a hard reset, try exploring new things, just explore for the sake of it. It’s human nature to discover, and it’s rewarding. You may surprise yourself at what you uncover.

I’ve discovered…

New Technology #

I love Ruby. I owe my professional success to Ruby. I started programming in 99’. However, I never really took it seriously until Ruby on Rails came along with version 0.9. Since then I’ve become an advocate of Ruby and Rails. I loved Ruby. Ruby treated me well, and I treated Ruby well.

Unfortunately when you stick to something for so long and get comfortable you miss out on new things. In this case, I started to fall behind as the years went on. Falling behind is a terrible concept to me. I live and breathe bleeding edge; bleeding edge is my passion. The Rails ecosystem used to be bleeding edge. In recent years it’s shifted from innovation to maturation. I know it does great things, and it solidifies ways to do great things, but it’s nothing paradigm shifting in terms of web-development. I crave new paradigms. I will point to the use of Rails, but only within its own paradigm that it excels at. A mature paradigm. An older way of doing things. Old isn’t bad, it’s just… insert what you’d describe running cars with combustion engines here. Old is good at what it does, but new has a chance of doing it better.

I started to fall out of love with programming in recent years. Again, this was because I got comfortable and used the same tools, but didn’t see any other way around it. This hurt me, because this is something I’ve put time into for over half of my life. I kept thinking “Could it really be the end of a passion?”

Over the years I heard the call of “Become a polyglot” from respectable veterans in the community. Yet those words fell on my silly deaf ears. I guess it was the wrong message for me, or maybe I had already given up on a love for programming. I learned something recently: It’s not the new languages that are fun, it’s the new paradigms of perspective that they show you that are fun. I did not realize this and it was a downfall of mine. This will not happen again.

Ruby is still great in my eyes, and so is Rails, but it’s now a tool in the toolkit. No longer am I Ruby zealot. It will serve it’s purpose when it’s needed.

I’ve found a whole new world of passion, and enjoyment in programming.

Javascript #

I’ve programmed in Javascript for many years. It was my first foray into programming next to PHP. Between DHTML, Action-script, and jQuery it’s been a tool in my box over the years. I never gave it the respect it deserved. In the past years, I’d look at Javascript in my projects and groan with disdain. I’d say to myself “Ugh, do I have to?”, and also “Why the heck is Javascript making a comeback? I did this 10 years ago…”

This has finally changed…

I learned how powerful it is to have a separation of concerns between the front-end logical layer of an application and the back-end. Yes, I’m pointing to you Ember, Angular, and similar. But that wasn’t enough to win me over. Ember and Angular are actually already old paradigms in internet-years. I started noticing these trends when Backbone was on the rise. It was cool, and I saw the purpose, but it didn’t always justify the effort. Now Ember and Angular are taking the stage, and improving upon the paradigm but it’s not the innovation I crave. It’s not the bleeding edge paradigm-shift; It’s good… but I wanted better.

I finally found something better.

A meteor falls from the sky and hits you for 9,000 damage. Loading please wait… #

Meteor changes everything. I’m in love with javascript now. It’s not the prettiest language, and some use CoffeeScript for a remedy. I am in a struggle between visual and purism in that camp. I appreciate aesthetics. CoffeeScript is pretty to me, just like Ruby, however I am also a purist, so I cannot commit to CoffeeScript. Luckily, for some reason, Javascript is growing a certain beauty to me in it’s own acquired ways.

Back to Meteor. It’s not like I didn’t hear of it when it was announced in 2011. You probably heard about it too but swatted it away just like I did. I investigated it, but there wasn’t much there. Justifiably so though, they had announced the project and stated there was a lot to do. It was an idea that needed implementation. Early 2012 is a long time ago for development. It’s easy to forget something. It’s also enough time to build something amazing.

At the time of this writing Meteor is on 0.8.2 and I haven’t felt this impressed from a framework since Ruby on Rails 0.9 in 2006ish. I am so impressed with Meteor. No, scratch that. I’m in love with Meteor.

You have to try it out to really understand why. It’s not clear when reading the documentation, at least it wasn’t for me. It’s clear when you’re using it. It is the most perfect framework for web-development I’ve seen thus far. It’s what web-development has been missing. It’s exactly the paradigm shift I’ve been craving.

It simplifies language. It simplifies architecture. It simplifies APIs by not having to use APIs. Meteor’s implementation is paradigm-shifting. Between Javascript, Node, DDP, Reactivity, Packages, and countless other things, you have a next-level framework to create with. The only other time I had this feeling was back with DHH’s Rails “whoops it worked demo in 06’.

Meteor is impressive and I implore you to investigate it.

Despite the love, I will not become comfortable. Meteor, you are part of my toolkit, and I will use you greatly, as long as you’re needed.

Objective C, Swift, and iOS #

I started learning native development earlier this year. I always strayed away from it. Why? Because I was a “web-developer.” If someone asked me how to build an iPhone app, I’d say “well, do you really need a native app? Why don’t you just build a web based version of your app or a hybrid app?”

My answer is perfectly sane. However, it was also perfectly biased. I never learned the other side. I was scared of native programming. No longer could I stand in advocation without understanding the other side.

I found great joy in learning how to build native iOS apps. I’m not an expert by any means, but the process of learning how to use Objective-C, and Swift has been an enjoyable experience. I was scared of learning these “native” languages. I did not think I was good enough. I thought I was just a web-developer. I realized no, I am not just a web-developer, I am a programmer. I take that back no. No, I am not a programmer, I am a creator, and I will use the right tools for the job whether it’s for the physical world, the digital world, or the logical world.

Objective-C and Swift, you’re now in my toolkit, and I will use you when I need you.

Design #

As a creator of things, I have to design. I can’t build something and allow it to look abysmal. I need to be proud of both internal and outward aesthetics. Every single piece of something I craft is designed. It’s how I call my methods in my code, or how I design a button on a sign up form, and how these all work together. I am rewarded with beauty when I create it.

Photoshop was something I got comfortable with. If I wasn’t mocking up my ideas in the browser with HTML & CSS I’d be using Photoshop. I’ve used Photoshop since about 99’ when I was learning how to create those dreaded geocities-era jpgs..

I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail. - Abraham Maslow

Enter Sketch. This is a new tool in my design toolkit. Sketch is built for the design of applications of today. It’s workflow is built around screens. By this I mean, your monitor, your laptop, your phone, and other screens. It has the ability to create against all of these form factors with ease. Photoshop is not purposed for applications or the web; Sketch is.

I encourage checking it out if design is your thing.

Macbook Air #

I tried something different when I bought my Macbook Air yesterday. I started a fresh development environment. In the past, I’d backup my old laptop and import it all again. Now that I have a Macbook Pro and a Macbook Air, I challenged myself to see what it would be like to start completely fresh with my development environment and see what I discover.

What I learned wasn’t radical, but it was relieving. I have an entirely new environment with no bloat, and it’s configured just the way I want. I actually got a lot of help from that though. Thanks to boilerplate dotfile repos.

It was a way to take all of the knowledge I amassed over the years and simplify it to a purposeful point. I knew what I needed, and didn’t want anything else.

Out with Vim, in with Atom. I’ll never become a VIM power-user. I enjoyed vim-movement commands, but I didn’t like how Vim felt sluggish or rickety. Vim-mode in Atom is more than enough for me. The simplicity of Atom just working and having an increasingly powerful ecosystem is perfect for me.

Between a fresh .dotfiles setup, and Atom, I feel like my Macbook is running on Air. Haha, see what I did there?

The other new things #

Discovering a new city, new friendships, new apartment, new toys, new perspectives, new regiments, and new ideas has simultaneously become a boon and mantra to my life.

For the first time in years I can say I am happy. In order to stay this way, I need to remind myself to always discover, and to always mix it up a bit. After all, it is human nature to go out and explore.

Try new things. Don’t get comfortable. Break your habits. Be a little crazy with just the right amount of intelligence and wisdom.

Back to my pursuit of where no man has gone before…

Resources for learning #

I highly recommend Code School for learning. It is one of the better investments I’ve made over the years. You can learn everything from iOS, Javascript, Rails, Ruby, Angular, Ember, and more. It’s really been a rewarding experience for me. I operate at a much higher level thanks to Code School.

Want more Meteor? Check out Discover Meteor. This book is absolutely amazing. The authors are keeping it up to date as Meteor is developed. This book is all you need to get your feet wet and have your epiphany.

End #

I want to repeat a quote as it applies to everything I said:

I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.

tl;dr Avoid bias. Try new things. You’ll discover better and worse ways to do things. Doing this made me happy.



Now read this

Our chance to live on, or slowly recede into history as a community.

One of the most signifying perspectives at the end of thinking back on GoGaRuco was the tone of our community becoming old news. “Why Hasn’t Ruby Won” by Sarah Mei really hit a strong note with me. We made our strides, and now we’re... Continue →