What is your “1997 Hotmail” that drives you to “Neil Armstronging” your world?
Hotmail had a whopping 9 million users back in 1997 when it was purchased for $400M by Microsoft. Not a bad turn-around of a $300,000 start up and in land-speed record time from inception to acquisition at that time. It could have been a measly $1M acquisition and would have been just as priceless to this young developer. Inspiration that profound demanded instant marriage to a career I already loved. As a fresh developer in a brand new internet world I said “I do” and have never looked back.
That tiny influential fiber is some of the toughest thread I have in me today. I often wonder why some people can be so passionate about their work, uncharted goals, and their optimistic vision of the world while others lack desire or ability to even challenge their human spirit? What drives certain people to take risks and swing for the fences every time? Does it feel as risky to them as it might appear to others looking from the outside in? Is it all a matter of perspective?
I think so many things go into creating a mentality where the view of the world is so entertaining, exciting, and full of opportunity. A place where having such a personal connection with something most people have forgotten about (Hotmail and 1997) can still be at the forefront of your senses over 15 years later. I wonder if this was my generations equivalent to say the generation where eager and impressionable youth saw man walk on the moon. Did they chase such a narrow opportunity, want to walk on the moon, and commit to a career path and life that would feed their insatiable desire for satisfaction. Neil Armstrong had challenged them in a way never seen before. Did they know that simply walking on the moon would never be good enough and maybe Mars was their vision? If the astronaut route was not achievable how did this skew what they saw as possible in their own careers and life? How innovative were they in other areas that colleagues or friends reeked of complacency, were hindered with stale vision, and long ago committed to lackluster finish line in life?
So many questions, maybe that is the difference. Is it part of it? The best way I can really visualize in words how I imagine true inspiration gives a different view of the world vs. the uninspired is rather easy. The average and uninspired individual see’s their world through a single view finder, a periscope of narrow ideology with the once in a lifetime glimpse of their “Loch Ness Monster”. The inspired risk takers have a kaleidoscope of periscopes (and the lucky ones come equipped with telescopes or night vision features) that make every aspect of their life colorful and dynamic but as focused as a single view finder in every direction. A “Loch Ness Monster” just seems like a roadside attraction to their daily commute in life!
So, go put on your kaleidoscopes and get busy finishing what you already started!
AngularJS – The Fundamentals
Continuing my series on AngularJS, truth or the “halo effect”…..
I have begun posting a series of quick and easy tutorials that will walk through the fundamentals of AngularJS on my github. I have prepared content for Steps 2 and 3 over the weekend and will get them on the repo today.
This is going to have the following segments when it is completed by this week. ( I am using it as a primer for my development team so the guys get solid AngularJS footing without spending weeks in books and outdated examples online.)
Current Section / Branches
- Angular Introduction >The Hello World demo with overview of Angular Architecture
- Controllers >Discover controllers, scope, list, events and directives with recipes. Explore built in directives, event directives, filtering and see two way binding in action with validation.
- Services >An introduction to services in Angular with recipes and demos spanning the built-in services such as $http, $q, $parse, and $filter (many others) as well as custom services.
- Routing >Routing introduction for single page applications (SPA) with recipes for handling browser history, using the $route Service, HTML5 routing and accessing parameters.
- Custom Directives >Custom Directive recipes for many objectives and common challenges such as isolating directive scope, handling events, responding to changes. Advanced recipes introduce Transclusion and how to use Require with Nested Directives as well as other advanced topics.
- Testing >Karma introduction/installation and use with Webstorm (IDE). Recipes for testing controllers, services, directives, and end to end testing as well.
There will be an application that is completed by the end of the repo. You might recall that I have been wanting to provide an AngularJS app to compare to the same app written in EmberJS and other popular MC* frameworks to determine code complexity, code reuse, performance, documentation, support, etc. If you would like to suggest an outlying framwework to contribute then please let me know.
The AngularJS repo can be located here on Github: AngularJS Fundamentals
AngularJs, truth or the “halo effect”?
Angular has taken the JavaScript MVC framework space by storm. This success is no doubt significantly fueled by the company that owns this open source repo, Google. A quick glance at github will show a large wave of fans, developers, and speculators supporting it. Outside github the presence is just as ubiquitous among certain developers. In framework discussions amongst peers, colleagues, and even recruiters you will hear the term AngularJs synonymous used as the savior of spaghetti code. It will be referenced as the top modern day framework without a blink of the eye, even if it is coming from someone who has never cracked open an IDE to get through a hello world sample. When asked about features on routing, state management, views, performance bottlenecks there is rarely a consistent answer on where, when, and how these features should be leveraged. Often looking perplexed the AngularJs evangelist refer me to the stellar documentation that Google has provided. Challenge accepted.
Google’s halo burns bright and like most influencers that benefit from a halo there will be a fan-base. Aligning with such an influencer has many positive effects. Being smart, clever, innovative, and simple has made Google a mega billion success so that transference is a great projection that can build confidence in a developer, management, and customers. Those who are drawn to the halo like a moth to a light will be the victim of inevitable “solution lock”. The vision of what a framework is or is not for an AngularJs evangelist is often measured in ways logic can’t explain and never unbiased. That said, how does AngularJs really measure up. Aside from documentation, how easy is it to construct very complex single page applications that meets performance targets in real-world use, provides code scalability using the DRY principle, and is it as designer friendly as it is programmer friendly?
Enter this scenario. A developer with expert level skills in fullstack, modern day JavaScript experience in other MVC / MVVM frameworks, NodeJs, NoSQL, Grunt, and other supporting cast inherits an AngularJs program in it’s infancy. Expectations are high and with such marquee skills and experience in this space is expected to begin code reviewing, handling merge request to the master branch from an array of developers who have been working on the project since day one, and get it production ready. Will this work? Where will the developer begin and how can the developer constructively introduce features successfully used in other frameworks to the new project? Is it feasible to refactor core philosophies that might be poorly implemented because of loose interruption that the developer knows work with ease in the don’t mention any other frameworks or the team will backlash, tar and feather you frameworks?
This scenario might sound familiar and it would appear that the successful marriage rate of developers to a halo infused framework is higher than that of the rate to their significant others. It is possible to find a happy balance, maybe slip off the Google beer glasses for a while or even let this new guy borrow them so he can see beyond the blinding halo.
This developer will need some assistance and that’s exactly what is going to happen here. So grab some energy drinks, adderalls, and some headphones as we deep dive in a crash course of AngularJs fundamentals with a not your average hello world Github repo that has a branch for each major feature set and the best way to implement it in AngularJs.
Yes, another AngualrJs tutorial of sorts but that’s not all. Much like the TodoMVC example there will be an equal counterpart in yet another popular JavaScript framework. The goal is to effectively communicate recipes that are identical in concept across these frameworks for easy transference between frameworks while learning them in incremental steps. If that’s not good enough there will be a slew of metrics so advocates of various frameworks can measure material results in areas such as lines of code to complete recipes, code complexity statistics, and any other suggestive requests from developers looking to put politics and personal beliefs aside for the solution that will most positively impact projects you work on and the companies that have hired you to be a professional.
Github repos and more posts, some from guest bloggers will begin arriving today and will throughout the week.
Happy Coding!
When in doubt, dig deeper, rise higher
Sometimes in your profession, or as a developer and even life in general things don’t go as planned. Events can happen that make you second guess your next move to the point of inefficiency. Even worse is when what might have appeared to go wrong could have been right all along. Now you run the risk of becoming cynical to the point of causing only further damage.
So how do you avoid these growing pains, stay patient, and productive while maintaining vision for ideas and how they best impact your organization?
I like to keep track of previous similiar / identical successes that might resemble a perceived derailment or defeat that has you bummed out close at hand. The more the merrier because a strong track record will help you from becoming derailed easily, maintain confidence, and rally back faster.
My go to for my recent derailment has been the last system I redesigned, architechted, and lead a team of 30 developers, designers, and QA staff from scratch to production on.
It was a system that realized this company 10,000% revenue increases within 3 years. Producing multi-million dollar revenues, supporting 10,000 concurrent users, supported 8 languages, 40 currencies, served a catalog of 140,000 digital products, and easily served up 100 million unique annual downloads. Aside from the design accolades the platform won the biggest reward was having it used and integrated by Motorola for HelloMoto, USA Today, Alltel, T-Mobile, Microsoft, Dell, Best Buy, Nokia, and many, many other Fortune 100 companies as their core means of managing mobile and digital content in their premier offerings, sites, and retail . Better, it still is today.
So, don’t lose your vision. Don’t let the now keep you from demanding the same success you expect today you’ve always had success with in the past. It is what makes you and got you here. Know that you can’t bat 1,000 and maybe it’s the current ballpark your playing in. Careers have setbacks but you should never let setbacks make you take a backseat or inflict career regression.
Stay strong, remember what got you here won’t get you where you are going. If you forget the reasons your career is what it is today then it will have no purpose or merit going forward. Own your victories, they are badges of honor and should fuel you in times of doubt until you rise again, and again, and again. It’s what winners do.
Go get out of your bummed phase, revisit your success, and start building on it again. We are waiting!!!
Fresh IDE’s because yours sucks (Part 1)
The development world is shifting philosophies and having a couple files open with a cranky Visual Studio Editor (that is probably eating up a couple Gig’s of RAM – slowing me down all around) is not going to cut it! Who has time for their code editor to tell you “its too busy”?That’s like wasting time waiting on your code to compile, if your code still has to do that stuff.
This is a familiar alert for ANY .NET developers that use ANY version of Visual Studio. I say this with confidence as I have not seen a release of Visual Studio in ten years that was efficient (IntelliSense was a nice add in that span). This post is NOT about where Visual Studio, or others, are doing things wrong though. Instead, let’s chat about a few fresh IDE’s that share some nice usability, collaboration, integration and likability traits.
Simplicity Wins Zen
Starting as a professional software developer pre Y2K makes me partial to notepad. Dualcore or Quadcore wasn’t an option for beefy IDE’s then. Learning an API and just thrashing code like your responding to an email is a great feeling and your IDE should not get in the way of that zen. That said, let’s outline the IDE’s that turn you into the Phil Jackson of zen development (no Yoga instructor required).
What’s Fresh?
You don’t have to be a hipster to branch out and try some cutting edge stuff. Like hipsters, cutting edge technology is not going anywhere. Here are some of the features you should be asking your IDE to do.
- Easy to navigate and use (bulky is obsolete)
- Small Footprint. You shouldn’t have to have a dev machine just for your editor to run efficiently. This is a waste of money as well as a quick way to make sure you are only effective when you are at that machine or god forbid remoted in.
- Cross Platform availability. Yeah, I use a MacBook but I have to use a windows box too. Isn’t it nice when your IDE works the same way no matter where it runs? Cloud based IDE’s are a great way to accomplish this.
- Cross Language support. If you are having to work on 5 or 6 different concurrent programming languages you should not have to become a pro at 5-6 vendor supportive IDE’s.
- Collaborative. This can be spun a couple ways but this is where integration with popular mediums or tools like Github are imperative.
- Brain Dead Simple. Show people how smart you are by spending your brain cycles writing bad ass code at break-neck speeds rather than becoming the office IDE jockey. Your career is in danger if you know more about an IDE then you do the ideas it’s supposed to be helping you create.
- Mobile. Yup, no reason you shouldn’t be able to quickly update a bug, do a code review, or whatever you need to do from your Samsung S4. If your productive while your airplane is about to depart or ducking out of your kids recital, etc then you will blow your customers minds.
There are better ways
There are far to many IDE’s out in the wild to try and cover them all in detail. In no particular order we are going to take an in depth look at the following options that solve a lot of issues and increase productivity.
Plagiarism Transcends Written Works – The Assault on Original Idea
Is rampant online, in open source communities, and even in workplaces. Since plagiarism is stealing one’s work how would you define the same approach to concepts or principles that others represent as their own?
Sometimes professionals don’t realize they are after being seeded with ideas and concepts as training because they lack the fundamentals they needed to materialize the direction given. Once the seed sets, pay homage.
I also don’t like the idea of doing Google image searches to see proposed solutions represented as their own with a few slight modifications. Finding someone who has actually built out UML stuff versus snagging someone else’s off an image search is rare. If your cutting corners here then you didn’t conceive the system your project needs, just one that might resemble it. If you didn’t formulate an idea or plan then you haven’t fleshed it out.
In the open source community developers are “cleanboxing” code and representing it as theirs. This builds on the concept of borrowing solution designs. SMH
The idea of original thought is seriously crumbling before our eyes.
Another Google Js Framework?
Oh well, at least Angular Developers have to deal with multiple frameworks now, Polymer?!
EmberJs will still just be EmberJs but with support for web. Yehuda breaks it down in a GIST. controls (https://gist.github.com/wycats/9144666b0c606d1838be)
But Google developers who tout Angular is superb might start to see what they are really competing against (or getting in bed with the new Microsoft of JavaScript aka la googla) will undoubtedly take an exponential amount of satellite frameworks to compile a solution that Ember and Ember Data already figured out.
Co Angular Creator talks about how Angular 2.0 will be a evolving constantly and my question is why? Don’t they have a road map that already showed the gaps they left or they still just trying to appease masses of developers with linear solutions to rely on more and more Google API’s. (https://groups.google.com/d/msg/polymer-dev/4RSYaKmbtEk/uYnY3900wpIJ)
Sheeple … Posers … arghh, its Monday.
Advanced JavaScript with EmberJs
At the top of the JavaScript MVC world there are a few heavy hitters, Ember is one of the most comprehensive frameworks available and is about to be released for production use (currently at RC3).
I will be presenting on Ember for the West Texas Ember Meetup and the Lubbock Software Developers group this Thursday evening from 6:30-8PM. The keys to Ember are in their philosophy of conformity over configuration and embracing DRY (don’t repeat yourself) practices for building ambitious applications. I will show you how, the tools to use, and even some bonus round material like Bower and Grunt.
1. Quick Ember history
2. The JavaScript MVC Matrix
3. Ember Ecosystem: Resources, Projects, Tools, and People that make it up
3. Building Controls, Widgets, Snippets, and complete Single Page Apps (SPA)… now
– Quick API overview
– Code Walk real-world implementations of:
* Application and Namespace Structuring
* Client Side Routing / Router
* State Management with State’s and StateManager
* Model Data (object models, JSON aggregation, enumerable objects)
* Views (layouts, basic, collectionviews, containers)
* Controllers (arraycontrollers, controllers, proxies)
* Events (touch, any event hooks, dragNdrop, etc, observers, instrumentation)
* Mixins (yeah, the sprinkles on your tasty treat – validation, CSS3 effects, logging)
4. The Application We Just Built (github, preso location)
5. BONUS ROUND:
– GruntJs (lint, minify, watch, live-reload your code in real time)
– Bower (if you like bootstrap twitter has a package mgmt platform too ya know)
– SocketStream (node,web-sockets, middle-ware via express/connect etc, redis, stylus)
AngularJs vs EmberJs vs BackboneJs
There is much to do out in the wild about which javascript MVC frameworks are the best. I see everything as an opinion and you all know what they say about opinions…..
So my question is, where is the proof? To say it takes less lines of code to do something in Angular is easily answered in Ember by putting all your properties in one line of code. “Splitting hairs, we are.” – Yoda.
There has to be some benchmarks out there that actually show the difference between Angular and Ember in a matter of fact, not opinion. So, where does this exist and if it doesn’t then maybe it is time to profile a full and complete Angular Application against the same Ember Application.
Ember has their performance benchmarks against Backbone that nullifies that question, so on to the next….