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

  1. Angular Introduction >The Hello World demo with overview of Angular Architecture
  2. 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.
  3. 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.
  4. Routing >Routing introduction for single page applications (SPA) with recipes for handling browser history, using the $route Service, HTML5 routing and accessing parameters.
  5. 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.
  6. 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.

Image

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.

  1. Easy to navigate and use (bulky is obsolete)
  2. 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.
  3. 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.
  4. 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.
  5. Collaborative.  This can be spun a couple ways but this is where integration with popular mediums or tools like Github are imperative.
  6. 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.
  7. 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.

Read More…

What is in your hacker toolbox?

Are you an experienced hacker?  Maybe you are a just a junior developer coming into the world or a senior tech guru who has earned their stripes.

**************************************************************************
NOTE!   These are very powerful tools and I would be amiss of me to not WARN YOU that these tools are powerful enough to get you in some serious trouble (at the office with the network and security guys or law enforcement agencies if used nefariously) BE CAREFUL and do your research because in the world of security it is better to ask for permission then it is to ask for forgiveness.
**************************************************************************

No matter what flavor of techie you are these are some of the tools you need to be aware of and use often to debug, test, and exploit your own application stacks so you can understand what is happening with your development from packet to presentation.

If you are stuck on a windows machine then your options here will not be as rich as a Linux or Mac system.  Consider establishing a VM or grabbing a commodity box and get a good Linux install on it for just this initiative.

  1. WIRESHARK
    The best open source, free, and multi-platform network protocol analyzer.  Make sure you keep this app up to date and squash exploits against wireshark.

    Download –> http://www.wireshark.org/

  2. METASPLOIT
    A complete platform, open source BUT not all versions are free, that you can use to develop, test, and actually execute exploits.  Metasploit remains on the leading/bleeding edge of mainstream platforms for exploits.

    Download –> http://www.metasploit.com/

  3. AIRCRACK
    Aircrack-ng is an 802.11 WEP and WPA-PSK keys cracking program that can recover keys once enough data packets have been captured. It implements the standard FMS attack along with some optimizations like KoreK attacks, as well as the all-new PTW attack, thus making the attack much faster compared to other WEP cracking tools.

    Download –> http://www.aircrack-ng.org/

  4. CAIN AND ABLE
    Cain & Abel is a password recovery tool for Microsoft Operating Systems. It allows easy recovery of various kind of passwords by sniffing the network, cracking encrypted passwords using Dictionary, Brute-Force and Cryptanalysis attacks, recording VoIP conversations, decoding scrambled passwords, recovering wireless network keys, revealing password boxes, uncovering cached passwords and analyzing routing protocols. The program does not exploit any software vulnerabilities or bugs that could not be fixed with little effort. It covers some security aspects/weakness present in protocol’s standards, authentication methods and caching mechanisms; its main purpose is the simplified recovery of passwords and credentials from various sources, however it also ships some “non standard” utilities for Microsoft Windows users.

    Download –> http://www.oxid.it/cain.html

  5. NETCAT
    Netcat is often referred to as a “Swiss Army Knife for TCP/IP”. Its list of features includes port scanning, transferring files, and port listening, and it can be used as a backdoor.  Thank you Hobbit!This application is almost 20 years old folks.  Solid.Download –>  http://sourceforge.net/projects/nc110/files/

  6. SNORT
    Snort is an open source network intrusion prevention and detection system.  Combining the benefits of signature, protocol, and anomaly-based inspection, Snort is the most widely deployed IDS/IPS technology worldwide. With millions of downloads and nearly 400,000 registered users, Snort has become the de facto standard for IPS.

    Download –>  http://www.snort.org/

  7. NESSUS
    Nessus, a lightweight security monitoring solution, provides customers with targeted email notifications, remediation recommendations, increased intelligence, and expanded platform support and integration.It is not free and is more focused on commercializing the software than churning out some OSS solutions.  This is sliding off my list as more open source competition get’s stronger.Download –>  http://www.tenable.com/products/nessus/select-your-operating-system
  8. JOHN THE RIPPER
    John the Ripper is a fast password cracker for UNIX/Linux and Mac OS X.. Its primary purpose is to detect weak Unix passwords, though it supports hashes for many other platforms as well. There is an official free version, a community-enhanced version (with many contributed patches but not as much quality assurance), and an inexpensive pro version.

    Download –> http://www.openwall.com/john/

  9. SSH / OpenSSH / PuTTY
    When it is time to get really get down and dirty this will be your means.  SSH (Secure Shell) is the now ubiquitous program for logging into or executing commands on a remote machine. It provides secure encrypted communications between two untrusted hosts over an insecure network, replacing the hideously insecure telnet/rlogin/rsh alternatives.

    OpenSSH Downloads –> http://www.openssh.com/
    PuTTY Downloads –> http://www.chiark.greenend.org.uk/~sgtatham/putty/
    WinSCP Downloads –> http://winscp.net/eng/index.php
    SSH Downloads –> http://www.ssh.com/

  10. BURP SUITE
    At number 10 I would like to introduce my new favorite and used frequently, Burp Suite!  Burp Suite is an integrated platform for attacking web applications. It contains a variety of tools with numerous interfaces between them designed to facilitate and speed up the process of attacking an application. All of the tools share the same framework for handling and displaying HTTP messages, persistence, authentication, proxies, logging, alerting and extensibility. There is a limited free version and also Burp Suite Professional ($299 per user per year).

    Downloads –>  http://portswigger.net/burp/

Other notables that are new to the scene and gaining traction.

* W3AF – this guy is a like a web focused Metasploit.  W3af is an extremely popular, powerful, and flexible framework for finding and exploiting web application vulnerabilities. It is easy to use and extend and features dozens of web assessment and exploitation plugins.

Download –>  http://w3af.org/download

* THC HYDRA –  When you need to brute force crack a remote authentication service, Hydra is often the tool of choice.

Download –>  http://www.thc.org/thc-hydra/

I hope you will find real value in using these tools to educate yourself, experiment with security of your applications, track down and resolve network performance issues in the application at the lowest level, and bring a more secure, intelligent application to your marketplace.

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….